Ardunio入门实验代码集合

  1. 实现串口输出温度数据
void setup() {
  Serial.begin(115200);         //使用115200速率进行串口通讯
}
void loop() {
  int n = analogRead(A0);    //读取A0口的电压值
  //使用浮点数存储温度数据,温度数据由电压值换算得到,温度范围0~100度。
  float vol = n * (5.0 / 1023.0 * 100);   
  Serial.println(vol);                   //串口输出温度数据
  delay(1000);                           //等待1秒,控制刷新速度
}
  1. 三色灯
#define led_red 9     //Pin 9 连接上 led的红色引脚
#define led_green 10
#define led_blue 11
 
 
void setup() {
  pinMode(led_red,OUTPUT);  //设置为输出模式
  pinMode(led_green,OUTPUT);
  pinMode(led_blue,OUTPUT);
  
  analogWrite(led_red,255);     //首先,先把所有的灯都关闭
  analogWrite(led_green,255);   //可以随意设置开启关闭哪些灯,搭配出不同组合有不同颜色
  analogWrite(led_blue,255);
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
  for(int i=200;i>0;i--)      //渐亮
  {
    analogWrite(led_red,i);     //慢慢开启红色和绿色会搭配出黄色
    analogWrite(led_green,i);  
    analogWrite(led_blue,255);  
    delay(10);
  }
 
  for(int i=0;i<200;i++)   //渐灭
  {
    analogWrite(led_red,255);    //慢慢关闭绿色和蓝色会搭配出较鲜艳的蓝色
    analogWrite(led_green,i);
    analogWrite(led_blue,i);
    delay(10);
  }
}
  1. SOS求救信号灯
