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);
}
本文来自博客园,作者:Alaso_shuang,转载请注明原文链接:https://www.cnblogs.com/Alaso687/p/18863269

浙公网安备 33010602011771号