Arduino(初级入门)

1.关于引脚

Arduino上每一个带有数字编号的引脚,都是数字引脚,使用这些引脚可以完成输入输出数字信号的功能

2.关于pinMode()函数:(数字 I/O)

在使用输入输出功能前,需要使用pinMode()函数引脚配置模式

pinMode(pin,mode);  //mode可使用:输出模式(OUTPUT),输入模式(INPUT),输入上拉模式   (INPUT_PULLUP),pin为指定配置的引脚编号

 //在Arduino核心库中,OUTPUT被定义成1,INPUT 被定义成0

//因此可以用1代替OUTPUT,用0代替INPUT

如pinMode(2,OUTPUT);即为把2号引脚配置为输出模式

3.关于digitalWrite()函数:(数字 I/O)

digitalWrite(pin,value);   //pin为指定输出的引脚编号,value为指定输出的电平,高电平(HIGH),低电平(LOW)即为0v

 //在Arduino核心库中,HIGH被定义成1,LOW 被定义成0

//因此可以用1代替HIGH,用0代替LOW

高电平 即为当前Arduino的工作电压,Arduino UNO的工作电压为5v,Arduino Due的工作电压为3.3v

4.关于digitalRead()函数:(数字 I/O)

int value=digitalRead(pin);       //定义一个变量,使用digitalRead()函数读取引脚pin的电平, 以数字的方式返回给value

读取数字引脚的 HIGH(高电平)或 LOW(低电平)

5.数字信号与模拟信号:

数字信号:只有0和1,不是0就是1,没有其他数字

模拟信号:可以是任意一个值

6.关于数字电平:

数字是一种表示一位电压的方式:0或1

在Arduino上,当数字引脚配置为输出(OUTPUT)时,电平设置为0或5v,当数字引角配置为输入(INPUT)时,电压由外部设备提供,该电压可以在0~5v变化,并转换成数字表示(0或1),电压低于0.8v则视为0,高于2.0v时视为1,电压在阈值之间则不确定

7.关于串口通信:

Arduino与计算机最常用的方式是串口通信,使用串口通信时,需要先使用Serial.begin()函数来初始化Arduino的串口通信功能

Serial.begin(speed);      //参数speed指串口通信波特率即串口通信速率的参数 ,常用波特率:300 600 1200 2400 4800 9600等(每秒传送比特的个数),串口通信协议中串口通信双方必须使用同样的波特率才能正常通信

8.串口输出:关于Serial.print()和 Serial.println()函数

Serial.print(value);  //若有引号,则打印引号里面的内容(字符串)

 Serial.println(value); //若打印变量的数值,则没有引号,区别是Serial.println()比Serial.print()多了换行的作用 

9.关于random()randomSeed()函数:

random(min, max);   //在[min, max)区间内产生一个随机数,包括min本身不包括max本身

单独使用random()函数所产生的随机数在每次程序启动后都是同一组随机数

randomSeed(seedVal);  //使用randomSeed函数可以在每次运行都产生不同的随机数

10.关于analogWrite()函数:(模拟 I/O)

 analogWrite(ledPin, value);//模拟输入,其中ledPin是引脚编号,value是参数

                                                     //既可调节亮度,也可以调节电机的转速

 //该函数每次对引脚执行指令,指令执行后,都会给引脚一个固定的PWM信号,大概为        490hz

//value:占空比,0到255之间,占空比的多少可表示亮度的大小

11.关于analogRead()函数:(模拟 I/O)

analogRead(pin);//读取模拟输入引脚pin的数值,读取的数值为0到1024之间的整数

12.关于map()函数: 

map(value,fromLow,fromHigh,toLow,toHigh)  //将一个数值从一个范围映射到另一个范围

//value: 要映射的值    fromLow: 原范围的下限     fromHigh: 原范围的上限

//toLow: 新范围的下限     toHigh: 新范围的上限

13. 关于attachInterrupt()函数:

attachInterrupt(interrupt, ISR, mode);

//interrupt:中断号,在Uno R3中有中断号0(即引脚2)、中断号1(即引脚3)

//ISR:中断处理函数

//mode:中断触发方式,LOW(低电平触发)、CHANGE(引脚状态改变触发)、RISING(上升沿触发)、FALLING(下降沿触发)

14.关于Serial.available()函数: 

 Serial.available();   //串口接收缓存中有多少字节的数据待处理,返回值即为多少

