Arduino知识点
Arduino总结

Arduino总结一、基本知识1、概述:Arduino 是一款便捷灵活、方便上手的开源电子原型平台,它包含硬件(各种型号的arduino板)和软件(arduino IDE).它可以与各种各样的电子器件连接来感知外界的环境,而又可以通过其他电子器件来反馈、影响环境。
它们是通过板子上的微控制器Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器进行控制。
2、特点:○1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。
○2、使用低价格的微处理控制器(AVR系列控制器)○3、可以采用USB接口供电,也可以使用外部供电○4、可以与各种各样的电子元器件连接(例如:开关、电阻)○5、支持各种互动程序3、功能由于Arduino与Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。
Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。
Arduino也可以独立运行,并与软件进行交互,例如:Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件。
所以可以做出许多互动作品,它适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。
二、应用实例1、用开关控制LED灯显示○1、硬件连接图将数字引脚2连接开关的一端,并用一根导线连接实验板的5v电压,开关另一端接一个电阻,并与主控板的GND相连接。
○2、原理用开关的控制LED灯,当开关按下去的的时,2号引脚为高电平,如果读到2号引脚为高电平,则13号引脚写入高电平,LED灯就亮,反之则灭。
○3、软件代码实现void setup(){pinMode(13, OUTPUT);//13引脚为输出模式pinMode(2, INPUT);//2号引脚为输入模式}void loop()//循环显示{if (digitalRead(2)==HIGH )//如果2号引脚为高 digitalWrite(13, HIGH); // set theLEDon elsedigitalWrite(13, LOW); // set the LED off}○4、实验总结运用主控制板的数字输入输出引脚连接外部电子器件可已实现不同的功能。
arduino 常用函数

Arduino常用函数一、什么是ArduinoArduino是一种开源电子原型平台,用于设计和制造通过电子和软件创建的交互式项目。
它基于易于使用的硬件和软件,由全球广大的创客共同开发和改进。
Arduino平台非常适合创造独具创意的自动化装置、机器人、传感器以及其他物联网相关的项目。
二、常用函数概述Arduino提供了丰富的库函数和内置函数,以简化开发过程。
这些函数涵盖了各种常见任务,如控制IO口、读取传感器数据、与外部设备通信等。
在本文中,我们将介绍几个常用的Arduino函数。
三、DigitalWrite函数1. 函数概述digitalWrite()函数用于设置数字引脚的电平。
通过该函数,可以将数字引脚设置为高电平(高电压)或低电平(低电压),从而控制相应的设备。
2. 函数语法digitalWrite(pin, value);3. 函数参数•pin:要设置电平的引脚编号。
•value:引脚的电平,可选值为高电平(HIGH)和低电平(LOW)。
4. 示例下面的示例演示了如何使用digitalWrite()函数控制LED灯亮灭:int ledPin = 13; // LED连接的引脚void setup() {pinMode(ledPin, OUTPUT); // 将引脚设置为输出模式}void loop() {digitalWrite(ledPin, HIGH); // 设置引脚为高电平,LED灯亮起delay(1000); // 延迟1秒digitalWrite(ledPin, LOW); // 设置引脚为低电平,LED灯熄灭delay(1000); // 延迟1秒}四、AnalogRead函数1. 函数概述analogRead()函数用于读取模拟引脚的电压值。
通过该函数,可以获取传感器等模拟设备的输出电压,并进行相应的处理。
2. 函数语法analogRead(pin);3. 函数参数•pin:要读取电压的引脚编号。
arduino 原理

arduino 原理Arduino原理及其应用Arduino是一种开源硬件平台,是由意大利开发的一种基于简化版的ATmega微控制器的单片机开发板。
它具有不同于传统单片机的开发方式,操作简单、方便、开发效率高,并拥有广泛的应用领域。
本文将从以下四个方面介绍Arduino原理和其应用。
一、Arduino原理1.硬件部分Arduino的硬件部分包括电路板、控制器、电源和输入输出模块等。
其中,微控制器是控制Arduino板的核心部件,常用的型号如ATmega328P、ATmega2560等。
除此之外,Arduino板上还有电子元件如晶振、电容、电阻等,它们是搭建Arduino的必要组成部分。
2.软件部分Arduino的软件部分包括 IDE(集成开发环境)和编译器等。
IDE 是用于编写和上传Arduino代码的开发工具,编译器负责将代码转换为可执行文件。
二、Arduino应用1.嵌入式系统Arduino板可以作为嵌入式系统的控制器,应用在智能小屋、机器人、智能家居等领域。
2.互联网应用Arduino板可以与网络连接起来,例如通过WiFi和ESP8266等模块,可以实现远程控制和监控。
它还可以用于信息搜集,例如声音、传感器等,从而实现互联网的应用。
3.艺术创作因为Arduino板的开发与使用非常容易,所以它成了艺术创作的实用工具。
艺术家可以使用Arduino来创造交互式艺术品。
4.教育Arduino板以其开源、价格低廉、容易上手而成为教育领域的一个重要组成部分,它可以让学生了解和学习物理、计算机等方面的知识。
三、Arduino的优缺点1.优点Arduino平台的出现大大降低了学习和开发嵌入式系统的门槛,其开源的特性使其具备了丰富的资源和灵活性,加上兼容性好、功能强、硬件简单等优点,使其成为无数创客的首选开发平台。
2.缺点Arduino的运行速度相对较慢,对于要求高速数据处理的应用场景不太适用。
此外,Arduino板上的外设资源相对较为有限,无法满足某些高端应用需求。
ardiuno开发板基础知识 (2)

•noInterrupts() 禁止中断
05
Led灯亮度调节实验
5、Led灯亮度调节实验(1) 实验目的 1.通过pwm控制led灯的亮度实验加深对开发板的认识。 2.通过pwm控制led灯的亮度实验学会对开发板的简单编程 实验效果 不断按下按键1,led灯不断变亮;不断按下按键2,led灯不断变暗 实验环境 1.硬件:1块ardiuno开发板、 1根USB下载线、1个led二极管、1块面 包板、 3个10k欧姆电阻、2个按键、跳线若干、1台PC机; 2. 软件:Windows 7/XP、Arduino IDE软件
1. 什么是arduino
特点: 1)跨平台:支持Windows、Macintosh OS X、Linux三大主 流操作系统
2)简单清晰:开发语言和开发环境都非常的简单、易理解,非
常适合初学者学习。 3)开放性:Arduino的硬件原理图、电路图、IDE软件及核心 库文件都是开源的2)下载程序简单、方便。 4)发展迅速: Arduino不仅仅是全球最流行的开源硬件,也是
4、常用函数(3)
3)时间函数 •unsigned long millis() 返回时间函数(单位ms),该函数是指,当程 序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。
•delay(ms)
延时函数(单位ms)。
延时函数(单位us)。
•delayMicroseconds(us)
4、常用函数(4) 4)串口收发函数 •Serial.begin(speed) 串口定义波特率函数,speed表示波特率,如9600 ,19200等。 •int Serial.available() 判断缓冲器状态。
5、Led灯亮度调节实验(2) 实验原理 1. PWM 1.1 概念:脉冲宽度调制,是通过调整输出信号的占空比来达到输出电压值改变的目的。 1.2 函数使用:Arduino的PWM频率约为500Hz,每个绿线之间表示2ms。一个 analogWrite()的调用区间为0- 255,例如analogWrite(255)需要100%占空比 (常开),analogWrite(127)是50%占空比(上一半的时间)。
[Arduino]基础知识
![[Arduino]基础知识](https://img.taocdn.com/s3/m/6016d2f99f3143323968011ca300a6c30c22f126.png)
[Arduino]基础知识官⽹什么是 Arduino 的 bootloader?在arduino的板⼦上,作为核⼼的avr单⽚机往往都会烧录⼀个bootloader,这个叫做bootloader的东东其实是arduino研发团队针对arduino板⼦开发的⼀⼩段代码,借助于这段代码,我们可以在不⽤外部烧录⼯具的情况下来把我们⾃⼰的代码下载到AVR单⽚机中。
为了使⼀些朋友更容易理解,不妨打个⽐⽅,bootloader类似于我们电脑中的windows操作系统,⽽我们的代码则类似于运⾏于windows上的各种程序。
⼀般⽽⾔,arduino板的卖家都会把每块板的bootloader都烧好后再出售,这样买家直接收到板后就能够把⾃⼰在arduinoIDE中编写的程序借助PC的USB⼝来下载到arduino单⽚机内。
当然,下载bootloader是需要借助于外部下载器的,可⽀持的下载器不少,基中⽐较具有性价⽐的是usbtinyisp,在淘宝上很多店家都有出售,⽐如易捷机器⼈电路的价格就只有38元。
对于⼀般⽤户,因为在下载⾃⼰代码的时候偶尔会出现破坏bootloader的情况,就像PC的windows系统突然之间崩溃了⼀样。
这时候,就会需要⽤外部下载器来恢复这个bootloader,就相当于PC重装系统。
Arduino 中 serial.available() 和 serial.read() 的使⽤?Serial.available() 指返回串⼝缓冲区中当前剩余的字符个数。
⼀般⽤这个函数来判断串⼝的缓冲区有⽆数据,当Serial.available()>0时,说明串⼝接收到了数据,可以读取。
Serial.read() 指从串⼝的缓冲区取出并读取⼀个Byte的数据。
⽐如有设备通过串⼝向Arduino发送数据了,我们就可以⽤Serial.read()来读取发送的数据。
典型的⽤法如下:while (Serial.available()>0){data = Serial.read();delay(2);}上⾯代码的意思就是,当串⼝接收到数据时(上⾯Serial.available()>0这句),反复读取串⼝的数据并赋值给data (上⾯data= Serial.read()这句),直到数据读完(即Serial.available()=0的时候)。
Arduino基础知识

Arduino 是一款价格不高、易于使用的电子平台。
包括硬件和软件在内的整个平台是完全开源的,并且使用的是松散地基于C/C++ 的语言。
Arduino 是为希望尝试创建交互式物理对象的实践者、喜欢创造发明的人以及艺术家构建的。
这个三部分系列将从基本的Arduino 硬件开始,并使用它创建名为“'Duino tag”的交互式激光游戏,玩家可以使用几乎从头开始构建的设备玩tag 游戏。
在“构建基于Arduino 的激光游戏”的第1 部分中,我们将构思作为'Duino tag 的一部分的基本预备试验。
开始之前无论您是Arduino 新手还是经验丰富的构建者,此项目都有适合您的内容。
没有比创建交互式物理对象更令人满意的事情了,因为在需要中断或者需要修改时,您知道所有部件的位置以及所有部件的工作原理。
'Duino tag 枪是适合独立完成或与朋友共同完成的优秀项目。
要完成此项目,您至少应当基本了解电子学(您应当知道寄存器是什么,但是不必知道其中的深奥原理)并且了解编程(您应当知道循环和变量是什么,但是您不必解析Big O Notation)。
您可以勇敢地进行动手实践。
关于本系列在本系列中,我们将使用Arduino 技术来创建名为'Duino tag 的基本交互式激光游戏:∙第1 部分:了解一些Arduino 基础知识,布置项目,并且做一个帮助您了解红外线工作原理的实验。
∙第2 部分:构建和测试'Duino tag 枪的接收器部分,包括测试。
∙第3 部分:构建发送器并完成'Duino tag 枪。
关于本教程要继续学习本教程,您无需具有任何电子学工作经验,尽管使用电子元件的经验肯定对您有用。
对于微控制器经验也是如此。
如果您使用过微控制器,则有一定的优势,但是记住Arduino 平台非常适合没有相应经验的人员。
首先,您应当愿意拓展自己的技能。
使用电子器件和微控制器会是一种有益的经验。
Arduino入门教程

Arduino入门教程引言Arduino作为一种开源电子平台,已经广泛应用于各种领域,无论是学习电子基础知识还是 DIY 制作小玩具,Arduino 都是一个不错的选择。
本文将从硬件选购、开发环境搭建、基础编程语言以及实例应用等方面为读者介绍 Arduino 的入门知识。
一、硬件选购对于初学者来说,选择一款合适的 Arduino 开发板是至关重要的。
在市面上有各式各样的 Arduino 开发板可供选择,如 Arduino Uno、Arduino Nano、Arduino Mega等。
首先要考虑的是项目需求,确定所需的输入输出接口、处理器性能和存储容量等因素,然后再选择合适的开发板。
此外,应该选择正版的 Arduino 开发板,以确保质量和稳定性。
二、开发环境搭建在开始编程之前,需要搭建一个 Arduino 集成开发环境(IDE)。
首先,从Arduino 官网上下载最新版本的Arduino IDE,并根据操作系统进行安装。
搭建好开发环境后,可以将 Arduino开发板连接到电脑上,并选择正确的开发板和端口。
通过该IDE,可以编写、上传和调试 Arduino 的代码。
三、基础编程语言Arduino 的编程语言基于C/C++,但相对于传统的C/C++ 语言,Arduino 提供了更为简洁的函数库和接口,使得编程变得更加容易上手。
以下是一些基本语法和函数的介绍:1. 串口通信Arduino 通过串行通信口(Serial)与电脑进行通信。
通过使用Serial.begin() 函数来初始化串口,Serial.print() 和 Serial.println() 函数可用于向串口输出数据。
2. 控制结构Arduino 支持常见的控制结构,如 if 语句、for 循环和 while 循环等,这些控制结构可以用于条件判断和循环控制。
3. 数组和字符串Arduino 支持数组和字符串操作。
可以通过声明数组变量和使用 strcpy()、strcat() 等字符串函数进行操作。
Arduino 基础

小结
• 各种类型的Arduino控制板,其内部资源与外部接口的差别,几乎完全 是由所采用的单片机芯片决定的
• 所以,采用相同单片机芯片的不同Arduino板,在编程开发方面可视为 相同的系统(差别仅是由于电路板结构造成的引脚数量的不同)
• 当前最常用的UNO、NANO均是采用ATmega328单片机,所以它们几 乎是完全相同的
UNO、NANO的输入输出引脚
• UNO、NANO所采用的单片机均是 ATmega328 • UNO、NANO控制板基本上就是ATmega328单片机的“最小系统板”
• 提供单片机运行必须的晶体振荡器(产生CPU主频) • 提供复位电路或按钮 • 引出单片机几乎全部输入输出引脚 • 通过单独的串口转USB芯片,提供USB下载程序接口,同时通过USB
• 模数转换输入引脚 • PWM信号输出引脚
• 这些功能在51单片机系统中要靠外接芯片实现,而ATmega则集成到 了单片机内部,因而功能更强大,构成的系统电路更简洁
P1. 0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RST RXD/ P3. 0 TXD/ P3.1 INT0/ P3.2 INT1/ P3.3
Arduino Robot(机器人、小车控制)
YÚN(Wifi、物联网、Linux系统支持)
ATmega2560
基本型号:Mega 2560 衍生型号: Mega ADK(可通过USB连接安卓系统)
32位
基本型号:ZERO ( ARM Cortex-M0+处理器) 衍生型号:MKR ZERO(ARM Cortex-M0+处理器、SD卡、数字音频接口)
复习:模拟信号与数字信号
• 模拟信号:连续变化 • 数字信号:离散变化(跳变)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IRrecv.decode(&results) 检查是否收到编码,解码信息存入 decode_results 对象 results
IRrecv.resume() 接收下一个编码
IRsend object() 创建 IRsend 类对象
IRsend.sendNEC(data,nbits) 以 NEC 编码格式发送指定值
编写 library
#if ARDUINO >= 100
//版本兼容设置
#include"Arduino.h"
#else
#include"WProgram.h"
#endif
class XXX{
//声明类
private:
public:
}
#ifndef XXX_H
//条件编译命令,判断 XXX_H 是不是已经存在
EEPROM 类库
EEPROM.write(address,value) 对指定地址写入数据,无返回值
EEPROM.read(address) 从指定地址读数据,若无数据,则读出 255
union date
共用体类型,将大于 1B 的数据存到 EEPROM
{
此例将 float 数据存到 EEPROM 中
SPI.end() 关闭 SPI 通信
SPI.transfer(val) val 要发送的字节数据,返回读到的字节数据
shiftOut(datePin,clockPin,bitOrder,value) IDE 自带函数,模拟 SPI 串行输出,无返回
shiftIn(datePin,clockPin,bitOrder) IDE 自带函数,模拟 SPI 串行输入,返回输入数据
lcd.clear() 清屏,光标移到左上角
lcd.home() 光标复位到左上角
lcd.setCursor(col,row) 设置光标到指定位置
lcd.write(data) 输出一个字符到 LCD
lcd.print(data) 输出一串字符到 LCD,返回输出的字符数
lcd.(no)c/Cursor() 显示/隐藏光标
串口监视器中的停止符是在按下“发送”后系统自动发动的
外部中断
LOW/CHANGE/RISING/FALLING 低电平/变电平/上升沿/下降沿触发
attachInterrupt(中断编号,中断函数名(返回 void),中断模式) 初始化中断引脚
detachInterrupt(中断编号) 禁用外部中断
Serial.setTimeout(time) 设置超时(等待串口数据)时间,与前两个函数配合使用
Serial.write(val/str/(buf,len)) 以字节形式输出数据到串口,返回输出的字节数
ps:对于 MEGA,Serial 包括 Serial,Serial1,Serial2,Serial3,Serial4
以上 file 为一个 File 类对象
定义一个 File 对象 myFile,再用 myFile = SD.open()打开文件,此文件就和 myFile 关联了
IRremote 类库
IRrecv object(recvPin) 构造函数,创建一个红外接收头对象,recvPin 连到接收头引脚
IRrecv.enableIRIn() 初始化红外解码
float a;
读写的时候是对 c.b[i]操作,输出或其他是对 c.a 操作
byte b[4];
}
date c;
SD 卡类库
对 SD 卡中的文件进行操作,用 SD 类
对 SD 卡文件中的具体内容操作用 file 类
SD.begin(csPin) csPin 为输出模式,连到 SD 卡使能端,返回 true/false
Serial.find(target) 在缓冲区中搜索 target,找到返回 true,否则返回 false
Serial.findUntil(target,terminal) 搜索 target 直至 terminal,无返回值
Serial.flush() 等待正在发送的数据发送完成
Serial.peek() 返回但不删除一字节数据
#define 常量名 常量值
% 取模运算符
String abc / char abc[n] 定义字符串
pinMode(pin,mode); 用于引脚的初始化 mode 包括 INPUT/OUTPUT/INPUT_PULLUP
Arduino 数模转换器有 10 位精度,可以将 0-5V 转换为 0-1023,仅用于 analogRead(pin)
analogWrite(n) 写的并不是真正的模拟信号,而是占空比不同的方波:电压=占空比×5V,
n∈(0,255),PWM(脉冲宽度调制)波
millis()/micros() 获取系统通电或复位后的运行时间,单位是毫秒/微秒
当引脚悬空时,其电压值处于不定状态,故要根据电压值进行其他操作时应避免悬空
String += (char)Char 将 Char 添加到 String 后面
void serialEvent() 串口事件,在串口缓冲区有数据时触发,实际是运行在两次 loop 之间
软件模拟串口通信
SoftwareSerial mySerial(rxPin.txPin) 构造函数,创建一个软串口
mySerial.listen() 开启软串口监视状态,一个时刻只能监视一个软串口
mySerial.isListening() 判断是不是处在监视状态
mySerial.overflow() 检测缓冲区是不是已经溢出
其他函数和硬串口一样
IIC 总线与 Wire 类库函数
Wire.begin(none/address) 以主机/从机模式加入 IIC 总线
IRsend.sendRaw(buf,len,hz) 以原始编码格式发送信号
result.value 是接收到的编码数据
LiquidCrystal 类库
LiquidCrystal(rs,(rw),enable,(d0,d1,d2,d3),d4,d5,d6,d7) 初始化 LCD
lcd.begin(cols,rows) 设置显示器的宽度和高度
SD.mkdir(filename) 创建某文件夹,返回 true/false
SD.rmdir(filename) 移除某空文件夹,返回 true/false
file.available() 检查并返回当前文件中可读的字节数
file.close()
关闭某文件
file.peek()
读取当前字节,但并不移动到下一字节
Wire.onRequest(myHandler2) 从机的函数,主机 requestFrom 后 myHandler2 被触发
其中:void myHandler1(int numBytes) void myHandler2() numBytes:主机发送的字节数
SPI 总线与 SPI 类库函数
SPI.begin() 初始化 SPI 通信
Serial.print(value,format) 以 ASCII 码格式输出数据
Serial.read() 读取并删除一字节数据
Serial.readBytes(buffer,length) 读取 length 长度的数据并存入 buffer
Serial.readBytesUntil(character,buffer,length)
Wire.requestFrom(address,quantity,stop)主机向从机发送数据请求,stop:true 释放 IIC
Wire.beginTransmission(address) 告诉某从机主机要向它发送数据
Wire.endTransmission(none/stop) 告诉从机数据发送完毕,stop:true 释放 IIC
#define XXX_H
.
.
.
#endif
#include"XXX.H"
//编写 cpp 文件,注意应加上版本兼容语句
XXX::XXX()
返回类型 XXX::other_func()
func_name1 KEYWORD1 //关键字高亮显示
func_name2 KEYWORD2
ቤተ መጻሕፍቲ ባይዱ
硬件串口(UART)通信
两个设备 TX 与 RX 交叉连接,GND 相连
在 MEGA 上 USB 口是和引脚 0,1 连在一块的
Serial.available() 返回串口接收缓冲区的字节数
Serial.begin(speed,config) 初始化串口,speed 波特率,config 数据、校验、停止位
Serial.end() 释放串口通信引脚,使其作为普通引脚
lcd.(no)b/Blink() 开启/关闭光标闪烁
lcd.(no)d/Display() 开启/关闭 LCD 显示功能
lcd.scrollDisplayLeft/Right() 向左/右滚屏
lcd.(no)a/Autoscroll() 开启/关闭自动滚屏
lcd.createChar(num,data) 创建自定义字符,num 自定义字符编号,data 像素数据
file.position() 获取“光标”在当前文件中的位置
file.print(date,FORMAT) 以某格式输出数据到文件
file.seek(position) 将“光标”移到某一位置
file.size()
获取文件大小
file.read()
读取 1B 数据
file.write(date/(buf,len)) 写入数据到文件
Wire.write(value/string/(date,length)) 主机从机间发送数据