2015-07-28 3 views
0

Я пытаюсь заставить светодиод мигать с частотой, указанной в цифровом контроле в Labview. Я подключил Arduino к Labview с помощью COM4. IThis это код, написанный в Arduino IDE:Светодиодный мигание на заданной частоте - Arduino и 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); 
    } 
} 

Если я пытаюсь сделать его мигать в течение определенного значения, например 1000 (я пишу следующий код из ниже), он отлично работает для этого значения !

if(string == "1000") 
{ 
    TempOn(); 
    TempOff(); 
} 

Я не понимаю, почему он не будет работать для общего случая ...

Это код в Labview (блок-схема):

enter image description here

+0

Arduino не является C! – Olaf

+2

Похоже, что ваш код Arduino ожидает, что строка временной задержки будет завершена двоеточием, но ваш код LabVIEW не отправит двоеточие после цифр номера. Кроме того, код LabVIEW будет продолжать передавать число каждые 10 мс, поэтому, если (скажем) числовой элемент управления установлен на 1000, тогда поток данных будет выглядеть как «10001000100010001000» и т. Д. Вы хотите добавить конечный символ в string перед тем, как передать его в VISA Write, и, возможно, только отправьте это значение при нажатии кнопки или при изменении значения (например, с помощью события изменения значения элемента управления). – nekomatic

ответ

0

Есть вы попытались использовать последовательный монитор в сочетании с Serial.print (""); проверить, что что-то происходит через последовательный порт?

В LabVIEW вы можете попробовать добавить конец строки contast ("\ r \ n") к вашему числовому, поскольку некоторые последовательные устройства нуждаются в этом, чтобы знать, когда команда завершена.