Arduino
学前必看:
-
软件推荐官方的IDE
-
下载地址:https://www.arduino.cc/en/software
- 硬件版本都可以-教程使用arduino-uno
- 什么是arduino、arduino可以做什么?https://www.arduino.cc/en/Guide/Introduction
- arduino硬件初步了解https://www.arduino.cc/en/hardware
主版介绍
一、电源(*Power*)
Arduino UNO有三种供电方式:
● 通过USB接口供电,电压为5V;
● 通过DC电源输入接口供电,电压要求7~12V;
● 通过电源接口处5V或者VIN端口供电,5V端口处供电必须为5V,VIN端口处
供电为7~12V。
二、指示灯(*LED*)
Arduino UNO带有4个LED指示灯,作用分别是:
● ON,电源指示灯。当Arduino通电时,ON灯会点亮。
● TX,串口发送指示灯。当使用USB连接到计算机且Arduino向计算机传输数据
时,TX灯会点亮。
● RX,串口接收指示灯。当使用USB连接到计算机且Arduino接收计算机传来的
数据时,RX灯会点亮。
● L,可编程控制指示灯。该LED通过特殊电路连接到Arduino的13号引脚,当
13号引脚为高电平或高阻态时,该LED会点亮;当为低电平时,不会点亮。因
此可以通过程序或者外部输入信号来控制该LED的亮灭。
三、复位按键(*Reset Button*)
按下该按键可以使Arduino重新启动,从头开始运行程序。
四、存储空间(*Memory*)
Arduino的存储空间即是其主控芯片所集成的存储空间。也可以通过使用外设芯片的方式来扩展Arduino的存储空间。Arduino UNO的存储空间分三种:
● Flash,容量为32KB。其中0.5KB作为BOOT区用于储存引导程序,实现通过串
口下载程序的功能;另外的31.5KB作为用户储存的空间。相对于现在动辄几百
GB的硬盘,可能觉得32KB太小了,但是在单片机上,32KB已经可以存储很大
的程序了。
● SRAM,容量为2KB。SRAM相当于计算机的内存,当CPU进行运算时,需要
在其中开辟一定的存储空间。当Arduino断电或复位后,其中的数据都会丢失。
● EEPROM,容量为1KB。EEPROM的全称为电可擦写的可编程只读存储器,是
一种用户可更改的只读存储器,其特点是在Arduino断电或复位后,其中的数据
不会丢失。
五、输入*/输出端口(Input/Output* Port****)
如图1所示,Arduino UNO有14个数字输入/输出端口,6个模拟输入端口。其中一些带有特殊功能,这些端口如下:
13
● UART通信,为0(RX)和1(TX)引脚,被用于接收和发送串口数据。这两个
引脚通过连接到ATmega16U2来与计算机进行串口通信。
● 外部中断,为2和3引脚,可以输入外部中断信号。
● PWM输出,为3、5、6、9、10和11引脚,可用于输出PWM波。
● SPI通信,为10(SS)、11(MOSI)、12(MISO)和13(SCK)引脚,可用于
SPI通信。
● TWI通信,为A4(SDA)、A5(SCL)引脚和TWI接口,可用于TWI通信,兼
容IIC通信。
● AREF,模拟输入参考电压的输入端口。
● Reset,复位端口。接低电平会使Arduino复位。当复位键被按下时,会使该端口
接到低电平,从而使Arduino复位。
可以在http://arduino.cc/en/Main/ArduinoBoardUno上找到Arduino UNO更多的相关信息及下载最新的原理图及PCB文件。
实例一(点亮板载13号灯并且闪烁)
void setup() {
// setup中的代码只执行一次:
pinMode(13,OUTPUT);//设定13号引脚模式OUTPUT/INPUT
}
void loop() {
// loop中的代码重复执行:
digitalWrite(13,HIGH);//设定13号引脚高电平
delay(500);//等待500ms
digitalWrite(13,LOW);//设定13号引脚低电平
delay(500);//等待500ms
}
解释:**电平是指电路中两点或几点在相同阻抗下电量的相对比值。
电平可以用来表示电压、电流或功率的相对大小,通常用分贝(dB)作为单位。在数字电路中,电平通常指电压的相对状态,用于表示数字信号的逻辑状态,如高电平或低电平。高电平通常表示为"1"或"H",代表电压较高的状态;低电平表示为"0"或"L",代表电压较低的状态。这种二进制的表示方式广泛应用于计算机、通信系统、自动控制等领域。电平的稳定性对于正确识别和解析数字信号非常重要。
程序中的HIGH/LOW等同于1/0等同于True/False
实例二(按键控制板载13号灯开关--按下亮松开灭)
void setup() {
// setup中的代码只执行一次:
pinMode(3,INPUT);//设定3号引脚按键模式OUTPUT/INPUT
pinMode(13,OUTPUT);//设定板载13号灯的模式
}
void loop() {
boolean flag=digitalRead(3);
//boolean==布尔值,读取3号引脚电平值数据类型为布尔值,按键按下高电平True
digitalWrite(13,flag);
}
解释:boolean布尔值返回结果只有True/Fslse
实例三(按键控制板载13号灯开关--按下开再次按下灭)
void setup() {
// setup中的代码只执行一次:
pinMode(3,INPUT);//设定3号引脚按键模式OUTPUT/INPUT
pinMode(13,OUTPUT);//设定板载13号灯的模式
}
void loop() {
while(1){
if(digitalRead(3)==1){
int flag;
delay(300);
flag++;
digitalWrite(13,flag%2);//取模结果零/非零 非零均为高电平 零低电平
}
}
}
解释:举例1%2 1对2取模结果为1 因为1除2整除不了余1----4%2结果0----5%10结果5
flag++等价于 flag=flag+1
While(1)无限循环
编程中的‘=’是赋值而‘==’是判断等式是否成立
时间有限持续更新中