J'essaye de faire clignoter une led à une fréquence donnée dans un contrôle numérique dans Labview. J'ai connecté Arduino à Labview en utilisant COM4. Ithis est le code écrit dans l'IDE Arduino:Led clignotant à une fréquence donnée - Arduino et Labview
char command;
String string;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
}
void loop()
{
if (Serial.available() > 0)
{string = "";}
while(Serial.available() > 0)
{
command = ((byte)Serial.read());
if(command == ':')
{
break;
}
else
{
string += command;
}
delay(1);
}
if(string.toInt() > 0)
{
TempOn();
TempOff();
}
}
void TempOn()
{
long y= string.toInt();
digitalWrite(13, HIGH);
delay(y);
}
void TempOff()
{
long y= string.toInt();
digitalWrite(13, LOW);
delay(y);
}
}
Si je tente de faire clignoter pour une certaine valeur, comme 1000 (j'écris le code suivant en bas), il fonctionne parfaitement pour cette valeur !
if(string == "1000")
{
TempOn();
TempOff();
}
Je ne comprends pas pourquoi il ne fonctionnera pas pour un cas général ...
Ceci est le code Labview (Schéma):
Arduino n'est pas C! – Olaf
Il semble que votre code Arduino attend la fin de la chaîne de temporisation avec deux points, mais votre code LabVIEW n'envoie pas deux-points après les chiffres du nombre. De plus, le code LabVIEW va continuer à transmettre le numéro toutes les 10 ms, donc si (disons) le contrôle numérique est réglé sur 1000, alors le flux de données ressemblera à '10001000100010001000', etc. Vous voulez ajouter le caractère de terminaison au chaîne avant de la transmettre à VISA Write, et probablement d'envoyer la valeur uniquement lorsque vous cliquez sur un bouton ou lorsque la valeur change (par exemple en utilisant l'événement Value Change du contrôle). – nekomatic