https://www.cnblogs.com/ticktack/p/8043344.html{
setup()
Arduino控制器通电或复位后,即会开始执行setup() 函数中的程序,该部分只会执行一次。
通常我们会在setup() 函数中完成Arduino的初始化设置,如配置I/O口状态,初始化串口等操作。loop()
在setup() 函数中的程序执行完后,Arduino会接着执行loop() 函数中的程序。而loop()函数是一个死循环,其中的程序会不断的重复运行。
通常我们会在loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等。main函数
在进行Arduino开发时,没有像传统C/C++程序使用入口函数main。实际上main函数存在于Arduino核心库中,且仍然是程序的入口。
Arduino程序中编写的setup和loop函数,都在main函数中调用了。
loop的循环执行,是通过for循环实现的,且每次loop结束后,都会进行串口事件判断,也正是因为这种设计,串口事件不能实时响应。}数字输入输出
{
pinMode(pin, mode)
在使用输入或输出功能前,你需要先通过pinMode() 函数配置引脚的模式为输入模式或输出模式。
通常可用模式有三种:INPUT 输入模式OUTPUT 输出模式INPUT_PULLUP 输入上拉模式int led = 13;pinMode(led, OUTPUT); digitalWrite(pin, value)使用digitalWrite() 让其输出高电平或者是低电平。使用HIGH指定输出高电平,或是使用LOW指定输出低电平。digitalWrite(led, HIGH); // 点亮LEDdigitalRead(pin)返回值为获取到的信号状态,1为高电平,0为低电平。// 变量定义int buttonState = 0; // 存储按键状态的变量buttonState = digitalRead(buttonPin);
}模拟输入输出
在analogWrite() 和analogRead() 函数内部,已经完成了引脚的初始化,因此不用在Setup() 函数中进行初始化操作。
{
analogRead(pin)模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能。参数pin是指定要读取模拟值的引脚,被指定的引脚必须是模拟输入引脚。如analogRead(A0),即是读取A0引脚上的模拟值。Arduino Uno模拟输入功能有10位精度,即可以将0~5V的电压信号转换为0~1023的整数形式表示。analogWrite(pin,value)使用analogWrite() 函数实现PWM输出功能。在Arduino Uno中,提供PWM功能的引脚为3、5、6、9、10、11。参数value指定是PWM的脉冲宽度,范围为0~255。
}高级输入输出
{
tone() 主要用于Arduino连接蜂鸣器或扬声器发声。
tone(pin, frequency) tone(pin, frequency, duration)
pin: 需要输出方波的引脚 frequency: 输出的频率,unsigned int型 duration: 方波持续的时间,单位毫秒。如果没有该参数,Arduino将持续发出设定的音调,直到你改变发声频率或者使用noTone() 函数停止发声。noTone(pin)停止指定引脚上的方波输出。pulseIn() pulseIn(pin, value) pulseIn(pin, value, timeout)
pin:需要读取脉冲的引脚
value:需要读取的脉冲类型,HIGH或LOW
timeout:超时时间,单位微秒,数据类型为无符号长整型。
返回脉冲宽度,单位微秒,数据类型为无符号长整型。如果在指定时间内没有检测到脉冲,则返回0。检测指定引脚上的脉冲信号宽度。例如当要检测高电平脉冲时,pulseIn() 会等待指定引脚输入的电平变高,当变高后开始记时,直到输入电平变低,停止计时。pulseln() 函数会返回这个脉冲信号持续的时间,即这个脉冲的宽度。函数还可以设定超时时间。如果超过设定时间,仍未检测到脉冲,则会退出pulseIn()函数并返回0。当没有设定超时时间时,pulseIn() 会默认1秒钟的超时时间。attachInterrupt(pin, ISR, mode)对中断引脚进行初始化配置,以开启Arduino的外部中断功能pin:中断引脚ISR:中断函数名mode:中断模式 attachInterrupt(2, Hello, LOW); 该语句会开启Arduino Uno的 2号引脚(中断编号0)的外部中断功能,并指定下降沿时触发该中断。当2号引脚上电平由高变低后,该中断会被触发,Arduino即会运行Hello() 函数中的语句。 detachInterrupt(pin)pin:需要禁用中断的引脚。如果你不需要使用外部中断了,你可以用中断分离函数detachInterrupt() 来关闭中断功能。 }时间控制
{
使用运行时间函数millis(),能获取Arduino通电后(或复位后)到现在的时间大概运行50天后,运行时间会溢出,溢出后会从新从0开始计数millis()
获取Arduino通电后(或复位后)到现在的时间,单位毫秒ms 返回系统运行时间,单位毫秒micros()
获取Arduino通电后(或复位后)到现在的时间,单位微秒us 返回系统运行时间,单位微秒。delay( ms)此函数为毫秒级延时。参数为时长,类型unsigned longdelayMicroseconds( us )此函数为微秒级延时。参数为时长,类型unsigned int
Arduino Uno上的延时操作精度为+-0.5微秒。
}串口通信
{
使用串口与计算机通信,需要先使用Serial.begin() 初始化Arduino的串口通信功能Serial.begin(speed) http://wiki.arduino.cn/?file=005-%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1/001-begin参数speed是指串口通信波特率Arduino串口通信通常会使用以下波特率:300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 Serial.begin(speed)Serial.begin(speed, config) config:数据位、校验位、停止位配置串口初始化完成后,我们便可以使用Serial.print() 或Serial.println() 向计算机发送信息了。
Serial.print(val)
val是你要输出的数据,各种类型的数据均可Serial.println(val)
println会在输出完指定数据后,再输出一组回车换行符接收串口数据需要使用Serial.read()函数。
调用该语句,每次都会返回一个字节的数据,这个返回值便是当前串口读取到的数据。串口其他函数:http://wiki.arduino.cn/?file=005-%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1/004-%E5%85%B6%E4%BB%96%E5%87%BD%E6%95%B0 1.available()
2.begin()
3.end()
4.find()
5.findUntil()
6.flush()
7.parseFloat()
8.parseInt()
9.peek()
10.print()
11.println()
12.read()
13.readBytes()
14.readBytesUntil()
15.setTimeout()
16.write()软串口
SoftwareSerial() listen() isListening() end() overflow() http://wiki.arduino.cn/?file=005-%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1/005-%E8%BD%AF%E4%B8%B2%E5%8F%A3
}EEPROM
{
向EEPROM空间指定地址写入1字节数据
EEPROM.read(addr)
EEPROM.clear()
}USB驱动库
{
模拟键盘
1.Keyboard.begin()
2.Keyboard.end()
3.Keyboard.press(char)
4.Keyboard.print()
5.Keyboard.println()
6.Keyboard.release()
7.Keyboard.releaseAll()
8.Keyboard.write()
9.注意事项
模拟鼠标
Mouse.begin()
Mouse.click()
Mouse.end()
Mouse.move()
Mouse.press()
Mouse.release()
Mouse.isPressed()
}Arduino UNO数据手册
{"Uno" 在意大利语中意思是“一”。Arduino UNO是Arduino系列的一号开发板Arduino UNO是基于ATmega328P的Arduino开发板。它有14个数字输入/输出引脚(其中6个可用于PWM输出)、6 个模拟输入引脚,一个16 MHz的晶体振荡器,一个USB接口,一个DC接口,一个ICSP接口,一个复位按钮。它包含了微控制器所需的一切,你只用简单地把它连接到计算机的USB接口,或者使用AC-DC适配器,再或者用电池,就可以驱动它。技术参数
型号 Arduino UNO
微控制器 ATmega328P
工作电压 5 V
输入电压(推荐) 7-12 V
输入电压(极限) 6-20 V
数字I/O引脚 14
PWM通道 6
模拟输入通道(ADC) 6
每个I/O直流输出能力 20 mA
3.3V端口输出能力 50 mA
Flash 32 KB(其中引导程序使用0.5 KB)
SRAM 2 KB
EEPROM 1 KB
时钟速度 16 MHz
板载LED引脚 13
长度 68.6 mm
宽度 53.4 mm
重量 25 g可通过Arduino IDE对Arduino UNO编程。
在Arduino UNO使用ATmega328 芯片上,存储有bootloader程序,使得用户可以上传程序到开发板上,而不需要使用额外的编程器。这个上传程序的过程使用STK500协议完成。
你也可以不使用bootloader,通过ICSP接口连接编程器给Arduino UNO上传程序。Arduino Uno上有一个自恢复保险丝,当短路或过流时,电流超过500mA,其可以自动断开供电,从而保护计算机的USB端口和Arduino。
可以通过USB口或者直流电源座给Arduino Uno供电。Arduino UNO带有自动切换电源功能。数字输入输出引脚{
Arduino Uno有14个数字输入输出引脚,可使用 pinMode()、digitalWrite() 和 digitalRead() 控制。
其中一些带有特殊功能,这些引脚如下:Serial:
0(RX)、1(TX),被用于接收和发送串口数据。这两个引脚通过连接到ATmega16u2来与计算机进行串口通信。外部中断:
2、3,可以输入外部中断信号。中断有四种触发模式:低电平触发、电平改变触发、上升沿触发、下降沿触发。PWM输出:
3、5、6、9、10、11,可用于输出8-bit PWM波。对应函数 analogWrite() 。SPI:
10(SS)、11(MOSI)、12(MISO)、13(SCK),可用于SPI通信。可以使用官方提供的SPI库操纵。L-LED:
13。13号引脚连接了一个LED,当引脚输出高电平时打开LED,当引脚输出低电平时关闭LED。TWI:
A4(SDA)、A5(SCL)和TWI接口,可用于TWI通信,兼容I²C通信。可以使用官方提供的Wire库操纵。
}模拟输入引脚{
Arduino Uno 6个模拟输入引脚,可使用analogRead()读取模拟值。每个模拟输入都有10位分辨率(即1024个不同的值)。默认情况下,模拟输入电压范围为0~5V,可使用 AREF引脚和analogReference()函数设置其他参考电压。相关引脚如下:AREF:
模拟输入参考电压输入引脚。Reset:
复位端口。接低电平会使Arduino复位,复位按键按下时,会使该端口接到低电平,从而让Arduino复位。
}指示灯{
Arduino UNO带有4个LED指示灯,作用分别如下:ON:
电源指示灯。当Arduino通电时,ON灯会点亮。TX:
串口发送指示灯。当使用USB连接到计算机且Arduino向计算机传输数据时,TX灯会点亮。RX:
串口接收指示灯。当使用USB连接到计算机且Arduino接收到计算机传来的数据时,RX灯会点亮。L:
可编程控制指示灯。该LED通过特殊电路连接到Arduino的13号引脚,当13号引脚为高电平或高阻态时,该LED 会点亮;低电平时,不会点亮。可以通过程序或者外部输入信号,控制该LED亮灭。
}
}Dfrobort的语音模块
voice 博哥零基础教你玩转ESP8266 https://www.arduino.cn/thread-81478-1-1.html微信公众号 https://www.arduino.cn/thread-7368-1-1.html Arduino通过W5100扩展板ESP8266
{
ESP8266是我个人比较喜欢的一款wifi模块,重要是价格便宜。用户通过它可以实现一些网络操作。
原厂主打有ESP8266-01系列,-07系列,-12系列,和-13系列。目前来说,我个人比较喜欢ESP8266-12E这款,GPIO口多 除了当wifi模块,因为其内置了32位处理器,也可以进行二次开发。我们同时可以把ESP8266模块当做是Arduino+wifi功能来开发;WiFi有三种工作模式:Station模式、AP模式、AP兼Station模式;目前市面上有3种开发方式:1.使用AT模式 单片机通过串口用AT指令来实现wifi连接,例如arduino uno + esp8266.2.使用NodeMcu固件,加入LUA语言,楼主表示不懂这个LUA语言3.Arduino直接编程(Arduino core for ESP8266),原理还是在SDK基础上开发,不过已经封装为我们熟知的Arduino语言(不需要Arduino硬件,利用Arduino平台来编译8266的源码),这个是整个系列编码的前提环境;ESP8266的三种工作模式:1. Station模式; Station(STA)模式用于将ESP8266模块连接到热点2. AP模式;(soft-AP) 将ESP8266模块作为接入点建立Wi-Fi网络,供其他Station模式的模块连接进来3. AP兼Station模式; 以上两种模式的整合库:
1. 名字里面带Secure、SSL、TLS的,跟安全校验有关,俗称https(不要告诉我你没用过);
2. 名字里面带Client的,跟客户端有关;
3. 名字里面带Server的,跟服务端有关;
4. 名字里面带8266的,你可以理解为针对ESP8266的代码封装;
5. 名字里面带Scan的,跟wifi扫描有关;
6. 名字里面带STA的,跟ESP8266 Station模式有关;
7. 名字里面带AP的,跟ESP8266 AP模式有关;
}