Arduino基础学习

编程入门 行业动态 更新时间:2024-10-22 18:51:01

Arduino<a href=https://www.elefans.com/category/jswz/34/1770030.html style=基础学习"/>

Arduino基础学习

1 基本亮灯代码

//给2号引脚设置为led
int red = 2;


void setup() {
  // put your setup code here, to run once:

  //将led设置为引脚输出
   pinMode(red,OUTPUT);
    

}

void loop() {
   // put your main code here, to run repeatedly:
   digitalWrite(red,HIGH);   //点亮
   delay(1000);
   digitalWrite(red,LOW); //熄灭
   delay(1000);

}


 

2 流水灯

void setup() {
  // put your setup code here, to run once:
  //初始化端口,使用2-5端口
  for(int i = 2; i <= 5 ; i++ ){
    pinMode(i,OUTPUT);
   }

}

void loop() {
  // put your main code here, to run repeatedly:
  //以顺序的方式,从引脚2到引脚5,使用for循环一个一个点亮灯
  for(int i=2; i<=5;  i++){
       digitalWrite(i,HIGH);  //点亮
       delay(1000);      // 等待1秒
       digitalWrite(i,LOW);   // 熄灭 
      }

    for(int i=5; i>=2;  i--){

      // 以倒叙方式,从引脚5到引脚2,使用for循环一个一个点亮灯
       digitalWrite(i,HIGH);
       delay(1000);
       digitalWrite(i,LOW);
      }

     
    }



 3.按键点灯

 const int bt = 2;
 const  int lp = 13;   
  //定义变量
 int bst  = 0 ;  //接受按键定义状态


void setup() {
  // put your setup code here, to run once:
 
  pinMode(lp,OUTPUT);
  pinMode(bt,INPUT);  //输如状态
  
  

}

void loop() {
  // put your main code here, to run repeatedly:

   bst  = digitalRead(bt);

  if(bst  == HIGH){

    digitalWrite(lp,HIGH);
    
    
    }else{

      digitalWrite(lp,LOW);
      
      
      }

 

}

第二种方法

const int bt = 2; 
 const  int lp = 13;   
  //定义变量
 int bst  = 0 ;  


void setup() {
  // put your setup code here, to run once:
 
  pinMode(lp,OUTPUT);
  pinMode(bt,INPUT_PULLUP);
  
  

}

void loop() {
  // put your main code here, to run repeatedly:

   bst  = digitalRead(bt);

  if(bst  == HIGH){

    digitalWrite(lp,LOW);
    
    
    }else{

      digitalWrite(lp,HIGH);
      
      
      }

}


四位数码管显示温度传感器数值


void setup() {
    pinMode(A0,INPUT); //连接模拟端口
    Serial.begin(9600); //打开串口输入
    for(int a =2; a <=13; a++){     //连接所有端口
    pinMode(a,OUTPUT);
  }
}

//所有四位led灯段选的控制
void step0()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,HIGH);
  }
  void step1()
{
  digitalWrite(12,LOW);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,LOW);
  digitalWrite(2,LOW);
  }
 void step2()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,HIGH);
  }
   void step3()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,LOW);
  }
   void step4()
{
  digitalWrite(12,LOW);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,LOW);
  digitalWrite(2,LOW);
  }
   void step5()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,LOW);
  }
  void step6()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,HIGH);
  }
   void step7()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,LOW);
  digitalWrite(2,LOW);
  }
 void step8()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(2,HIGH);
  }

void step9(){
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(4,LOW);
  digitalWrite(3,LOW);
  digitalWrite(2,LOW);
  } 

void data(int aa){  //创建switch分支
  
  switch(aa){
    case 0:{ step0();break;}
    case 1:{ step1();break;}
    case 2:{ step2();break;}
    case 3:{ step3();break;}
    case 4:{ step4();break;}
    case 5:{ step5();break;}
    case 6:{ step6();break;}
    case 7:{ step7();break;}
    case 8:{ step8();break;}
    case 9:{ step9();break;}
    default:break;
  }
}
void loop() {
     int n = analogRead(A0);
     int val; 
     val = 500 * n /1024;
     Serial.println(val);

     int g,s,b,q; // 把个十百位分成单个数字
     g =  val % 10;
     s = (val/10)  %  10;
     b = (val/100) %  10;
     q = (val/1000) % 10;
     
     
     
     digitalWrite(7,LOW); //位选端口 7  9 10  13
     data(g);
     delay(1);
     digitalWrite(7,HIGH);
     

     digitalWrite(9,LOW);
     data(s);
     delay(1);
     digitalWrite(9,HIGH);
     
     
     digitalWrite(10,LOW);
     data(b);
     delay(1);
     digitalWrite(10,HIGH);
     
     
     digitalWrite(13,LOW);
     data(q);
     delay(1);
     digitalWrite(13,HIGH);
      
}


