17.05.2016, 12:00
Hallo Community,
ich arbeite mit Labview 2013 und einem Arduino Uno. Mein Ziel ist es, Wechselsignale an den analogen Eingängen bei Frequenzen um ca 1kHz aufzunehmen und mir in LabView anzeigen zu lassen.
Mein Programm funktioniert soweit auch derzeit für den ersten Eingang A0 des Arduinos.
Angesteuert bzw. ausgewählt wird der Eingang in dem C Programm dazu. Im ADMUX Register kann dieser mit den letzten 4 Bits festztgesetzt warden.
Nun möchte ich, dass der Arduino nacheinander alle 6 analogen Eingänge liest und jeweils in einem separaten Graph in Labview ausgibt.
Dafür bräuchte ich bei dir Umsetzung eure Hilfe, da ich ein Neueinasteiger in Sachen Labview und Programmierung bin :/
Danke schonmal im Voraus !
Das Vi ist im Anhang, hier der dazugehörige IDE Code:
ich arbeite mit Labview 2013 und einem Arduino Uno. Mein Ziel ist es, Wechselsignale an den analogen Eingängen bei Frequenzen um ca 1kHz aufzunehmen und mir in LabView anzeigen zu lassen.
Mein Programm funktioniert soweit auch derzeit für den ersten Eingang A0 des Arduinos.
Angesteuert bzw. ausgewählt wird der Eingang in dem C Programm dazu. Im ADMUX Register kann dieser mit den letzten 4 Bits festztgesetzt warden.
Nun möchte ich, dass der Arduino nacheinander alle 6 analogen Eingänge liest und jeweils in einem separaten Graph in Labview ausgibt.
Dafür bräuchte ich bei dir Umsetzung eure Hilfe, da ich ein Neueinasteiger in Sachen Labview und Programmierung bin :/
Danke schonmal im Voraus !
Das Vi ist im Anhang, hier der dazugehörige IDE Code:
Code:
int mask=B01000000;//Maskierung
char data[1000];// Datenpacket von 1000 byte bzw Datenwerten wird festgesetzt
int start;
void setup()
{
Serial.begin(250000);//Baudrate 250000 = 31.25KByte
ADMUX=B01100000; //Input A0 laut Registervorgabe
ADCSRA=B11000011;// 8 als divisions faktor zwischen Systemtakt und Input Signal -> Prescale
ADCSRB=0x00;//free running modus -> schnell !
}
void loop()
{
if(Serial.available()!=0)// Wenn Daten ankommen....
{
start=Serial.read(); //...beginne zu lesen
ADCSRA=(ADCSRA&B11111000)|(start&B00000111);//"Lese"-Geschwindigkeit
for(int i=0;i<1000;i++)//Daten aufnehmen und in Array von 1000 Werten (wie festgesetzt) speichern
{
startconversion(); // Starte Konvertierungsvorgang bzgl festgelegter Maskierung
data[i]=sammeln(); // Daten werden im Array gesammelt über die Funktion sammeln()
Serial.print(data[i]); // Wenn alle Daten aufgenommen sind, werden diese ausgegeben
}
}
}
void startconversion()// Funktion für die Konvertierung
{
ADCSRA=ADCSRA|mask;// starte conversion
}
int sammeln()// Funktion für das Sammeln der Daten
{
while((ADCSRA&mask)==mask)//dauerhaftes sammeln von Daten
{
}
return ADCH; // Auf dem Arduino vorhandenes Speicher-Register der ADC Daten, welche nun mit return abgerufen werden
}