int SOS=3;
void setup() {
  // put your setup code here, to run once:
  pinMode (SOS, OUTPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
  duanshan();
  delay(300);
  changshan();
  delay(300);
  duanshan();
  delay(300);
}
void duanshan()
{
  for (int i = 1; i <= 3; i++) {
    digitalWrite(SOS, HIGH);
    delay(150);
    digitalWrite(SOS, LOW);
    delay(100);
  }
}
void changshan()
{
  for (int i = 1; i <= 3; i++) {
    digitalWrite(SOS, HIGH);
    delay(400);
    digitalWrite(SOS, LOW);
    delay(100);
  }
}
  1. 红绿灯
void setup() 
{                
  //定义microduino数字D3~D10脚为输出   
  for(int i=11;i<14;i++)
  pinMode(i, OUTPUT);     
}
//11红灯 12黄灯 13绿灯
void loop() 
{
  digitalWrite(11, HIGH);  
  digitalWrite(12, LOW); 
  digitalWrite(13, LOW);  
  delay(5000);//红灯亮五秒
  
  digitalWrite(11, HIGH);  
  digitalWrite(12, HIGH); 
  digitalWrite(13, LOW);  
  delay(1000);//红黄亮一秒;

  digitalWrite(11, LOW);  
  digitalWrite(12, LOW); 
  digitalWrite(13, HIGH);  
  delay(5000);//绿灯亮五秒;

  digitalWrite(11, LOW);  
  digitalWrite(12, HIGH); 
  digitalWrite(13, HIGH);  
  delay(1000);//绿黄一秒;

}
//红灯五秒,红黄一秒;绿灯五秒,绿黄一秒。
  1. 光敏电阻
int a =800;        // 阈值。根据实际情况进行调整。使得光线强时小于此值,弱时大于此值。

void setup ()
{
  Serial.begin(115200);
  pinMode(13,OUTPUT);
}
void loop()
{
  int n = analogRead(A0); //读取模拟口A0数值
  Serial.println(n);
  if (n>= a )            //对光线强度进行判断,小于预设值关闭LED,否则就点亮
  {
    digitalWrite(13,HIGH);
  }
  else
  {
    digitalWrite(13,LOW);
  }
  delay(100);
}
  1. 手指开关,手指按键点亮灯
void setup()
{
  Serial.begin(115200);
  pinMode(13,OUTPUT);  
}
void loop()
{
  int n=analogRead(A0);   //读取模拟口数据        
  if(n>0)     //有电压反应就运行以下程序
    digitalWrite(13,HIGH); //点亮led
  else
    digitalWrite(13,LOW); //熄灭led
  Serial.println(n);//串口监视
  delay(100);//延时,控制刷新速率。
}
  1. 过红绿灯,按下开关灯亮,再按一遍灯灭。
const int buttonPin = 3;     // 定义按键输入引脚
int buttonState = 0;        //初始化按键值
int led=0;
void setup() {
  for (int i = 8; i < 14; i++) {
    pinMode(i, OUTPUT); //配置引脚为输出模式
  }
  pinMode(buttonPin, INPUT); //设置按键引脚为输入状态
}

void loop() {
  buttonState = digitalRead(buttonPin);//从指定的数字引脚读取数值,是高还是低。
  if (buttonState == HIGH) {
    delay(200);
    led = !led;//当按下开关之后 将LED置成1
  }
  if(led==1)
  {
      for (int i = 8; i < 14; i++) 
          digitalWrite(i, HIGH); //点亮
  }
  //再按一遍开关的话, LED又会重新变成0
  else
  {
         for (int i = 8; i < 14; i++) 
           digitalWrite(i, LOW); //关闭
  }
}
  1. 按钮控制亮度
int n=0;
void setup ()
{
  pinMode(2,INPUT);
  pinMode(7,INPUT_PULLUP);  //设置为内部上拉
  pinMode(11,OUTPUT);    //该端口需要选择有3、5、6、9、10、11数字口才能PWM控制
}
void loop()
{
  int up =digitalRead(2);         //读取2号口的状态
  int down = digitalRead(7);      //读取7号口的状态   
  if (up==HIGH)                    
  { 
    n=n+5;                         
    if (n>=255) {
      n=255;
    }            //限定最大值为255   
    analogWrite(11,n);   //使用PWM控制11号口输出,变量n的取值范围是0-255 
    delay (300);
  }
  if (down==LOW)             
  {
    n=n-5;
    if (n<=0) {
      n=0;
    }
    analogWrite(11,n); //使用PWM控制11号口输出,变量n的取值范围是0-255 
    delay (300);
  }
}
  1. 呼吸灯
/*
 * Breath
 * 通过模拟输出PWM控制LED灯,改变其亮度,达到呼吸效果
 */
int ledPin = 3;
void setup ()
{
  pinMode(ledPin,OUTPUT);
}

void loop()
{
  for (int a=0; a<=255;a++)                //循环语句,控制PWM亮度的增加
  {
    analogWrite(ledPin,a);
    delay(10);                             //当前亮度级别维持的时间,单位毫秒            
  }
  for (int a=255; a>=0;a--)             //循环语句,控制PWM亮度减小
  {
    analogWrite(ledPin,a);
    delay(10);                             //当前亮度的维持的时间,单位毫秒  
  }
}
const int buttonPin = 2;     // 定义按键输入引脚
const int ledPin =  11;     //定义led引脚
int buttonState = 0;        //初始化按键值
void setup() {
  pinMode(ledPin, OUTPUT);    //设置led引脚为输出状态   
  pinMode(buttonPin, INPUT); //设置按键引脚为输入状态    
}
void loop(){
  buttonState = digitalRead(buttonPin);//从指定的数字引脚读取数值,是高还是低。
  if (buttonState == HIGH) {     
    digitalWrite(ledPin, HIGH); //如果按键信号是高,则led点亮(led接法阳极接控制脚,阴极接GND)
  } 
  else {
    digitalWrite(ledPin, LOW); //否则熄灭
  }
}
  1. 蜂鸣器演奏许嵩的《大千世界》的一句话
#define  D0 -1
#define  D1 262
#define  D2 293
#define  D3 329
#define  D4 349
#define  D5 392
#define  D6 440
#define  D7 494

#define  DL1 147
#define  DL2 165
#define  DL3 175
#define  DL4 196
#define  DL5 221
#define  DL6 248
#define  DL7 278

#define  DH1 523
#define  DH2 586
#define  DH3 658
#define  DH4 697
#define  DH5 783
#define  DH6 879
#define  DH7 987

//把每个音符和频率值对应起来
//NOTE_D+数字表示中音,NOTE_DH+数字表示高音,NOTE_DL+数字表示低音
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
 
//用英文对应拍子
int tune[] = 
{
   D0, DH1, DH2, DH3, DH3, DH1, DH3, DH2, DH3, DH2, DH5, DH7,
   DH1, DH1, DH1, D6, DH1, D7, DH1, D3, D5, D3,
};//这部分是整首曲子的音符部分,用了一个序列定义为tune,整数

 float duration[]=
{
   0.625,0.5,1,//你是
   0.5,1,//大千
   0.5,1,//世界
   0.625,0.5,1, 2,2, 0.5,0.625,1,0.5 1, 0.625,0.5,1,
};//这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)

int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin=9;//蜂鸣器的pin
 
void setup()
{
  pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
  length = sizeof(tune)/sizeof(tune[0]);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符
}
 
void loop()
{
  for(int x=0;x<length;x++)
  {
    tone(tonePin,tune[x]);//此函数依次播放tune序列里的数组,即每个音符
   delay(400*duration[x]);//每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
    noTone(tonePin);//停止当前音符,进入下一音符
  }
  delay(1000);//等待5秒后,循环重新开始
}
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值