arduino学习笔记

合集下载

Arduino整理学习笔记

Arduino整理学习笔记

而当使用write()函数时,Arduino发送的是数值本身。

但是串口监视器接收到数据后,会将数值当做ASCLL码而显示其对应的字符。

总而言之,print是转换成ASCLL码才能发出去,就相当于中间介质。

而write是直接发送数据,不需要中间介质。

#define led1 9#define led2 8char val = '1';void setup() {Serial.begin(9600);pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);}void loop() {if(Serial.available())val = Serial.read();if(val == '9'){digitalWrite(led1,HIGH);delay(1000);}elsedigitalWrite(led1,LOW);if(val == '8'){digitalWrite(led2,HIGH);delay(1000);}elsedigitalWrite(led2,LOW);}蓝牙模块:void setup(){Serial.begin(9600);}void loop(){while(Serial.available()){char c=Serial.read();if(c=='A'){Serial.println("Hello I am amarino");}}}2018.10.30下午建立多个软串口://主机程序#include <SoftwareSerial.h> SoftwareSerialportOne(2, 3); SoftwareSerialportTwo(4, 5);int mark,mark1;void setup(){Serial.begin(9600);while (!Serial){ }portOne.begin(9600);portTwo.begin(9600);}void loop(){//监听1号软串口portOne.listen();if(portOne.available()){Serial.println("Data from port one:"); delay(500); mark=1;}if(mark==1){int inByte1 = portOne.read();delay(2);Serial.println(inByte1);delay(1000);mark=0;}//监听2号软串口portTwo.listen();if(portOne.available()){Serial.println("Data from port two:"); delay(500);mark1=1;}if(mark1==1){int inByte2 = portOne.read();delay(2);Serial.println(inByte2);delay(1000);mark=0;}}//从机程序int i=9;void setup(){Serial.begin(9600);pinMode(13,OUTPUT);}void loop() {Serial.write(i); delay(1000);}。

Arduino 学习笔记 _74HC595

Arduino 学习笔记 _74HC595

48
20. 74HC595 实验
实验现象: 利用 74HC595 芯片实现 LED 流水灯效果。
原理与说明:
有时候限于 Arduino 本身的引脚数,无法直接控 制较多的电路。这里介绍一种扩展数字输出的芯片
——74HC595,通过此芯片,可以使用很少的引脚接
收串行信号(也就是 1 个引脚),输出的部分可以变
使用 shiftOut()这个函数的主要原因是我们需要自行输出频率变化。以 74HC595 为例,需要从 Arduino 的 clocckPin(本例中使用 Pin12)输出,这样 74HC595 才能知道 dataPin(本例中使用 Pin11)的正确读取方式。这些说明在 芯片的说明手册中都有提到。这里节录部分来进行说明。
函数 shiftOut(dataPin, clockPin, LSBFIRST, j)的目的在于 1 个执行时间内输出 第 4 个参数 j 的某一个位。1 个字符有 8 个位,若希望从高位(左边)开始,
47
第三个参数设定为 MSBFIRST;若从低位(右边)开始,则设定为 LSBFIRST。前 两个参数只是引脚定义。
74HC595 数据信号时序图 要想更加详细地了解工作原理,可以查阅 SPI(Serial Peripheral Interface)
的工作原理。而点亮的 LED 的位置需要将十进制数字转换为二进制才可以了解。
例如:
153
10011001
这时,应该是 Q0、Q3、Q4 和 Q7 这 4 颗 LED 发光。
功能的实现中使用了一个 Arduino 中的比较特殊的函数 shiftOut(dataPin, clockPin, LSBFIRST, j)。后面会给予介绍。

Arduino学习笔记A1 使用4017数字集成块扩展Arduino开关输入端

Arduino学习笔记A1 使用4017数字集成块扩展Arduino开关输入端

Arduino学习笔记A1 - 使用4017数字集成块扩展Arduino开关输入端使用4017数字集成块扩展Arduino开关阵列--用3个单片机引脚读取10个开关状态使用Arduino做制作,需要有一组开关控制Arduino状态。

但是Arduino引脚不多,传统接法开关多了要占用很多引脚。

减少引脚的方法有很多,可以选矩阵方式,编码器方式,还有本文要介绍的分时复用开关法等。

特点:十个开关占用三个数据引脚,之后每增加十个开关就增加一个引脚。

4017是一块十进制计数器,每输入一个CLK脉冲,Q0~Q9轮流产生高电平。

每时刻有且只有一个引脚高电平。

二极管防止多个开关闭合时,有的输出端输出高电平,有的输出低电平,互相接上的话,会低电平引脚会干扰高电平脚的工作。