人体传感器点灯

const int sensorPin = A0; //定义人体红外的引脚
const int ledPin = 8;    //定义LED灯的引脚
int sensorValue = 0;      //声明传感器数据变量

void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin,LOW);  
  pinMode(sensorPin, INPUT);  
}

void loop()
{
  sensorValue = analogRead(sensorPin);//读取模拟端口传感器数据
  Serial.println(sensorValue);
  if(sensorValue > 300){                 //判断是否有人接近
      digitalWrite(ledPin,HIGH);         //点亮LED灯
      delay(3000);                      //延时30秒
      digitalWrite(ledPin,LOW);          //关闭LED灯
  }
}


8位点阵显示

int a[8]={2,7,A5,5,13,A4,12,A2};//控制行引脚
int b[8]={6,11,10,3,A3,4,8,9};//控制列引脚

void setup() {
  // put your setup code here, to run once:
  for(int i=0;i<8;i++){
  pinMode(a[i],OUTPUT);
  pinMode(b[i],OUTPUT);
  }

}

//逐行扫描
void ledRow()
{
  for (int i = 0 ; i < 8; i++)
  {
    digitalWrite(a[i], HIGH);
    for (int j = 0; j < 8; j++)
    {
      digitalWrite(b[j], LOW);
      delay(40);
    }
    digitalWrite(a[i], LOW);
    ledclean();
  }
}

//逐列扫描
void ledCol()
{
  for (int i = 0 ; i < 8; i++)
  {
    digitalWrite(b[i], LOW); 
    for (int j = 0; j < 8; j++)
    {
      digitalWrite(a[j], HIGH);
      delay(40);
    }
    digitalWrite(b[i], HIGH);
    ledclean();
  }
}

