2015-07-28 4 views
0

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):

enter image description here

+0

Arduino n'est pas C! – Olaf

+2

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

Répondre

0

Avez vous avez essayé d'utiliser le moniteur série combiné avec Serial.print (""); vérifier que tout vient par le port série? Dans LabVIEW, vous pouvez essayer d'ajouter une fin de ligne contast ("\ r \ n") à votre numérique, car certains périphériques série ont besoin de savoir quand une commande est terminée.