Arduino/zh
< Arduino
Jump to navigation
Jump to search
Contents
数字电路之超级基础
欧姆定律
- I 电流,单位安培
- V 电压,单位伏
- R 电阻,单位欧姆
- I = V / R
- V = I * R
- R = V / I
功率
P = I * V
电路会把电能转换成其他形式的能量,但是很大一部分能量会被转化成热能:
- LED 发光二极管 => 光能,热能
- 电机 => 机械能(动能),热能
- 喇叭 => 机械能(声波),热能
- 电阻 => 热能
高电平,低电平(电位)
什么是数字电路?简单地说,数字电路就是用一段段代表0或者1的电平组成的信号作为控制信号的电路,而所谓的0和1,就是由低电平和高电平分别代表的。
- 在电路中的某一点上,如果它的电压:
- 接近0V (地线)的电压 => 低电平
- 接近供电电压 => 高电平
数字电路的优点主要是稳定性好,电路设计简单
动手时间:点亮LED灯
- 面包板:上面整行是横向相通的一或二整条,下面整行也是横向相通的一或二整条,中间是纵向相同的两组5个相通的点,两组之间不相通。一般来讲上面一条我们用来提供供电电源,下面一条做地线,中间来连接电路。
- LED发光二极管,顾名思义,通电就能亮,要求是需要有一定的电压,但是它的特点是通过LED的电流几乎随电压成指数增长,当电流过大时就更会导致LED永久性损毁而无法发光。
- 电阻,可以限制通过电路的电流 (I = V/R)
- 通过Arduino来供电, Arduino上面有 5V(供电), GND(地线)两个接口,5V连接上面整条,GND连接下面整条。
- 把电阻一端和LED长脚插在同一竖排的的5个空中,LED 另外一端插在旁边的一排,用一根导线将LED的短脚连接到地线。
- 用电阻另外一段连接5V (高电平),然后断开,再连接GND (低电平)
Blink 闪一闪
不用手,而用Arduino来控制LED的开关。
- 把活动4当中的电路中悬空的电阻插在另外一个竖排中,在用导线连接到13号插槽。
- 打开Arduino的范例程序 File -> Examples -> Basics -> Blink
- 点击 "Upload" 按钮上传程序
- 改变程序中 delay 里面的数字并重新上传
- 改变程序中的 pin 号码,尝试用其他输出接口来控制LED
Arduino 程序简介
- setup 是一个会在每次程序开始的时候会调用一次的函数,用来初始化程序需要的设置
- loop 是一个会被循环调用的函数,周而复始
- pinMode 是指如何使用某个接口,可以是INPUT (输入模式),OUTPUT(输出模式)
- digitalWrite 可以让一个是输出模式的接口输出 HIGH(高电平)或LOW(低电平)
再闪一闪
使用下面的程序(改写活动5中的程序)
void setup() { pinMode(11, OUTPUT); } void loop() { for(int i = 0; i < 255; i++){ analogWrite(11, i); delay(10); } delay(1000); for(int i = 255; i > 0; i--){ analogWrite(11, i); delay(10); } delay(1000); }
- 点击 "Upload" 按钮上传程序
- for 是最简单的一种循环
- analogWrite 能够使用某些端口输出PWM(脉宽调制)信号,脉宽调制是指在输出的信号中控制方波的占空比,比如当某端口输出100的pwm, 100/255 ~ 39%的时间该输出端口为高电平,61%的时间为低电平,高低电平间高速交替。
- ++, --, 让一个变量增加1,和减少1
串口通信
Arduino 默认带有串口通信,能够和电脑或其他串口设备通信。
使用下面程序
void setup() { Serial.begin(9600); } void loop() { int count = 0; int change = 1; Serial.print("I am counting "); Serial.println(count); if(count >= 20){ change = -1; } if(count <= 0) change = 1; count = count + change; delay(200); }
- 点击 "Upload" 按钮上传程序
- if 用来执行条件语句,只有当括号()中的条件为真时,其随后的单句或大括号中的命令才会被执行
- Serial 需要先在setup函数中设定传输速度,然后可以通过print/println来输出数字或文字
- 变量是一个能够记录数据,并且能够通过程序改变其记录的数据。
舵机
按图片连接舵机
- 打开例子 File -> Examples -> Servo -> Sweep
- 点击 "Upload" 按钮上传程序
- #include 能够让我们引用一些已经准备好的库程序
- 与Serial不同,我们可以通过建立多个Servo变量,并分配不同的接口来控制多个舵机
- servo.write 接受 0~180之间的数值代表需要舵机转向的角度