//关闭显示
void ledclean()
{
  for (int i = 0; i < 8; i++)//将点阵屏正极ladies,负极拉高,关断显示
  {
    digitalWrite(a[i], LOW); 
    digitalWrite(b[i], HIGH);
  }
}
//打开显示
void ledopen()
{
  for (int i = 0; i < 8; i++)//将点阵屏正极拉高,负极拉低,开启显示
  {
    digitalWrite(a[i],HIGH);
    digitalWrite(b[i],LOW);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
    ledRow();
    ledCol();
    delay(2000);
    ledopen();
    delay(2000);
    ledclean();
  }


旋转电位器控制LED灯

int s1,s2;

void setup() {

 pinMode(3,OUTPUT);

 pinMode(A0,OUTPUT);

}

void loop() {

  s1=analogRead(A0);//读取模拟信号端口信号,0至1023

  s2=map(s1,0,1023,0,255);//映射函数,将0至1023范围能的值映射到0至255范围内

  analogWrite(3,s2);

}


 摇杆控制led灯

int X=A0;
int Y=A1;
void setup() {
  // put your setup code here, to run once:
  pinMode(X,INPUT);
  pinMode(Y,INPUT);
  Serial.begin(9600);
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
}                                                                          
void loop() {
  // put your main code here, to run repeatedly:
int x,y;
x=analogRead(X);
y=analogRead(Y);
//Serial.println(x,DEC);
Serial.println(y,DEC);
delay(100);
if(x<300){
  digitalWrite(2,HIGH);
  }
else if(x>800){
  digitalWrite(3,HIGH);
  }
else if(y<300){ 
  digitalWrite(4,HIGH);
  }
else if(y>800){
  digitalWrite(5,HIGH);
  }
  else
{
digitalWrite(5,LOW);
digitalWrite(3,LOW);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
}

}


计时器代码

void stemp(int x,int y)
{
  if(x==1)
  {
    digitalWrite(13,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(7,LOW);
    }
  else if(x==2)
  {
     digitalWrite(13,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(7,HIGH);
    }
  else if(x==3)
  {
     digitalWrite(13,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(9,HIGH);
    digitalWrite(7,HIGH);
    }
  else if(x==4)
  {
     digitalWrite(13,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(7,HIGH);
    }
   if(y==0)
   {
    zero();
    }
   else if(y==1)
   {
    one();
    }
    else if(y==2)
   {
    two();
    }
    else if(y==3)
   {
    there();
    }
    else if(y==4)
   {
    four();
    }
    else if(y==5)
   {
    five();
    }
    else if(y==6)
   {
    six();
    }
    else if(y==7)
   {
    seven();
    }
    else if(y==8)
   {
    eight();
    }
     else if(y==9)
   {
    nine();
    }
  }
void setup() {
  // put your setup code here, to run once:
for(int i=2;i<=13;i++)
{
  pinMode(i,OUTPUT);
  }
  pinMode(A0,INPUT);
  Serial.begin(9600);
}
int c=0;
long long z;
int d=0;
long e=0;
long f=0;
long g=0;
long ge,shi,bai,qian;
void loop() {
    anjian();
    z=millis()-g;
    ge=z/1000%10;
    shi=z/1000/10%10;
    bai=z/1000/100%10;
    qian=z/1000/1000%10;
    stemp(1,ge);
    delay(3);
    stemp(2,shi);
    delay(3);
    stemp(3,bai);
    delay(3);
    stemp(4,qian);
    delay(3);
  if(c==1)
  {
    c=0;
    e=millis();
    while(1)
    {
        f=millis();
        anjian();
        if(c==1)
        {
          c=0;
          g=g+f-e;
          break;
        }
        stemp(1,ge);
        delay(3);
        stemp(2,shi);
        delay(3);
        stemp(3,bai);
        delay(3);
        stemp(4,qian);
        delay(3); 
      }
    }
}
void anjian()
{
int a=digitalRead(A0);
if(a==1){
  if(d==0){
    c=1;
    d=1;
    }
}
else
{
  d=0;
}
}
void zero()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,HIGH);
  }
   void one()
{
  digitalWrite(12,LOW);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(3,LOW);
 digitalWrite(2,LOW);
  }
  void two()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(3,HIGH);
 digitalWrite(2,HIGH);
  }
  void there()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,LOW);
  }
  void four()
{
  digitalWrite(12,LOW);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,LOW);
 digitalWrite(2,LOW);
  }
   void five()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,LOW);
  }
   void six()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,HIGH);
  }
   void seven()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(3,LOW);
 digitalWrite(2,LOW);
  }
   void eight()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,HIGH);
  }
   void nine()
{
  digitalWrite(12,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(3,HIGH);
 digitalWrite(2,LOW);
  }


共阴极数码管快速显示

 

#define light 1 //共阴数码管阳极高电平亮
#define dark 0  //共阴数码管阳极低电平不亮
#define Open 0  //共阴数码管共阴极低电平可亮
#define Close 1 //共阴数码管共阴极高电平不可亮
#define p1 13
#define a 12
#define f 11
#define p2 10
#define p3 9
#define b 8
#define e 7
#define d 6
#define dp 5
#define c 4
#define g 3
#define p4 A0

const int LEDPin[8] = {a,b,c,d,e,f,g,dp};//存放LED段引脚
const int LEDCom[4] = {p1,p2,p3,p4};//存放LED位引脚
const int segment[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  存放LED共阳管码,11个16进制数分别控制数码管显示0~9+全暗,11种状态
void setup() {
 for(int i =2; i<=13; i++){     //连接所有端口
    pinMode(i,OUTPUT);
  }
  pinMode(A0,OUTPUT);

 
}

void loop() {
for(int i=0;i<4;i++)
  {
  
       if(i==0){
       digitalWrite(LEDCom[i],Close); //共阴给高电平关
        }else{
          
           digitalWrite(LEDCom[i],Open); //共阴给高电平开
          }

    
  }
    for(int i=0;i<8;i++)
  {

    digitalWrite(LEDPin[i],light);//显示数码管
  }

}


更多推荐

Arduino基础学习

本文发布于:2023-07-28 17:00:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1256755.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础   Arduino

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!