开关用10路拨动式小型开关,或者自己选择其他开关形式。

电路工作原理:1.先在RST(4017的复位脚MR)发出一个脉冲,使4017复位。

2.此时有且只有Q0输出高电平(Q0对应开关S1,Q9对应开关S10),读取一次输出信号DATA。

如果第一个开关S1闭合了,应该DATA得到高电平;如果S1断开了,就DATA得到低电平。

此时记DATA结果对应第一个开关S1的状态。

3.给CLK输出一个脉冲,让4017移位,有且只有Q1输出高电平(Q0,Q2~Q9均为低电平)。

读取DATA。

得到S2状态。

4.不断给CLK脉冲。

总共给10次脉冲,让4017由Q0移动到Q9,完成一次开关遍历,每次移动获取一次DATA状态。

存为S1~S10状态。

电路原理图如图:洞洞板图(由于引脚多,不建议面包板制作。

)关于在一块Arduino上使用多块模块:每增加一块模块,可以增加十路开关(当然你也可以使用两块4017做成行列矩阵控制100个开关。

不过那个就属于另外话题了)。

增加的方式是将两块模块的RST,CLK,VCC,GND接在一起,接到单片机的相应引脚,然后两个模块的DATA脚分别接单片机两个IO口。

arduino学习笔记18 - SD卡读写实验

arduino学习笔记18 - SD卡读写实验

本次实验使用arduino驱动SD卡,在SD卡中进行文件读写。

需要说明的是arduino的SD库文件,目前对2G以上的卡支持不是很好,所以推荐大家使用2G包含2G以下的,文件格式使用FAT格式。

这次我是用的是kingmax2G的MicroSD卡。

先看一下硬件连接图把下面代码下载进arduino 控制板 /*此例子展示如果记录三个模拟引脚数值到SD 卡,使用SD 库。

电路部分* 模拟引脚使用模拟口0,1,2大家可以根据情况接入模拟传感器,如果没有,也可以完成此实验,只不过数值是不停跳动的干扰源。

* SD卡与arduino控制板使用SPI总线连接** MOSI - pin 11** MISO - pin 12** CLK - pin 13** CS - pin 4*/#include <SD.h>// CS引脚为pin4,这里也沿用官方默认设置const int chipSelect = 4; //设定CS接口void setup(){Serial.begin(9600); //设置串口通信波特率为9600Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...pinMode(10, OUTPUT);if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not presentSerial.println("Card failed, or not present");return;}Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized.}void loop(){// 定义数组String dataString = "";// 读取三个传感器值,写入数组for (int analogPin = 0; analogPin < 3; analogPin++) {int sensor = analogRead(analogPin);dataString += String(sensor);if (analogPin < 2) {dataString += ",";}}// 打开文件,注意在同一时间只能有一个文件被打开// 如果你要打开另一个文件,就需要先关闭前一个File dataFile = SD.open("datalog.txt", FILE_WRITE);// 打开datalog.txt文件,读写状态,位置在文件末尾。

【Arduino学习笔记05】Arduino数字输入、输出和脉冲宽带调制--小项目:彩色小台灯

【Arduino学习笔记05】Arduino数字输入、输出和脉冲宽带调制--小项目:彩色小台灯

【Arduino学习笔记05】Arduino数字输⼊、输出和脉冲宽带调制--⼩项⽬:彩⾊⼩台灯基本功能:长按控制按钮开机,长按控制按钮关机(>3s)通过三个调节按钮调节灯的颜⾊,每⼀个按钮分别对应R,G,B值模式切换:短按控制按钮切换模式(长亮模式/闪烁模式)元器件清单:Arduino Uno R3⼩号⾯包板跳线10kΩ电阻(×4)220Ω电阻(×3)USB电缆按键(×4)5mm 共阴极 RGB LED知识回顾:(参考书⽬《Arduino魔法书》) 1. 脉冲宽度调制(P25 - P27)PWM的输出可以写⼊数值的范围:0~255PWM的⼯作原理:⽅波(占空⽐的概念)“你并没有改变输送到LED的电压,为何⼜能在降低占空⽐时让LED变暗呢?......如果LED每1ms就开关⼀次,它看起来就是近乎⼀半的亮度,这是因为它闪烁的速度超过了⼈眼能察觉的速度。

因此,⼤脑实际上时平均了这个信号,并欺骗你相信这个LED只有⼀半的亮度。

” 2. 上拉电阻和下拉电阻(P28 ~ P30)没有使⽤下拉电阻的情况按键没有按下时,要读取的输⼊引脚什么也没有接——这个输⼊引脚被称为“悬空”。

