1、玩转Arduino合集Arduino是什么?Arduino硬件介绍Arduino编程环境介绍Arduino的安装Arduino IDE的安装USB驱动的安装4Arduino程序结构:setup()上电后setup()函数执行一次5Arduino程序结构:loop()loop()函数一直循环运行6Arduino数字输入输出Arduino程序下载HelloWorld程序动手HelloWorld:点亮一个LED灯Arduino与电子积木什么是电子积木电子积木如何与Arduino连接 传感器扩展板 连接线数字型电子积木通用按钮模块 小按钮模块 大按钮模块 磁力开关 触摸传感器倾斜传感器人体运动 红外热
2、释传感器反射型红外开关 50cm100cm 反射型红外开关 10cm 反射型红外开关 2cm对射型 红外开关 8米继电器模块动手通过按钮模拟来控制LED灯的亮灭面包板使用方法介绍动手用面包板完成LED模块的电路连接LED基本电路电阻电阻LED电源(正电源(正/ /负)负)LED控制代码动手使用Arduino和传感器扩展板使用Arduino的9,10,11三个引脚使用三个LED和1K的电阻通过程序进行控制讨论彩色LED红/绿/蓝 三原色根据公共端的不同有共阳/共阴两种动手更换RGB LED用Arduino程序混色讨论模拟信号模拟信号的值可以连续变化9V电池就是一种模拟器件,因为它的输出电压并不精
3、确地等于9V,而是随时间发生变化,并可取任何实数值。 光照强度、温度、湿度等也都是模拟信号Arduino中的模拟输出analogWrite(pin, value) pin为Arduino上的PWM引脚 3, 5, 6, 9, 10, 11 value取值0-255PWM 实现模拟信号的数字化方法 动手Arduino控制LED淡入淡出效果动手实现全彩的混色模拟输入通常基于分压原理电位器电子积木电子积木 300300度度 旋转角度传感器旋转角度传感器Arduino中的模拟输入analogRead(pin) pin: 模拟输入引脚 A0, A1, A2, A3, A4, A5 返回值: 0-1024
4、 (10位精度)动手通过读取电位器的值来控制LED灯的亮度300度 旋转角度传感器多圈 旋转角度传感器 60行程 滑动电位器 推子游戏杆 控制杆 JoyStick模拟温度传感器光线传感器声音传感器Sharp 红外距离传感器30cm, 80cm, 150cm, 5.5m三轴 加速度传感器FlexiForce压力传感器1 lb, 25 lb, 100 lbFSR系列压力传感器压力1-10kG尺寸和外形不同弯曲传感器单向,双向拉伸 传感器4 inch, 6 inch动手实验各种模拟传感器对RGB LED进行控制分享串口通信串口通信(Serial Communication)是Arduino和计算机间
5、按位进行数据传输的一种最基本的方式。使用3根线完成 地线,GND 发送,Tx 接收 ,Rx主要参数 波特率:通信速度,表示每秒钟传送的位(bit)的个数 数据位 停止位 奇偶校验位Arduino 串口USB转串口 PC端:串口 Arduino端:USB串口引脚 RX:Pin 0 TX:Pin 1串口数目 Arduino MEGA和Arduino 2560:4个 其余:1个串口初始化函数 Serial.begin(speed)speed: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 通常在 setu
6、p() 函数里调用Arduino 串口输出将数据从Arduino传输到PC TX 串口转USB PC端软件串口监视软件 Arduino IDE自带串口监视软件 也可以用其它软件进行接收:Flash, Processing, Director, vvvv等串口输出函数 Serial.print(val), Serial.println(val) 输出ASCII码(后者多一个回车换行) Serial.print(val, format) , Serial.println(val, format) 按指定格式输出(后者多一个回车换行)2022-5-2655Serial.print(val) 实例Se
7、rial.print(78) 输出78 Serial.print(1.23456) 输出1.23 Serial.print(byte(78) 输出“N” (N的ASCII码值为78))Serial.print(N) 输出N Serial.print(Hello world.) 输出Hello world. Serial.print(val, format) 实例Serial.print(78, BYTE) 输出N Serial.print(78, BIN) 输出1001110 Serial.print(78, OCT) 输出116 Serial.print(78, DEC) 输出78 Seri
8、al.print(78, HEX) 输出4E Serial.print(1.23456, 0) 输出1 Serial.print(1.23456, 2) 输出1.23 Serial.print(1.23456, 4) 输出1.2346 动手动手尝试输出更多格式的数据到计算机 Serial.print(78) Serial.print(1.23456) Serial.print(byte(78) Serial.print(N) Serial.print(Hello world.) Serial.print(78, BYTE) Serial.print(78, BIN) Serial.print(
9、78, DEC) Serial.print(78, HEX) Serial.print(1.23456, 2)串口液晶模块波特率9600命令格式所有对该液晶屏进行控制的串口命令都以字符”$”开始,以回车换行”rn”结束,两者之间是相应的命令和参数,不同的命令具有不同的参数。操作命令光标移动 :GO行列行和列均从1开始GO 1 1在当前光标位置上显示字符串 PRINT字符串PRINT Hello Arduino清屏:CLEAR 将光标移回到屏幕左上角的初始位置:HOME 设置光标效果:CURSOR显示闪烁第一个参数为是否显示光标(1和0)第二个参数为是否闪烁(1和0) CURSOR 1 1一个完
10、整命令的例子Serial.print($PRINT Flamingo EDArn); Serial.println($PRINT Flamingo EDA); 动手要求:清屏后在屏幕上的第二行第二列开始显示字符串Arduino Club提示提示 在在looploop的最后加的最后加delaydelay防止闪烁防止闪烁 在下载代码的时候不能接显示屏在下载代码的时候不能接显示屏Arduino 串口输入串口队列(Buffer) PC和Arduino间的缓冲区串口输入函数 Serial.available() 返回值:当前可读的数据数目 Serial.read() 如果串口没有数据可读,返回 -1如果
11、串口有数据可读,返回第一个字符,并从串口队列中取出 Serial.peek() 如果串口没有数据可读,返回-1如果串口有数据可读,返回第一个字符,但不从串口队列取出,因此下次还能读到 Serial.flush()清空串口队列动手作业从串口输入以$开始,以回车换行(rn)的命令,对其进行解析, 控制指定数字I/O引脚上的LED, 第一个参数为引脚号,第二个参数为亮灭 $D 2 1rn $D 3 0rn 控制指定PWM端口上的LED亮度 第一个参数为引脚号,第二个参数为亮度值 $P 6 128rn基于串口的电子积木(一)串行液晶显示屏串行液晶显示屏 字符型字符型 1602 LCD 1602 LCD
12、 USBUSB转串口适配器转串口适配器 RS485RS485串口模块串口模块 MAX232 MAX232 串口模块串口模块 无线数据传输模块无线数据传输模块 APC220 APC220 蓝牙串口模块蓝牙串口模块基于串口的电子积木(二)串口串口RFIDRFID模块模块 10cm 10cm 串口串口RFIDRFID模块模块 6cm 6cm XBee USB XBee USB 适配器适配器 直流电机将电能转换为机械能的一种装置两个电源接头在适当的电压下给予足够的电流时将连续旋转,旋转方向由电流方向决定普通直流电机转速高力矩小,适用于对力矩要求小的场合直流减速电机直流减速电机(齿轮减速电机)是在普通直
13、流电机的基础上,加上配套齿轮减速箱。齿轮减速箱可以提供较低的转速和较大的力矩,不同的减速比可以提供不同的转速和力矩常用参数工作电压(额定电压) 驱动电机推荐使用的电压 高于或者低于工作电压时电机也能工作 实际电压 额定电压,会影响电机的寿命工作电流 电机工作电流越大,输出功率越大 空载运行时,电机的电流最小(空载电流) 负载增大到使电机停止转动时(堵转电流)转矩 电机的转动力转速 每分钟旋转的圈数(转/分,RPM)注意!电机属于大电流设备,无法用Arduino引脚直接控制 区别于LED电机电压高于Arduino的工作电压,注意隔离和接线 出错可能导致Arduino烧毁电机在不通电的情况下旋转将
14、产生逆电流(逆电压) 发电机的工作原理 逆电流的方向与电机工作电流的方向相反 逆电流会造成电子设备的损坏动手观察逆电压手工发电机基本控制电路用三极管或者MOS管驱动电机动手用Arduino控制电机的转动代码与LED灯控制代码相同电机速度控制复习PWM 高速地开关三极管来实现对电机的控制 占空比(打开时间:关闭时间)决定了输出给电机的能量份额 Arduino的analogWrite函数用来产生PWM信号动手用Arduino控制电机转动的速度如何让速度变化更容易观察到?H桥式驱动电路4个三极管控制一个直流电机只让对角线上的一对三极管导通 否则会短路,烧坏三极管能同时控制速度和方向电机驱动芯片L29
15、3D包含两个H桥式驱动电路,可以用来驱动两个直流电机电机电机使能引脚使能引脚方向方向A A方向方向B B电机电源电机电源Arduino 5VArduino 5V电机电源和电机电源和Arduino Arduino 需要共地需要共地! !Arduino控制L293D速度控制 使用Arduino模拟输出引脚 将产生的PWM信号连接到L293D的使能引脚方向控制 使用Arduino的数字输出引脚 将产生的数字信号连接到L293D的A、B两个方向引脚 正转:A为高,B为低 反转:A为低,B为高 制动:A、B同时为高或者低动手用L293D控制电机Arduino电机驱动扩展板基于L298N,工作原理与L29
16、3D一样提供更大工作电流,可以驱动大的直线电机逆电压消除电路步进电机一种可以精确控制的交流电机由驱动脉冲控制,每个脉冲让电机前进一个固定的角度(步进角)电机速度由单位时间内脉冲的个数决定(脉冲频率)功率小,负载能力低,控制相对复杂双极性步进电机每个线圈都可以两个方向通电 四根引线,每个线圈两条使用数字万用表确定线圈分组 某两根引线之间能够测量到阻值就属于一组双极性步进电机的步距通常是1.8 转一圈需要200步工作原理步进电机驱动器需要不断改变线圈中电流的方向 通过H桥式驱动电路完成步进电机驱动模块EasyDriver 方向方向步进脉冲步进脉冲地地电机电源电机电源地地线圈线圈A A线圈线圈B B
17、电机电源和电机电源和Arduino Arduino 需要共地需要共地! !Arduino控制EasyDriver方向控制 使用Arduino的数字输出引脚速度控制 使用Arduino的数字输出引脚 产生脉冲信号动手用EasyDriver驱动双极性步进电机升降速曲线步进电机在拖动负载高速移动一定距离并精确定位时一般来说都应包括五个阶段 启动 加速 高速运行(匀速) 减速 停止不同阶段的脉冲频率应不同舵机舵机也叫伺服电机(Servo),工作电压一般4.6 7.2V由直流电机、减速齿轮组、传感器和控制电路组成 主要应用在定位控制上舵机接口标准三线接口标准三线接口 电源线电源线 地线地线 控制线控制线
18、控制信号舵机的控制信号也是一种PWM信号脉冲周期20毫秒脉冲高电平持续1毫秒(1000微秒)到2毫秒(2000微秒)用来控制的脉冲信号必须持续产生,否则很难稳定注意!舵机对控制脉冲高电平的宽度非常敏感 抖动:控制信号每个脉冲的高电平宽度不稳定两个控制脉冲的间隔时间不太敏感 只要在可以接受的范围内都可以(14ms到20ms)只有机械约束,没有电路约束 控制脉冲宽度大于920us或者2120us,对电机寿命会有影响 驱动电机到达物理上不可能到达的位置千万不能接反电源 大部分舵机都可能会烧毁通过实验来找出电机的运动范围 大部分舵机的运动区间都在150度左右Arduino如何控制舵机Servo库 se
19、rvo.attach(pin) 在指定的引脚上连接舵机 servo.write(anlog) 将舵机旋转到指定的角度位置 servo.writeMicroseconds(us) 生成指定宽度(微秒)的控制脉冲动手利用Arduino为舵机找到中心位置以中心位置左右摆动Arduino如何与外界沟通PinCOMSPIIICCOM COM RX/TXRX/TX(0,1)(0,1)SPI SPI SCK,MISO,MOSI,SSSCK,MISO,MOSI,SS(13,12,11,10)(13,12,11,10)I2C I2C SDA/SCLSDA/SCL(A4,A5)(A4,A5)RF遥控无线射频(Ra
20、dio Frequency) 在空气中传播的电磁波主要包括无线收/发机 发射模块 接收模块应用场景 车辆/家庭防盗 遥控玩具4路RF模块无线发射模块对应于数字输出(Digital Out) 将相应引脚设置成高,发出数据无线接收模块对应于数字输入(Digital In) 若相应引脚读出为高,接收数据一共4个通道:C1、C2、 C3、 C4无线发射模块无线发射模块无线接收模块无线接收模块动手两台Arduino一组 发射组 RF发射模块一个 按钮模块一个 接收线 RF接收模块一个 LED模块一个目标 通过按钮来控制对方LED灯的亮灭参考代码发射端代码发射端代码接收端代码接收端代码问题讨论各个组之间如
21、何避免冲突 可以尝试使用不同的通道 为RF模块配置不同的地址动手两台Arduino一组,交换发射组和接收组 发射组 RF发射模块一个 按钮模块两个 接收组 RF接收模块一个 舵机目标 多通道无线数据收发 模拟遥控汽车,用按钮控制舵机的左右转向RF数据传输4路RF模块传输的是数字信号 简单的开/关、1/0信号无线数传模块可以实现各种数据的传输 数字量:开/关 模拟量:光线、温度、声音等APC220通过串口(COM)与Arduino进行沟通数据收发一体,即可以发送数据又可以接收数据 数据发送:写串口 Serial.write() 数据接收:读串口 Serial.read()传输距离:开阔地1200
22、mArduino与COM模块的连接传感器扩展板COM/I2C连接线COMCOM动手两台Arduino一组 发射组 APC220一个 按钮模块一个 接收组 APC220一个 LED模块一个目标 发射组在按钮按下时通过APC220模块发送数据A 接收组在收到数据A时点亮LED参考代码发射端代码发射端代码接收端代码接收端代码问题讨论按钮的处理 消抖处理:发送端delay(100)改成delay(10)呢? 如何保证按一下按钮,只发送一次?APC与PC间的无线连接USB转串口适配器动手Arduino作为数据收集器采集传感器数据通过APC220模块传递给PC机通过串口监视软件观察数据变化如何使数据更加可读?2022-5-26110
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。