14.第一个Arduino程序(LED闪烁):

//项目一  ——LED闪烁灯
int pin = 13;  //LED连接到引脚13
void setup()
{
pinMode(pin, OUTPUT);  //将引脚13设置为OUTPUT模式
}
void loop()
{
digitalWrite(pin, HIGH);  //将引脚13设置为高电平,此时LED灯亮
delay(1000);              //保持灯亮状态1000毫秒即1秒
digitalWrite(pin, LOW);   //将引脚13设置为低电平,此时LED灯暗 
delay(1000);              //保持灯暗状态1000毫秒即1秒
}

四个led灯轮流闪烁:

void setup()
{
  for(int i=3; i<=9; i+=2)    //引脚3、5、7、9设置为输出状态(OUTPUT)
  {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  f1();
  delay(1000);  //转换方向之间间隔两秒
  f2();
  delay(1000);
}
void f1()   //依次点亮led,后依次熄灭led
{
  for(int i=3; i<=9; i+=2)
  {
    digitalWrite(i, HIGH);
    delay(200);            //两个灯点亮之间间隔200毫秒
  }
  for(int i=9; i>=3; i-=2)
  {
    digitalWrite(i, LOW);
    delay(200);             //两个灯熄灭之间间隔200毫秒
  }
}
void f2()   //反方向依次点亮led,后依次熄灭led
{
  for(int i=9; i>=3; i-=2)
  {
    digitalWrite(i, HIGH);
    delay(200);              //两个灯点亮之间间隔200毫秒
  }
  for(int i=3; i<=9; i+=2)
  {
    digitalWrite(i, LOW);       //两个灯熄灭之间间隔200毫秒
    delay(200);
  }
}

 

led分别由暗到明、由明到暗:

int ledPin = 9;
int brightness = 0;

void setup() {
  pinMode(ledPin, OUTPUT);       //设置9号引脚为输出摸式(OUTPUT)
  Serial.begin(9600);            //开启串口通讯,可在串口监视器监测led亮度变化
}
void loop() {    
  for(brightness = 0; brightness<=255; brightness+=5){     //led由暗到明
  analogWrite(ledPin, brightness);
  Serial.print("brightness = ");
  Serial.println(brightness);   //在串口监视器上检测亮度实时变化
  }
  delay(10);          
  for(brightness = 255; brightness>=0; brightness-=5){     //led由明到暗
  analogWrite(ledPin, brightness);
  Serial.print("brightness = ");
  Serial.println(brightness);     //在串口监视器上检测亮度实时变化
  }
  delay(10);   
}     

 

利用电位器调节led灯亮度:

int ledPin = 9;
int readValue = 0;  //创建变量readValue储存读取的A0引脚的模拟信号值
int brightness = 0;  //创建变量brghtness储存映射在新的占空比(PWM)范围

void setup(){
  pinMode(ledPin, OUTPUT);  //将9号引脚设置为输出模式
}

void loop(){
  readValue = analogRead(A0);  //读取模拟信号值
  brightness = map(readValue, 0, 1024, 0, 255);  //映射在新的占空比(PWM)范围
  analogWrite(ledPin, brightness);  //输出占空比控制亮度

}

光敏电阻 :

int ledPin = 9;
int readValue = 0;  //创建变量readValue储存读取的A0引脚的模拟信号值
int ledBrightness = 0;  //创建变量brghtness储存映射在新的占空比(PWM)范围

void setup(){
  pinMode(ledPin, OUTPUT);  //将9号引脚设置为输出模式
}

void loop(){
  readValue = analogRead(A0);  //读取A0引脚模拟信号值
  ledBrightness = map(readValue, 100, 500, 0, 255);  //映射在新的占空比(PWM)范围
  analogWrite(ledPin, brightness);  //输出占空比控制亮度
}

外部中断: 

int sensorLed = 9;
int sensorINPUT = 2;
char state = LOW;

void setup() {
  pinMode(sensorLed, OUTPUT);
  pinMode(sensorINPUT, INPUT_PULLUP);
  attachInterrupt(0, blink, FALLING);
}

void loop() {
  if(state == HIGH)
  {
    state = LOW;
    digitalWrite(sensorLed, HIGH);
    delay(500);
  }
  else
  {
    digitalWrite(sensorLed, LOW);
  }
}

void blink()
{
  state = !state;
}

: 学习资源来自太极创客和博主TonylOT

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值