arduino UNO开发板学习笔记

第一节

  1.  void setup(): 这个函数是最开始的时候运行一次,(初始化函数)。
  2.  void loop ():这个函数是执行函数,会不断循环工作,(死循环函数)。
  3. pinMode (pin,mode) : 将数字IO口指定为输入或输出。(mode=OUTPUT,INOUP)
  4. digitalWrite(pin,Value): 将数字IO口输出高电平或低电平 (Value=HIGH,lOW)
  5. delay(ms):延时多少时间后执行下一句

示例:用13号引脚点亮一个灯

void setup()
 {
     pinMode(13,OUTPUT);//将13号引脚设置成输出模式 
 } 
void loop()
 {
     digitalWrite(13,HIGH);//输出高电平
     delay(1000);//延时一秒
 }

第二节

  1. Serial.bengin() :这个函数对串口定义波特率
  2. Serial.read() :    这个函数读串口并返回收到参数读取1byte的序列资料(读取串口的输入)
  3. Serial.printnl():  在串口端打印输出数据(在串口打印输出)

示例:在串口输出Hello World!

void setup()
{
    pinMpde(13,OUTPUT);
    Serial.begin(9600);//定义与计算机通讯的波特率
}

VOid loop()
{
    if(Serial.read() =='a')
    {
        digitalWrite(13,HIGH);//输出高电平灯亮
        dealy(1000);//延时一秒
        digitalWrite(13,LOW);//输出低电平灯灭
        dealy(1000);
        Serial.println("Hello World");//当在串口输入a 判断后在串口打印 Hello World        
    }
    dealy(1);//防死循环卡死
}

第三节

  1. digitalRead():读取引脚输入
  2. digitalWrite (): 将数字IO口输出高电平或低电平 

示例:按键控制LED的开关

void setup()
{
    pinMode(7,OUTPUT);//将7号引脚设置成输出
    pinMode(2,,INPUT);//将2号引脚设置成输入
}
void loop()
{
    if (digitalRead(2) == HIGH)//读取2号引脚,如果输入高电平条件成立
    {
        digitalWrite(7,HIGH);//7号输出高电平,灯亮
    }

    else
    {
        digitalWrite(7.LOW);//灯灭
    }
    delay(1);
}

第四节

  1. A0—A5,是模拟输入  ,  3,4,5,9,10,11是模拟输出口
  2. analogRead(pin) :读取模拟量电压值,返回一个0到1023的数值(int型)
  3. anglogWrite(pin,value): 输出到引脚,PWM的信号频率约为490赫兹脚位通常在3,5,6,9,10,11,value变数范围0—255,而0——255对应的是 0—5V电压
  4. map(value,fromlow,fromHigh,toLow,toHigh),把一个数从一个范围变换到另一个范围就是将value变数依照fromlow与fromHigh范围,对等转化至toLow 与toHigh。

示例:电位器控制灯的亮度

int moni =0;
int deng =0;
void setup()
{
     Serial.begin(9600);
     pinMode(3,OUTPUT);//初始化高电平
}
void loop()
{
    moin = analogRead(0)
    Serial.println(moni);
    deng =map(moin,0,1023,0,255);//因为模拟读取的是1023,输出却是255,用map函数转换
    analogWrite(3,deng);//用模拟值控制灯的亮度,模拟值越大灯越亮
    dealy(1);

}

示例:电位器呼吸灯

int y = 0;
int x = 0;
void setup()
{
    pinMode(3,OUTPUT);

}
viod loop()
{
    y = analogRead(0);
    x = map(y,0,1023,1,9);
    for(int i = 0;i < 255; i++)
    {
        analogWrite(3,i);
        delay(x);
    }
    for(int i = 255;i > 0; i--)
    {
        analogWrite(3,i);
        delay(x);
    }
    delay(1);
}

第五节

  1. void hexideng(int m){}  void = 表示函数不返回任何的值  hexideng = 是自定义函数名              int m = 是形参,int表示数据类型   ,  {}  中的语言为函数体                                                     在主函数中填写函数名就可以调用子函数 hexideng(x) x是实参

示例:子函数

int y = 0;
int x = 0;
void hexideng(int m)//子函数:当主程序执行到hexideng这个函数名时就会跳转到这执行循环
{
    analogWrite(3,m);//字母代替参数,相当于一个模板,让模拟电压的高低决定3引脚输出电平的高低
    dealy(n);
}
void setup()
{
    pinMode(3,OUTPUT);//初始化3号引脚为高
}
void loop()
{
    y = analogRead(0);//读取A0号引脚输入电压的模拟值
    x = map(y,0,1023,1,9); //将模拟值转成1-9代替
    for(int i=0;i<255;i++) 
    {
        hexideng(i,x); //调用子函数,让3号引脚输出电平的高低决定呼吸的快慢
    }
      for(int i=255;i>0;i--)
    {
        hexideng(i,x);
    }
}

第六节 

delayMicroseconds() 函数是暂停多少微秒,一百万分之一秒

millis() 函数是返回时间函数,回传晶片开始执行到目前的毫秒,该参数溢出大概需要50天时间。

示例:PWM频率计算

void setup()
{
  pinMode(2,OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  unsigned long time1 = 0;
  unsigned long time2 = 0;
  time2 = millis();
  for (unsigned long i = 0;i < 1000000; i++)
  {
    digitalWrite(2,HIGH);
    delayMicroseconds(1);
    digitalWrite(2,LOW);
    delayMicroseconds(1); 
  }
  time2 = millis() -time1;
  Serial.println(time2);
  while (1)
  {
    delay(1);
  }
  

 示例:PWM控制

void setup()
{
  pinMode(2,OUTPUT);

}

void PWM(int m)
{
  digitalWrite(2,HIGH);
  delayMicroseconds(m);
  digitalWrite(2,LOW);
  delayMicroseconds(1023 - m);
}
void loop()
{
  PWM(analogRead(0));
}

示例:光敏电阻控制灯的开关

int y = 0;
void setup()
{
    pinMode(12,OUTPUT);
    Serial.begin(9600);
}
void loop()
{
    y = analogRead(0);
    Serial.printlan(y);
    if(y > 600)
    {
         digitalWrite(12,1);    
    }
    else
    {
        digitalWrite (12,0);
    }
    delay(1);
}

第七节

示例:库函数的调用

#include <Servo.h>
Servo duoji;

void setup()
{
    duiji.attavh(9);
}

void loop()
{
    for (int i =0; i<180;i++)
    {
        duoji.write(i);
        delay(10);
    }
    for (int i = 180; i > 0;i--)
    {
        duoji.write(i)
        delay(10);
    }
}

示例:自定义舵机函数实现电位器控制舵机角度

int sck =2;
int jiaodu;
int PWM;
int dwp;
 
 void duji(int sck, int jiaodu)
 {
    PWM = (jiaodu * 11)+ 500;
    digitalWrite(sck,HIGH);
    delayMicroseconds(PWM);
    digitalWrite(sck,LOW);
    delayMicroseconds(2000-PWM);
 } 

 void setup()
 {
  pinMode(sck,OUTPUT);
 }
 void loop()
 {
  dwp = map(analogRead(A0),0,1023,0,180);
  duji(sck,dwp);
  delay(5);
 }

  • 12
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值