第一节
- void setup(): 这个函数是最开始的时候运行一次,(初始化函数)。
- void loop ():这个函数是执行函数,会不断循环工作,(死循环函数)。
- pinMode (pin,mode) : 将数字IO口指定为输入或输出。(mode=OUTPUT,INOUP)
- digitalWrite(pin,Value): 将数字IO口输出高电平或低电平 (Value=HIGH,lOW)
- delay(ms):延时多少时间后执行下一句
示例:用13号引脚点亮一个灯
void setup()
{
pinMode(13,OUTPUT);//将13号引脚设置成输出模式
}
void loop()
{
digitalWrite(13,HIGH);//输出高电平
delay(1000);//延时一秒
}
第二节
- Serial.bengin() :这个函数对串口定义波特率
- Serial.read() : 这个函数读串口并返回收到参数读取1byte的序列资料(读取串口的输入)
- 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);//防死循环卡死
}
第三节
- digitalRead():读取引脚输入
- 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);
}
第四节
- A0—A5,是模拟输入 , 3,4,5,9,10,11是模拟输出口
- analogRead(pin) :读取模拟量电压值,返回一个0到1023的数值(int型)
- anglogWrite(pin,value): 输出到引脚,PWM的信号频率约为490赫兹脚位通常在3,5,6,9,10,11,value变数范围0—255,而0——255对应的是 0—5V电压
- 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);
}
第五节
- 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);
Srial.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);
}
}