arduino基础

串口通信实例——闪几次灯

#define LED 13
int n;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    char s = Serial.read();//用来接收串口缓存数据,一次一字节(8bit)
    if(s >= '0' && s <= '9')
    {
        n = s - '0';
    }else 
    {
      Serial.println("Write again");
    }
  }
  if(n > 0)
  {
      n--;
      digitalWrite(LED,HIGH);
      delay(300);
      digitalWrite(LED,LOW);
      delay(300);
  }
  // put your main code here, to run repeatedly:
  
}

优化版本:

#define LED 13
int n;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    char s = Serial.read();//用来接收串口缓存数据,一次一字节(8bit)
    if(s >= '0' && s <= '9')
    {
        n = s - '0';
    }else 
    {
      Serial.println("Write again");
    }
  }
  // if(n > 0)
  // {
  //     n--;
  //     digitalWrite(LED,HIGH);
  //     delay(300);
  //     digitalWrite(LED,LOW);
  //     delay(300);
  // }
  while(n>0)
  {
    n--;
    digitalWrite(LED,HIGH);
    delay(300);
    digitalWrite(LED,LOW);
    delay(300);
  }
  // put your main code here, to run repeatedly:
  
}

第二版优化:

#define LED 13
int n;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    //char s = Serial.read();//用来接收串口缓存数据,一次一字节(8bit)
    n = Serial.parseInt();
  //   if(s >= '0' && s <= '9')
  //   {
  //       n = s - '0';
  //   }else 
  //   {
  //     Serial.println("Write again");
  //   }
  // }
  // if(n > 0)
  // {
  //     n--;
  //     digitalWrite(LED,HIGH);
  //     delay(300);
  //     digitalWrite(LED,LOW);
  //     delay(300);
  // }
  while(n>0)
  {
    n--;
    digitalWrite(LED,HIGH);
    delay(300);
    digitalWrite(LED,LOW);
    delay(300);
  }
  Serial.println("Finished");
  }
}


电灯版摩斯密码(SOS)

/*
创作:摩斯密码(点灯版)
SOS求救信号
author:Alaso_shuang
*/
#define LED 13
void setup() 
{
  // put your setup code here, to run once:
    pinMode(LED,OUTPUT);
    Serial.begin(9600);
}

void loop() 
{
  int t = 300;
  // S (三个点)需快一点的速度
    for(int i = 1;i <= 3;i++)
    {
        digitalWrite(LED,HIGH);
        delay(t);
        digitalWrite(LED,LOW);
        delay(t);
    }
    delay(4000);
    //O 三个横线(是S的两倍速度)
    for(int j = 1;j <= 3;j++)
    {
      digitalWrite(LED,HIGH);
      delay(t * 2);
      digitalWrite(LED,LOW);
      delay(t * 2);
    }
    delay(4000);
    //S (继续三个点)
    for(int z = 1;z <= 3;z++)
    {
      digitalWrite(LED,HIGH);
      delay(t);
      digitalWrite(LED,LOW);
      delay(t);
    }
    delay(4000);
}

posted @ 2025-05-06 22:26  Alaso_shuang  阅读(26)  评论(0)    收藏  举报
2 3
4