Проверка ввода данных в arduino

У меня есть следующий код:

#include <Servo.h>
Servo myservo;  
char x;
void setup(){
  Serial.begin(9600);
  myservo.attach(7);
  Serial.println("enter a letter: ");
  Serial.println("a = 0 grade");
  Serial.println("b = 90 grade");
  Serial.println("c = 180 grade"); 
}

void loop(){

  while(Serial.available()){
  x = Serial.read();
  }
  switch(x){
    case 'a':
    myservo.write(0); 
    Serial.println("The entered angle is 0");
    delay(5); 
    break;
    case 'b': 
    myservo.write(90); 
    Serial.println("The entered angle is 90");
    delay(5); 
    break;
    case 'c': 
    myservo.write(180); 
    Serial.println("The entered angle is 180");
    delay(5); 
    break;
  }
  
}

Мне нужно, чтобы, когда пользователь вводит A, B или C, он выполнял оператор "switch case" только один раз, а затем запрашивал снова. В случае ввода буквы, которая не соответствует, скажите, что буква неправильная, и снова покажите параметры для новой записи. Есть какие-нибудь идеи?

, 👍-1

Обсуждение

сначала переместите блок switch (x) { в блок while(Serial.available()) {, @Juraj

Если вы хотите, чтобы параметры снова отображались в последовательном режиме, вам нужно поместить выходные параметры в свой код в loop (). setup () выполняется только один раз при запуске программы, @chrisl