Я пытаюсь заставить светодиод мигать с частотой, указанной в цифровом контроле в 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 (блок-схема):
Arduino не является C! – Olaf
Похоже, что ваш код Arduino ожидает, что строка временной задержки будет завершена двоеточием, но ваш код LabVIEW не отправит двоеточие после цифр номера. Кроме того, код LabVIEW будет продолжать передавать число каждые 10 мс, поэтому, если (скажем) числовой элемент управления установлен на 1000, тогда поток данных будет выглядеть как «10001000100010001000» и т. Д. Вы хотите добавить конечный символ в string перед тем, как передать его в VISA Write, и, возможно, только отправьте это значение при нажатии кнопки или при изменении значения (например, с помощью события изменения значения элемента управления). – nekomatic