Я пытался непрерывно печатать вывод ШИМ на выводе 3 внутри условия оператора switch, но он печатает только один раз.Могу ли я постоянно печатать его на последовательном мониторе, пока он не встретит второе условие?или использовать цикл while?или если еще?
Вот мой код У меня также есть код с аналогичной функцией, но он использует, если еще, но все же он печатает только один раз
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
int InitVal = Serial.parseInt();
int red = Serial.parseInt();
switch(InitVal) {
case 1:
if (Serial.read() == '\n') {
analogWrite(redPin, red);
Serial.println(red);
Serial.write(red);
}
break;
case 0:
analogWrite(redPin, 0);
Serial.println(0);
Serial.write(0);
break;
}
}
}
Я планирую-фазировать это с графическим интерфейсом.GUI отправляет ascii в arduino, читает, а затем отправляет выходное значение в GUI.Пример
1.GUI отправляет [1,123]: 1 = точка триггера для оператора switch;123 = значение ШИМ.
Arduino получает инструкции и выводит значение pwm GUI получает значение pwm и отображает его
Пересмотренный код: Застрял в последнем цикле while, возможно, я мог бы использовать многопоточностьфункция в Arduino, чтобы последний цикл while был удовлетворен / недоволен?
void loop() {
int InitVal = 0;
// if there's any serial available, read it:
while (Serial.available() > 0) {
int InitVal = Serial.parseInt();
int red = Serial.parseInt();
switch(InitVal) {
case 1:
if (Serial.read() == '\n') {
InitVal = 1;
//analogWrite(redPin, red);
//Serial.println(red);
// Serial.write(red);
}
break;
case 0:
InitVal = 0;
//analogWrite(redPin, 0);
//Serial.println(0);
//Serial.write(0);
break;
}
if (InitVal) /* when enabled, blink leds */ {
delay(20);
while (InitVal == 1) /* loop forever */{
Serial.println(red);
Serial.write(red);
delay(20);
}
}
}
}