Arduino基础课程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2019年春季学期电子协会arduino教学8节课带你arduino入门讲述人:代云凯第一课认识ArduinoUNO模拟输入[0,1023]数字输入输出【高低电平】~pwm模拟输出[0,255]TX发RX收串口输入输出[0,255]输出输入inputarduinooutput高低电平[0,1023]高低电平[0,255]ArduinoIDEardublock认识ArduinoIDE•Arduino官网•ArduinoIDE下载安装•CH340驱动第二课•认识fritzing,认识面包板•理解数字输出•Blink——会闪烁的LED•学会IDE•学会ardublock电路连接arduino程序结构主程序voidsetup(){//初始化函数,只执行一次//声明所有串行端口及脚位输出入}voidloop(){//循环函数,无限次执行}第一个程序•笔记:1./*段注释不执行*/2.//行注释,不执行3.{函数体}笔记•pinMode函数常用于setup函数中,定义引脚模式语句结构:pinMode(pin,模式);模式:OUTPUT输出模式,为电路提供激励INPUT输入模式,读取传感器信号或开关信号笔记•模式常量HIGH、LOW(高电平、低电平)输出模式:HIGH=5V、LOW=0V输入模式:HIGH=3V、LOW=2V•digitalWrite(引脚或变量名,模式常量);将数字引脚输出高低电平笔记•delay(毫秒);延时函数,1秒=1000毫秒笔记•全局变量声明//在setup函数之前,进行常量声明,变量声明•int(整数型)用法:常量声明:int空格变量名=数值变量类型定义:int空格变量名定义某变量类型或赋值第三课•开关按键开关倾斜开关震动开关相连不同侧,同侧不相连if函数•如果(条件成立){就-----------}否则{就----------}•if(判断语句){要执行的语句;}else{要执行的语句;}数字输入digitalRead•理解数字输入•digitalRead(引脚);读取数字脚高低电平状态高电平用1表示,低电平用0表示•逻辑运算符===!===第一种方案程序voidsetup(){pinMode(2,INPUT);pinMode(13,OUTPUT);digitalWrite(2,HIGH);}voidloop(){intkaiguan=digitalRead(2);if(kaiguan==LOW){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}}第三个模式•INPUT_PULLUP输入上拉模式Arduino微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。注意:当Arduino引脚设置为输入(INPUT)模式或者输入上拉(INPUT_PULLUP)模式,请勿将该引脚与负压或者高于5V的电压相连,否则可能会损坏Arduino控制器。作业:查阅相关资料,弄清楚什么是上拉电阻,下拉电阻第二种方案程序voidsetup(){pinMode(2,INPUT_PULLUP);pinMode(13,OUTPUT);}voidloop(){intkaiguan=digitalRead(2);if(kaiguan==HIGH){digitalWrite(13,LOW);}else{digitalWrite(13,HIGH);}}第四课串行通信•SerialSerial.begin(电脑波特率);//用于setup函数,与电脑建立连接。Serial.print(要打印的值);Serial.println(要打印的值+回车);//将内容打印到电脑屏幕。Serial.read(无);//读取一个字节Serial.available(无)//识别串口可读取字节数示例程序intdata=0;voidsetup(){Serial.begin(9600);}voidloop(){if(Serial.available()0){data=Serial.read();Serial.print(data);Serial.println(data);}}while循环•while(条件){执行语句;}//条件成立,执行,不成立跳出当型(while)是先检验条件再运行。直到型(dowhile)是先运行一次循环体,检测到某个某个条件成立时接着循环。也就是while型可能不运行循环体,而直到至少运行一次。示例voidsetup(){Serial.begin(9600);}voidloop(){inti=1,sum=0;while(i=100){sum+=i;i++;}Serial.print(sum=);Serial.println(sum);delay(5000);课堂任务台灯原理交通灯2路抢答器•函数的嵌套•自定义函数voidsetup(){pinMode(2,INPUT_PULLUP);pinMode(13,OUTPUT);}voidloop(){intkaiguan=digitalRead(2);if(kaiguan==LOW){delay(500);while(digitalRead(2)==HIGH){digitalWrite(13,LOW);}if(kaiguan==LOW){delay(500);while(digitalRead(2)==HIGH){digitalWrite(13,HIGH);}}else{digitalWrite(13,LOW);}}}台灯原理2路抢答器intkg1=3;//开关1intkg2=2;//开关2intcz=4;//重置intled1=13;//灯1intled2=12;//灯2voidsetup(){pinMode(kg1,INPUT_PULLUP);pinMode(kg2,INPUT_PULLUP);pinMode(cz,INPUT_PULLUP)pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);}voidloop(){if(digitalRead(kg1)==HIGH)led1liang();if(digitalRead(kg2)==HIGH)led2liang();if(digitalRead(cx)==HIGH)led1mie();}voidled1liang(){//灯1亮while(digitalRead(cx)==HIGH){digitalWrite(led1,HIGH);digitalWrite(led2,LOW);}}voidled2liang(){//灯2亮while(digitalRead(cx)==HIGH){digitalWrite(led1,LOW);digitalWrite(led2,HIGH);}}voidledmie(){//灯全灭digitalWrite(led1,LOW);digitalWrite(led2,LOW);}intg1=13;inty1=12;intr1=11;intg2=10;inty2=9;intr2=8;voidsetup(){pinMode(g1,OUTPUT);pinMode(y1,OUTPUT);pinMode(r1,OUTPUT);pinMode(g2,OUTPUT);pinMode(y2,OUTPUT);pinMode(r2,OUTPUT);}voidloop(){digitalWrite(g1,HIGH);delay(5000);digitalWrite(g1,LOW);digitalWrite(y1,HIGH);delay(1000);digitalWrite(y1,LOW);digitalWrite(r1,HIGH);delay(5000);digitalWrite(r1,LOW);}交通灯第五课模拟输出•PWM(PulseWidthModulation):脉冲宽度调制调节脉冲宽度及占空比,近似视为模拟信号•analogWrite(引脚或变量名,PWM);将模拟引脚输出PWM。•对于arduino模拟输出只能输出[0,255]的PWM•analogWrite()函数仅支持以下引脚3,5,6,9,10,11•在调用analogWrite()函数前,您无需用pinMode()函数来设置该引脚for循环•for(初始值;判断条件;对初始值操作){要执行的语句;}•inti=1,sum=0;for(i=1;i=100;i++){sum=sum+i;}inti=1,sum=0;while(i=100){sum=sum+i;i++;示例程序intled=9;voidsetup(){}voidloop(){for(inti=0;i=255;i+=5){ianalogWrite(led,i);delay(30);}for(inti=255;i=0;i-=5){analogWrite(led,i);delay(30);}}课后任务发挥想象制作一个流水灯第六课模拟输入•analogRead(引脚或变量名);[0,1023]本指令用于从Arduino的模拟输入引脚读取数值。Arduino可以将0-5V的电压输入信号映射到数值0-1023。换句话说,我们可以将5V等分成1024份。0V的输入信号对应着数值0,而5V的输入信号对应着1023。示例程序在本示例中,我们将电位器的三个引脚分别连接在5V,GND,以及A0引脚。通过调节电位器,A0引脚的输入电压将在0V-5V之间。在Arduino内置的模拟数字转换功能作用下,该输入电压将被映射到数值0-1023之间。(0V对应数值0,5V对应1023)。这一数值将通过串口监视器显示。程序intval=0;voidsetup(){Serial.begin(9600);}voidloop(){val=analogRead(A0);Serial.println(val);delay(200);}台灯原理1023/255约等于4.01intval=0;intled=9;voidsetup(){}voidloop(){val=analogRead(A0);analogWrite(led,val/4);}voidsetup(){}voidloop(){intval=analogRead(0);val=map(val,0,1023,0,255);analogWrite(9,val);}将变量val数值从0-1023区间映射到0-255区间•map()可以用来将某一数值从一个区间等比映射到一个新的区间。•map(x,a,A,b,B);•map(要映射的值,映射前区间最小值,映射前区间最大值,映射后区间最小值,映射后区间最大值)用光敏做一个自动调节亮度的台灯流水灯voidsetup(){pinMode(3,OUTPUT);pinMode(5,OUTPUT);pinMode(6,OUTPUT);pinMode(9,OUTPUT);pinMode(10,OUTPUT);pinMode(11,OUTPUT);}intp=0;intj[6]={3,5,6,9,10,11};//数组voidloop(){for(inti=0;i6;i++){intq=map(p,0,5,0,255);analogWrite(j[i],q);delay(10);p++;p=p%7}}第七课电子筛子•了解数码管及8*8点阵•学习随机数函数•学习多分支选择结构elseifswitch•自定义函数及函数的包装包装函数inta=2,b=3,c=4,d=5,e=6,f=7,g=8;pinMode(a,OUTPUT);pinMode(b,OUTPUT);………..自定义函数及函数的包装随机数•random(最小值,最大值+1);intsjs;voidsetup(){Serial.begin(9600);}voidloop(){sjs=random(1,7);

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功