пытаясь заставить Arduino мигать номера кода Морзе - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь сделать эскиз Arduino, который принимает число от 0 до 9 из последовательного ввода и мигает светом для этого числа в азбуке Морзе.Если вы не знаете код Моорса для чисел, то это очень просто, вот картинка morse code после того, как число мигнет, светодиод должен мигать в течение 5 секунд, а затем программа должна дождаться ввода другого числа.То, что делает программа, ждет ввода, а затем постоянно мигает.оно даже не доходило до точки мигания в течение 5 секунд.Вот мой код:

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Enter a number to be blinked in moose code");

}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()>0){
   int num=Serial.read();
   delay(2);
   if(num>=0){
      if(num<6){
        for(int i=0;i<num;i++){
          delay(300);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(300);                       
          digitalWrite(LED_BUILTIN, LOW);   
        }
        for(int i=num; i<5; i++){
          delay(1200);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(1200);                       
          digitalWrite(LED_BUILTIN, LOW);
        }
      }
      else{
        for(int i=0; i<(num-5); i++){
          delay(1200);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(1200);                       
          digitalWrite(LED_BUILTIN, LOW);
        }
        for(int i=num; i<10; i++){
          delay(300);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(300);                       
          digitalWrite(LED_BUILTIN, LOW);   
        }
      }
      digitalWrite(LED_BUILTIN, HIGH);  
      delay(5000);
      digitalWrite(LED_BUILTIN, LOW); 
   }
  }
}

1 Ответ

0 голосов
/ 25 сентября 2019

Я исправил свой код, была проблема с тем, как я читал данные.

long num=0;
void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  Serial.print("Enter a number to be blinked in moose code");

}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available()==0){}
  if(Serial.available()>0){
   num=Serial.parseInt();
   delay(2);
   if(num>=0){
      if(num<6){
        for(int i=0;i<num;i++){
          delay(400);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(400);                       
          digitalWrite(LED_BUILTIN, LOW);   
        }
        for(int i=num; i<6; i++){
          delay(400);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(2000);                       
          digitalWrite(LED_BUILTIN, LOW);
        }
      }
      else{
        for(int i=0; i<(num-5); i++){
          delay(400);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(2000);                       
          digitalWrite(LED_BUILTIN, LOW);
        }
        for(int i=num; i<10; i++){
          delay(400);
          digitalWrite(LED_BUILTIN, HIGH);  
          delay(400);                       
          digitalWrite(LED_BUILTIN, LOW);   
        }
      }
      digitalWrite(LED_BUILTIN, HIGH);  
      delay(5000);
      digitalWrite(LED_BUILTIN, LOW); 
   }
  }
}
...