由于这个引脚没有实际地接到0V或者5V,读取它时会导致意料之外的结果,因为附近的电⽓噪声会导致其值在⾼低电平之间来回波动。

下拉电阻:将输出端拉⼀根导线连接到地 上拉电阻:将输出端拉⼀根导线连接到电源 3. 按钮的消抖动(P30 ~ P33)1/*2 * 消抖动函数:3 * button: 要消抖动的按钮4 * last: 该按钮的上⼀个状态5 * 返回值:消抖动后读回的按钮状态67 * - 这⾥所谓的消抖动,实际上就是如果检测到电压变化后先不操作,因为可能是抖动阶段的8 * 电压改变,等5m之后再读取当前值,避开抖动阶段。

9 * - 如果没有使⽤消抖动函数,在抖动的过程中电压多次变化,会得到很多次“按钮按下”的10 * 结论,从⽽造成短时间内频繁的开灯关灯。

Arduino学习笔记A5 - Arduino常用的代码编写工具

Arduino学习笔记A5 - Arduino常用的代码编写工具

Arduino学习笔记A5 - Arduino常用的代码编写工具Arduino常用的代码编写工具大家在使用Arduino IDE编写程序的时候,都会觉得Arduino的IDE会有很多不足的地方,比如打开缓慢,不能显示中文,高亮不清晰,Auto Format自动格式化工具不够智能等。

下面我分享一下我自己使用的Arduino代码编写工具,或者不一定是最好的,权当抛砖引玉,欢迎大家多提意见。

代码编写器:Notepad2 MOD我先说一下我选代码编写器的要求:1、有语法高亮功能,这是必须的。

2、软件要轻量,界面要简洁,可以一下子打开很多个窗口方便编辑。

好像UltraEdit这样的界面太复杂了,很多时候功能用不到,而vc++又打开极其缓慢,浪费时间。

3、兼容中文注释,其实这个要求不是重点,只是Arduino的IDE竟然不支持,所以才作为要求。

4、可以把语法高亮方案导出为 HTML、UBB 代码,便于论坛或者网站分享。

5、字体清晰可见,必须是等宽字体,中文必须方正,选择时候不能像一些兼容中文的外国软件,因为字体没选好,选择文本时候会选到半个中文字这样。

最后选择了Notepad2 MOD,下载地址:/software/12201.html。

软件不到1M大,速度跟Windows自带记事本差不多。

但是能满足上面四个要求。

但是Notepad2 MOD默认不识别Arduino和Processing的pde格式高亮。

必须要在软件主菜单-工具-自定义语法高亮方案,选“C/C++源代码”加上pde格式即可。

软件可以关联Windows大部分的文本格式,或者添加右键菜单。

并且都有语法高亮显示。

软件放到一个不会移动的位置,设置好上面的“自定义语法高亮方案”后,在软件主菜单-工具-文件关联设置,即可设置所有支持格式的关联。

我一般直接按“全选”就行了,完全可以替代Windows记事本。

代码格式整理:CoolFormat源代码格式化相信大家都用过Arduino IDE的Auto Format功能。

arduino学习笔记.pdf

arduino学习笔记.pdf

arduino 学习笔记arduino 学习笔记 1 - 什么是 arduino?要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR 指令集的单片机。

1、什么是单片机?它与个人计算机有什么不同?一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU (进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。

在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。

而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。

2、单片机有什么用?实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?应用的关键是看是否够用,是否有很好的性能价格比。

如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。

单片机通常用于工业生产的控制、生活中与程序和控制有关(如:电子琴、冰箱、智能空调等)的场合。

下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。

什么是 Arduino?Arduino 是一个能够用来感应和控制现实物理世界的一套工具。

它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。

Arduino 可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。

Arduino 项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。

Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。

Arduino学习笔记(四)--常用函数

Arduino学习笔记(四)--常用函数

Arduino学习笔记(四)--常⽤函数1、pinMode(pin,Mode):设置引脚的输⼊输出状态Pin:引脚号;Mode:INPUT、OUTPUT2、digitalWrite(pin,value) :设置输出引脚的⾼低电平状态Pin:引脚号;value:HIGH LOW3、int digitalRead(pin):读取引脚的状态,并返回HIGH 或LOWPin:引脚号4、int analogRead(pin):读出模拟引脚上的电压,并以⼆进制数值返回(0~1023)对应为0~5vPin:引脚号5、analogWrite(pin,value):给PWM引脚输出电压值pin:引脚号;value:具体的pwm值,(0~255对应表⽰⼀个周期的⾼电平占空⽐)6、shiftOut(dataPin,clockPin,bitOrder,value):将⼀个字节的数据通过移位的⽅式逐位的输出。

dataPin:数据引脚clockPin:时钟引脚bitOrder:移位顺序(MSBFIRST-⾼;LSBFIRST-低)value:需要进⾏移位传输的值说明:在输出数据时,当⼀位数据写⼊数据输出引脚时,时钟引脚将输出脉冲信号,指⽰该位数据已被写⼊数据输出引脚等待外设读取。

并且在使⽤本函数之前datapin和clockpin引脚应该设置为输出状态。

本函数⼀次只能输出⼀个字节的内容,也就是说最⼤⼀次只能输出255,如果⼤于255,就要多次调⽤这个函数。

7、unsigned long mills():回传单⽚机从开始执⾏到现在⽬前的时间(单位:ms)8、delay( number):占⽤单⽚机的时间(单位:ms)number:其代表占⽤单⽚机的时间长度9、delay Microseconds( number):占⽤单⽚机的时间(单位:us)number:其代表占⽤单⽚机的时间10、pulseIn(pin,state,timeout):读取脉冲宽度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于一些对电路板大小要求比较严格的地方,arduino团队提供了arduino Nano,此板体积做的非常小。如下图:
arduino板子上基本端口如图描述,对几个比较特殊的端口下面详细说明下:
VIN端口:VIN是input voltage的缩写,表示有外部电源时的输入端口。
AREF:Reference voltage for the analog inputs(模拟输入的基准电压)。使用analogReference()命令调用。
硬件开源并可扩展-Arduino板基于Atmel的ATMEGA8和ATMEGA168/328单片机。Arduino基于Creative Commons许可协议,所以有经验的电路设计师能够根据需求设计自己的模块,可以对其扩展或改进。甚至是对于一些相对没有什么经验的用户,也可以通过制作试验板来理解Arduino是怎么工作的,省钱又省事。
ICSP:也有称为ISP(In System Programmer),就是一种线上即时烧录,目前比较新的芯片都支持这种烧录模式,包括大家常听说的8051系列的芯片,也都慢慢采用这种简便的烧录方式。我们都知道传统的烧录方式,都是将被烧录的芯片,从线路板上拔起,有的焊死在线路板上的芯片,还得先把芯片焊接下来才能烧录。为了解决这种问题,发明了ICSP线上即时烧录方式。只需要准备一条R232线(连接烧录器),以及一条连接烧录器与烧录芯片针脚的连接线就可以。电源的+5V,GND,两条负责传输烧录信息的针脚,再加上一个烧录电压针脚,这样就可以烧录了。
Arduino的编程语言就像似在对一个类似于物理的计算平台进行相应的连线,它基于处理多媒体的编程环境。
为什么要使用Arduino?
有很多的单片机和单片机平台都适合用做交互式系统的设计。例如:Parallax Basic Stamp,Netmedia’s BX-24,Phidgets,MIT’s Handyboard和其它等等提供类似功能的。所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:
arduino学习笔记
arduino学习笔记1 -什么是arduino?
要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。
1、什么是单片机?它与个人计算机有什么不同?
一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。
2、单片机有什么用?
实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?应用的关键是看是否够用,是否有很好的性能价格比。如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。
单片机通常用于工业生产的控制、生活中与程序和控制有关(如:电子琴、冰箱、智能空调等)的场合。
Analog I/O模拟输入/输出端口0-5。
支持ICSP下载,支持TX/RX。
输入电压:USB接口供电或者5V-12V外部电源供电。
输出电压:支持3.3V级5V DC输出。
处理器:使用Atmel Atmega168 328处理器,因其支持者众多,已有公司开发出来32位的MCU平台支持arduino。
Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。
性能:
Digita其它平台相比,Arduino板算是相当便宜了。最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。
跨平台-Arduino软件可以运行在Windows,Macintosh OSX,和Linux操作系统。大部分其它的单片机系统都只能运行在Windows上。
简易的编程环境-初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。对于老师们来说,一般都能很方便的使用Processing编程环境,所以如果学生学习过使用Processing编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。
软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVR C编程语言(因为Arduino语言实际上是基于AVR C的)。类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C代码。
下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。
什么是Arduino?
Arduino是一个能够用来感应和控制现实物理世界的一套工具。它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。
Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。
目前arduino的控制板最新的为Arduino Uno,如下图:
国内使用比较多的为Arduino Duemilanove 2009,主要原因是Uno的usb控制芯片封装方式改变,制造成本上升,其他变化不大,性价比还是Arduino Duemilanove 2009比较好。
因其开源特性,生产arduino控制板的厂商众多,同样的Duemilanove 2009就有很多种颜色。
相关文档
最新文档