玩转Arduino合集
Arduino入门到精通例程20-1602液晶
Arduino 入门到精通 例程201602液晶实验本次试验使用arduino直接驱动1602液晶显示文字1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的IC,所以特性上基本都是一致的。
1602LCD主要技术参数显示容量为16×2个字符;芯片工作电压为4.5~5.5V;工作电流为2.0mA(5.0V);模块最佳工作电压为5.0V;字符尺寸为2.95×4.35(W×H)mm。
1602液晶接口引脚定义接口说明:1、两组电源 一组是模块的电源 一组是背光板的电源 一般均使用5V供电。
本次试验背光使用3.3V供电也可以工作。
2、VL是调节对比度的引脚,串联不大于5KΩ的电位器进行调节。
本次实验使用1KΩ的电阻来设定对比度。
其连接分高电位与低电位接法,本次使用低电位接法,串联1KΩ电阻后接GND。
3、RS 是很多液晶上都有的引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。
4、RW 也是很多液晶上都有的引脚 是读写选择端该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。
5、E 同样很多液晶模块有此引脚 通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。
6、D0—D7 8 位双向并行总线,用来传送命令和数据。
7、BLA是背光源正极,BLK是背光源负极。
1602液晶的基本操作分以下四种:下图就是1602液晶实物图1602直接与arduino通信,根据产品手册描述,分8位连接法与4位连接法,咱们先使用8位连接法进行实验。
硬件连接方式如下图代码如下int DI = 12;int RW = 11;使用数组来定义总线需要的管脚int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//int Enable = 2;void LcdCommandWrite(int value) {// 定义所有引脚int i = 0;总线赋值for (i=DB[0]; i <= DI; i++) //{因为1602液晶信号识别是D7-D0(不是D0-D7),这里是用来反 digitalWrite(i,value & 01);//转信号。
Arduino电路控制入门教程
Arduino电路控制入门教程第一章:Arduino简介Arduino是一款开源电子平台,将硬件和软件相结合,用于创建各种电子项目。
它基于开放式软、硬件设计,非常适合初学者和专业人士。
Arduino的优势在于其易用性、可扩展性和灵活性,使其成为学习和实践电路控制的理想工具。
第二章:Arduino基础知识2.1 Arduino硬件组成Arduino主板包括一个微控制器,具有多个数字和模拟输入/输出引脚。
此外,还有一个USB接口用于与计算机通信,以及用于供电和编程的连接器。
2.2 Arduino编程语言Arduino使用C/C++编程语言,开发者可以使用Arduino IDE (集成开发环境)进行编码。
Arduino语言基于Wiring语言,具有简单易学的特点,适合初学者。
第三章:Arduino基本操作3.1 安装Arduino IDE下载Arduino IDE并根据安装向导进行安装。
启动IDE后,用户可以选择Arduino板型及端口。
3.2 第一个Arduino项目编写一个简单的程序来控制Arduino上的LED灯。
使用digitalWrite函数控制引脚的电平,通过设置为HIGH或LOW来打开或关闭LED灯。
第四章:数字输入与输出4.1 数字输入使用digitalRead函数读取数字输入引脚上的状态。
通过判断引脚为HIGH还是LOW,可以实现不同的应用,如按键检测或传感器数据获取。
4.2 数字输出使用digitalWrite函数控制数字输出引脚的状态。
通过设置引脚为HIGH或LOW,可以控制外部电路的开关状态,实现各种控制任务。
第五章:模拟输入与输出5.1 模拟输入Arduino具有一些模拟输入引脚,可以通过analogRead函数读取引脚上的模拟电压值。
这对于读取传感器数据或监测环境变量非常有用。
5.2 模拟输出Arduino可以通过PWM(脉宽调制)方式在数字输出引脚上生成模拟电压。
analogWrite函数可以设置引脚上的占空比,从而控制输出电平的变化。
arduino创意作品及代码
arduino创意作品及代码Arduino创意作品及代码Arduino是一款开源电子原型平台,被广泛应用于各种创意项目和学术研究中。
Arduino的强大之处在于其简单易用的编程语言和丰富的开源代码库,使得人们可以快速地构建各种各样的电子设备和机器人等。
下面我将介绍几个我自己设计的Arduino创意作品及其代码:1.智能热水壶这是一款可以远程控制的智能热水壶。
通过连接WiFi模块,用户可以使用手机APP控制热水壶的开关和温度设置。
热水壶内置感温电阻,可以通过Arduino读取水温并控制加热。
代码如下:```#include <ESP8266WiFi.h>#include <ESP8266WiFiMulti.h>#include <WiFiClient.h>#include <WiFiManager.h>#define heaterPin D1#define tempSensorPin A0ESP8266WiFiMulti WiFiMulti;float temperature; // 水温float targetTemperature = 60; // 目标温度void setup() {pinMode(heaterPin, OUTPUT);Serial.begin(115200);WiFiManager wifiManager;wifiManager.autoConnect("HotPot");}void loop() {temperature = readTemp(); // 读取水温if (temperature < targetTemperature) { digitalWrite(heaterPin, HIGH); // 开启加热 } else {digitalWrite(heaterPin, LOW); // 关闭加热}}float readTemp() {int sensorValue = analogRead(tempSensorPin);float voltage = sensorValue * (3.3 / 1023.0);float temperature = (voltage - 0.5) * 100;return temperature;}```2.智能花盆这是一款可以自动浇水的智能花盆。
学好Arduino编程,从新手到达人系列(一)
学好Arduino编程,从新手到达人系列(一)作者:来源:《电脑报》2018年第44期随着Arduino开源硬件的流行,越来越多非工程背景的人士能轻松借助Arduino来快速实现自己的创意,成为名副其实的创客。
如今,Arduino也逐渐走入了中国的校园,越来越多的中国学生也因此接触到了图形化的软硬件编程。
Arduino是一款便捷灵活、方便上手的开源电子原型平台。
它由板子大叔(Massimo Banzi)和他的团队创造,Arduino具有跨平台、开放性强、界面简单清晰等特点,被广泛运用于电子元器件的开发控制。
虽然Arduino已经把硬件和软件分离,软件端也做到了底层驱动代码和应用代码的隔离,用户只要学一些简单的入门编程知识,也能够快速上手,但是,代码编程对于大部分青少年来说仍然存在着技术壁垒。
因此,认识和了解简易图形化编程软件,对于想学习图形化编程软件的青少年来说就显得非常有必要了。
一、让Arduino 说出 Hello World!1.Hello World!首先先来练习一个不需要其他辅助元件,只需要一块Arduino 和一根下载线的简单实验,让我们的Arduino 说出“Hello World!”,这是一个让Arduino 和PC 机通信的实验,这也是一个入门实验,希望可以帶领大家进入Arduino 的世界。
2.实验用到的电子原件及电子模块:①Arduino板 1个②USB 数据线我们按照上面所讲的将Arduino 的驱动安装好后,我们打开Arduino 的软件,编写一段程序让Arduino 接收到我们发的指令就显示“Hello World!”字符串,当然你也可以让Arduino 不用接收任何指令就直接不断回显“Hello World!”,其实很简单,一条if()语句就可以让你的Arduino 听从你的指令了,我们再借用一下Arduino 自带的数字13 口LED,让Arduino 接收到指令时LED 闪烁一下,再显示“Hello World!”。
Arduino手把手系列教程
Arduino手把手系列教程Arduino手把手入门系列教程1――什么是Arduino/Arduino是什么Arduino是一块简单、方便使用的通用GPIO接口板,并可以通过USB接口和电脑通信。
作为一块通用IO接口板,Arduino提供丰富的资源,包括:13个数字IO口(DIO数字输入输出口);6个PWM输出(AOUT可做模拟输出口使用);5个模拟输入口(AIN模拟输入)。
Arduino开发使用java开发的编程环境,使用类c语言编程,并提供丰富的库函数。
Arduino可以和下列软件结合创作丰富多彩的互动作品:Flash,Processing,Max/MSP,VVVV。
等。
Arduino也可以用独立的方式运作,开发电子互动作品,例如:开关控制Switch、传感器sensors输入、LED等显示器件、各种马达或其它输出装置。
下面是Arduino的硬件实物图片:Arduino实物图Arduino手把手入门系列教程2――Arduino可以做什么目前计算机的输入和输出设备,大家常见的、也是大家做熟悉的就是:键盘(输入)、鼠标(输入)、麦克(输入)和音响(输出)、显示器(输出);对于一些玩游戏的朋友可能还包括游戏杆(输入),做音乐的可能还会接触到MIDI(输入)。
上述设备都很专业,功能也非常专一。
你没办法让键盘给你唱歌,同样,你也没办法让音响替你输入文本。
Arduino更像是一种半成品,它提供通用的输入输出接口。
你可以通过编程,把Arduino加工成你需要的输入输出设备。
你可以把Arduino做成键盘、鼠标、麦克等输入设备;你也可以把Arduino做成音响、显示器等输出设备。
最重要的是,你可以把Arduino做成任何你希望的互动工具(输入和输出)。
如果你愿意,或者你需要,你完全可做使用Arduino开发出一个会唱歌的键盘或者一个让你的音响替你打字。
(夸张的说法)总之,Arduino是什么,是根据你的需求来确定的。
(完整word版)ARDUINO入门及其简单实验(7例)
ARDUINO入门及其简单实验(7例) (2)1. Arduino硬件开发平台简介 (2)1.1 Arduino的主要特色 (3)1.2 Arduino的硬件接口功能描述 (3)1.3 Arduino的技术性能参数 (4)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (6)2.2 工具栏 (6)2.3 Arduino 语言简介 (7)3. Arduino开发实例中所用部分器件 (9)1. LED简介 (9)2. 光敏电阻简介 (10)3. 直流电机简介 (10)4. 电位器简介 (10)4. Arduino平台应用开发实例 (11)4.1【实作项目一】利用LED作光敏电阻采样实验 (11)4.2【实作项目二】利用PWM信号控制LED亮度 (13)4.3【实作项目三】单键控制一只LED的亮灭 (15)4.4【实作项目四】利用PWM控制直流电机转速 (17)4.5【实作项目五】利用电位器手控LED亮度 (20)4.6【实作项目六】控制LED明暗交替 (22)4.7【实作项目七】利用光敏电阻控制LED的亮灭 (24)ARDUINO入门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。
Arduino既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。
Arduino开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。
如图1和图2所示,分别为Arduino硬件平台的实物图和电路布局图。
Arduino 入门到精通 例程6-抢答器
Arduino 入门到精通例程7抢答器设计实验完成上面的实验以后相信已经有很多朋友可以独立完成这个实验了,本实验就是将上面的按键控制小灯的实验扩展成3 个按键对应3 个小灯,占用6 个数字I/O 接口。
电路连接图原理这里就不多说了同上面实验,下面附上参考原理图和实物连接图。
参考源程序如下:int redled=8; //红色LED 输出int yellowled=7; //黄色LED输出int greenled=6; //绿色LED输出int redpin=5; //红色按键引脚int yellowpin=4; //黄色按键引脚int greenpin=3; //绿色按键引脚int restpin=2; //复位按键引脚定义int red;int yellow;int green;void setup(){pinMode(redled,OUTPUT);pinMode(yellowled,OUTPUT);pinMode(greenled,OUTPUT);pinMode(redpin,INPUT);pinMode(yellowpin,INPUT);pinMode(greenpin,INPUT);}void loop() //按键循环扫描。
{red=digitalRead(redpin);yellow=digitalRead(yellowpin);green=digitalRead(greenpin);if(red==LOW)RED_YES();if(yellow==LOW)YELLOW_YES();if(green==LOW)GREEN_YES();}void RED_YES()//一直执行红灯亮,直到复位键按下,结束循环{while(digitalRead(restpin)==1){digitalWrite(redled,HIGH);digitalWrite(greenled,LOW);digitalWrite(yellowled,LOW);}clear_led();}void YELLOW_YES()//一直执行黄灯亮,直到复位键按下,结束循环{while(digitalRead(restpin)==1){digitalWrite(redled,LOW);digitalWrite(greenled,LOW);digitalWrite(yellowled,HIGH);}clear_led();}void GREEN_YES()//一直执行绿灯亮,直到复位键按下,结束循环{while(digitalRead(restpin)==1){digitalWrite(redled,LOW);digitalWrite(greenled,HIGH);digitalWrite(yellowled,LOW);}clear_led();}void clear_led()//清除LED{digitalWrite(redled,LOW);digitalWrite(greenled,LOW);digitalWrite(yellowled,LOW);}实验现象,都说了是抢答器,肯定是谁先按下,就亮谁的灯啦!然后按下REST按键后,复位。
Arduino教程
Arduino教程一: 数字输出Arduino, 教程11 Comments »Arduino的数字I/O被分成两个部分,其中每个部分都包含有6个可用的I/O管脚,即管脚2到管脚7和管脚8到管脚13。
除了管脚13上接了一个1K的电阻之外,其他各个管脚都直接连接到ATmega上。
我们可以利用一个6位的数字跑马灯,来对Arduino数字I/O 的输出功能进行验证,以下是相应的原理图:电路中在每个I/O管脚上加的那个1K电阻被称为限流电阻,由于发光二极管在电路中没有等效电阻值,使用限流电阻可以使元件上通过的电流不至于过大,能够起到保护的作用。
该工程对应的代码为:int BASE = 2;int NUM = 6;int index = 0;void setup(){for (int i = BASE; i < BASE + NUM; i ++){pinMode(i, OUTPUT);}}void loop(){for (int i = BASE; i < BASE + NUM; i ++) {digitalWrite(i, LOW);}digitalWrite(BASE + index, HIGH);index = (index + 1) % NUM;delay(100);}下载并运行该工程,连接在Arduino数字I/O管脚2到管脚7上的发光二极管会依次点亮0.1秒,然后再熄灭:这个实验可以用来验证数字I/O输出的正确性。
Arduino上一共有十二个数字I/O管脚,我们可以用同样的办法验证其他六个管脚的正确性,而这只需要对上述工程的第一行做相应的修改就可以了:int BASE = 8;SEP01Arduino教程二: 数字输入Arduino, 教程3 Comments »在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。
Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。
Arduino-教程-第25课-Arduino-内部集成电路
第25课Arduino 内部集成电路内部集成电路(I2C)是用于微控制器和新一代专用集成电路之间的串行数据交换系统。
当它们之间的距离很短(接收器和发射器通常在同一个印刷电路板上)时使用。
通过两根导线建立连接。
一个用于数据传输,另一个用于同步(时钟信号)。
如下图所示,一个设备始终是主设备。
它在通信开始之前执行一个从芯片的寻址。
这样,一个微控制器可以与112个不同的设备进行通信。
波特率通常为100 Kb/sec(标准模式)或10 Kb/sec(慢波特率模式)。
最近出现了波特率为3.4 Mb/s的系统。
通过I2C总线通信的设备之间的距离限制在几米之内。
板的I2C引脚I2C总线由两个信号组成- SCL和SDA。
SCL是时钟信号,SDA是数据信号。
当前总线主机总是产生时钟信号。
一些从设备可能迫使时钟低电平以延迟主设备发送更多数据(或者在主设备尝试将数据写出之前请求更多的时间来准备数据)。
这被称为“时钟伸展”。
以下是不同Arduino板的引脚:∙Uno, Pro Mini A4 (SDA), A5 (SCL)∙Mega, Due 20 (SDA), 21 (SCL)∙Leonardo, Yun 2 (SDA), 3 (SCL)Arduino I2C我们有两种模式- 主代码和从代码- 使用I2C连接两个Arduino板。
它们是:∙Master Transmitter / Slave Receiver 主发射器/从接收器∙Master Receiver / Slave Transmitter 主接收器/从发射器主发射器/从接收器让我们现在看看什么是主发送器和从接收器。
主发射器以下函数用于初始化Wire库,并将I2C总线作为主器件或从器件加入。
这通常只被调用一次。
∙Wire.begin(地址) - 在我们的例子中,地址是7位从地址,因为未指定主机,它将作为主机加入总线。
∙Wire.beginTransmission(地址) - 开始向给定地址的I2C从设备发送数据。
arduino案例
arduino案例Arduino是一个开放源代码电子平台,可以轻松编程和控制各种物理设备。
它是一个基于易于使用的硬件和软件概念的开发板,用于创建各种项目和系统。
今天我们将介绍几个基于Arduino的案例。
第一个案例是一个智能家居系统。
这个系统使用Arduino来控制家庭电器和设备,以提高家庭的安全性和舒适性。
通过连接传感器和执行器,Arduino可以监测和控制温度、湿度、光线、烟雾等环境参数,并自动调节空调、照明等设备的工作状态。
它还可以通过手机应用程序进行远程控制和监控。
第二个案例是一个智能农业系统。
这个系统使用Arduino来监测土壤湿度、光照强度和温度等参数,以帮助农民更好地管理农作物。
通过连接传感器和执行器,Arduino可以自动控制灌溉系统、温室通风系统等设备,以提供最适宜的环境条件来促进作物生长。
它还可以通过互联网连接到气象站,获取实时天气数据,帮助农民更好地制定农作物管理计划。
第三个案例是一个追踪器。
这个追踪器使用Arduino来追踪物体的位置和运动。
通过连接加速计、陀螺仪和GPS模块,Arduino可以实时获取物体的位置和运动数据,并通过蓝牙或无线网络将数据发送给手机或计算机。
这个追踪器可以用于跟踪物流货物、失路的宠物、行李等,并提供实时的位置更新和预警信息。
第四个案例是一个智能交通系统。
这个系统使用Arduino来控制交通信号灯和车辆行驶方向。
通过连接传感器、摄像头和执行器,Arduino可以实时检测交通流量和路况,并自动调节交通信号灯的工作模式和车辆行驶方向,以优化交通流量和减少交通拥堵。
它还可以通过互联网连接到交通管理中心,实现远程监控和控制。
这些案例只是Arduino应用的一小部分,它在物联网、机器人、航空航天等领域都有广泛的应用。
通过自己的创造力和编程技能,您可以利用Arduino来构建各种有趣和有用的项目和系统。
所以快来尝试一下吧!。
arduino get用法
arduino get用法Arduino是一款开源电子原型平台,可实现硬件和软件交互。
作为一款极其灵活和易于使用的开发工具,它在教育、艺术、设计和创客领域中广泛应用。
在本篇文章中,我们将详细探讨Arduino的get用法,并以一步一步的方式回答有关该主题的问题。
第一步:Arduino的基础在介绍Arduino的get用法之前,我们需要先了解一些Arduino的基础知识。
Arduino主板是一个微控制器板,它包含了一个ATmega系列微控制器和与其交互的输入/输出引脚。
这使得Arduino能够读取和控制传感器、执行各种任务以及与其他设备进行通信。
第二步:了解Arduino的get用法Arduino的get用法是指通过读取输入引脚的值来获取数据。
它可以用于许多用途,例如读取传感器的值、接收用户输入或获取来自其他设备的数据。
通过get方法,Arduino可以获得各种形式的数据,如数字值、模拟值、字符串等。
第三步:获取数字输入Arduino可以获取来自数字输入引脚的信号。
数字输入信号只能具有两种状态:高电平(1)和低电平(0)。
可以使用digitalRead()函数来读取数字输入引脚的状态。
该函数将返回一个布尔值,表示引脚的状态。
例如,以下代码可以读取数字引脚2的状态并将其打印到串行监视器上:cppint pin = 2;int value = digitalRead(pin);Serial.println(value);第四步:获取模拟输入Arduino还可以获取来自模拟输入引脚的信号。
模拟输入信号可以具有范围在0到5V之间的任何值。
可以使用analogRead()函数来读取模拟输入引脚的值。
该函数将返回一个介于0和1023之间的整数,表示引脚电压的变化。
例如,以下代码可以读取模拟引脚A0的值并将其打印到串行监视器上:cppint pin = A0;int value = analogRead(pin);Serial.println(value);第五步:获取字符串输入除了读取数字和模拟输入之外,Arduino还可以获取来自其他设备的字符串输入。
ARDUINO教程第四讲
write(value) 该函数可以直接填写需要的角度。 例如:myservo1.write(90); 该函数精度较低,只能达到1度。
writeMicroseconds(us); 该函数精度较高,直接填写脉冲值,单 位是us. 例如: myservo1.writeMicroseconds(1500);舵 机指向90度。 该函数的角度精度为0.097度
电源模块电路图
信号线
3、舵机
舵机,故名思议,像船尾的舵那样,只能转 动固定的角度,一般的舵机最大转角约为180 度。也有一些舵机能达到300度的。
舵机原理
将PPM信号,经信号线传输。PPM信号的频 率是50HZ。宽度从0.5MS到2.5MS。
舵机库函数介绍
调用Servo库,创建一个舵机的对象来控制舵机 该库有几个函数 1、attach(pin); attach(pin,min,max); 2、write(value); 3、writeMicroseconds(us); 4、detach(pin); 5、read(pin); 6、readMicroseconds(pin);
4、电机
电机带减速装置。 工作电压3V~12V,建议工作电压6V~9V 减速比1:48
5、L298电机驱动芯片
电机驱动控制部分电路图编程原理 Nhomakorabea
做双路电机实现10秒加速,然后反转减速10 秒,并交替出现的程序。 将数字7、8脚接L298模块的的IN1和IN2脚, 12、13脚接L298模块的IN3和IN4脚。9和10 脚分别接ENA和ENB脚。 ENA控制MOTORA的转速,ENB控制 MOTORB的转速。 7、8脚控制MOTORA的正反转,12、13脚控 制MOTORB的正反转。
Arduino入门到精通例程23
Arduino 入门到精通例程23三色LED RGB模块使用三色全彩LED制造显示原理,其实原理是在一棵LED灯里,有三种颜色的灯,红,绿,蓝。
每种颜色的灯上的驱动电压不一样,亮度就不一样,它们组合在一起,就形成了各种颜色。
模块有3个输出:1. R,红色输出,2. G,绿色输出,3. B,蓝色输出.模块特点:3组信号输出,可通过单片机编程实现R,G,B三种颜色的混合达到全彩的效果,实验代码:int ledPin = 13; // LED is connected to digital pin 13int redPin = 11; // R 红色LED控制引脚连接到Arduino的11脚int greenPin = 9; // G绿色LED控制引脚连接到Arduino的9脚int bluePin = 10; // B蓝色LED控制引脚连接到Arduino的11脚void setup(){pinMode(ledPin, OUTPUT); // 设置ledPin对应的管脚13为输出pinMode(redPin, OUTPUT); //设置redPin对应的管脚11为输出pinMode(greenPin, OUTPUT); //设置greenPin,对应的管脚9为输出pinMode(bluePin, OUTPUT); //设置bluePin对应的管脚10为输出}void loop() // run over and over again{// Basic colors:color(255, 0, 0); // 红色亮delay(1000); // 延时一秒color(0,255, 0); //绿色亮delay(1000); //延时一秒color(0, 0, 255); // 蓝色灯亮delay(1000); //延时一秒// Example blended colors:color(255,255,0); // 黄色delay(1000); //延时一秒color(255,255,255); // 白色delay(1000); //延时一秒color(128,0,255); // 紫色delay(1000); //延时一秒color(0,0,0); // t关闭leddelay(1000); //延时一秒}void color (unsigned char red, unsigned char green, unsigned char blue) //颜色控制函数{analogWrite(redPin, 255-red);analogWrite(bluePin, 255-blue);analogWrite(greenPin, 255-green);}实验很简单:给个截图吧。
Arduino 入门到精通 例程16-四位数码管剖析
Arduino 入门到精通例程16这次我们进行的实验是使用arduino驱动一块共阳四位数码管。
驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。
这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。
另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。
本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。
4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。
左上角为最大的12号管脚。
下图为数码管的说明手册下面是硬件连接图ARDUINO CODECOPY1.//设置阴极接口2.int a = 1;3.int b = 2;4.int c = 3;5.int d = 4;6.int e = 5;7.int f = 6;8.int g = 7;9.int p = 8;10.//设置阳极接口11.int d4 = 9;12.int d3 = 10;13.int d2 = 11;14.int d1 = 12;15.//设置变量16.long n = 0;17.int x = 100;18.int del = 55; //此处数值对时钟进行微调19.20.void setup()21.{22.pinMode(d1, OUTPUT);23.pinMode(d2, OUTPUT);24.pinMode(d3, OUTPUT);25.pinMode(d4, OUTPUT);26.pinMode(a, OUTPUT);27.pinMode(b, OUTPUT);28.pinMode(c, OUTPUT);29.pinMode(d, OUTPUT);30.pinMode(e, OUTPUT);31.pinMode(f, OUTPUT);32.pinMode(g, OUTPUT);33.pinMode(p, OUTPUT);34.}35.36.void loop()37.{38. clearLEDs();39. pickDigit(1);40. pickNumber((n/x/1000)%10);41.delayMicroseconds(del);42.43. clearLEDs();44. pickDigit(2);45. pickNumber((n/x/100)%10);46.delayMicroseconds(del);47.48. clearLEDs();49. pickDigit(3);50. dispDec(3);51. pickNumber((n/x/10)%10);52.delayMicroseconds(del);53.54. clearLEDs();55. pickDigit(4);56. pickNumber(n/x%10);57.delayMicroseconds(del);58.59. n++;60.61.if(digitalRead(13) == HIGH)62.{63. n = 0;64.}65.}66.67.void pickDigit(int x)//定义pickDigit(x),其作用是开启dx端口68.{69.digitalWrite(d1, LOW);70.digitalWrite(d2, LOW);71.digitalWrite(d3, LOW);72.digitalWrite(d4, LOW);73.74.switch(x)75.{76.case1:77.digitalWrite(d1, HIGH);78.break;79.case2:80.digitalWrite(d2, HIGH);81.break;82.case3:83.digitalWrite(d3, HIGH);84.break;85.default:86.digitalWrite(d4, HIGH);87.break;88.}89.}90.91.void pickNumber(int x)//定义pickNumber(x),其作用是显示数字x92.{93.switch(x)94.{95.default:96. zero();97.break;98.case1:99. one();100.break;101.case2:102. two();103.break;104.case3:105. three();106.break;107.case4:108. four();109.break;110.case5:111. five();112.break;113.case6:114. six();115.break;116.case7:117. seven();118.break;119.case8:120. eight();121.break;122.case9:123. nine();124.break;125.}126.}127.128.void dispDec(int x)//设定开启小数点129.{130.digitalWrite(p, LOW);131.}132.133.void clearLEDs()//清屏134.{135.digitalWrite(a, HIGH);136.digitalWrite(b, HIGH);137.digitalWrite(c, HIGH);138.digitalWrite(d, HIGH);139.digitalWrite(e, HIGH);140.digitalWrite(f, HIGH);141.digitalWrite(g, HIGH);142.digitalWrite(p, HIGH);143.}144.145.void zero()//定义数字0时阴极那些管脚开关146.{147.digitalWrite(a, LOW);148.digitalWrite(b, LOW);149.digitalWrite(c, LOW);150.digitalWrite(d, LOW);151.digitalWrite(e, LOW);152.digitalWrite(f, LOW);153.digitalWrite(g, HIGH);154.}155.156.void one()//定义数字1时阴极那些管脚开关157.{158.digitalWrite(a, HIGH);159.digitalWrite(b, LOW);160.digitalWrite(c, LOW);161.digitalWrite(d, HIGH);162.digitalWrite(e, HIGH);164.digitalWrite(g, HIGH);165.}166.167.void two()//定义数字2时阴极那些管脚开关168.{169.digitalWrite(a, LOW);170.digitalWrite(b, LOW);171.digitalWrite(c, HIGH);172.digitalWrite(d, LOW);173.digitalWrite(e, LOW);174.digitalWrite(f, HIGH);175.digitalWrite(g, LOW);176.}177.178.void three()//定义数字3时阴极那些管脚开关179.{180.digitalWrite(a, LOW);181.digitalWrite(b, LOW);182.digitalWrite(c, LOW);183.digitalWrite(d, LOW);184.digitalWrite(e, HIGH);185.digitalWrite(f, HIGH);186.digitalWrite(g, LOW);187.}188.189.void four()//定义数字4时阴极那些管脚开关190.{191.digitalWrite(a, HIGH);192.digitalWrite(b, LOW);193.digitalWrite(c, LOW);194.digitalWrite(d, HIGH);195.digitalWrite(e, HIGH);196.digitalWrite(f, LOW);197.digitalWrite(g, LOW);198.}199.200.void five()//定义数字5时阴极那些管脚开关201.{202.digitalWrite(a, LOW);204.digitalWrite(c, LOW);205.digitalWrite(d, LOW);206.digitalWrite(e, HIGH);207.digitalWrite(f, LOW);208.digitalWrite(g, LOW);209.}210.211.void six()//定义数字6时阴极那些管脚开关212.{213.digitalWrite(a, LOW);214.digitalWrite(b, HIGH);215.digitalWrite(c, LOW);216.digitalWrite(d, LOW);217.digitalWrite(e, LOW);218.digitalWrite(f, LOW);219.digitalWrite(g, LOW);220.}221.222.void seven()//定义数字7时阴极那些管脚开关223.{224.digitalWrite(a, LOW);225.digitalWrite(b, LOW);226.digitalWrite(c, LOW);227.digitalWrite(d, HIGH);228.digitalWrite(e, HIGH);229.digitalWrite(f, HIGH);230.digitalWrite(g, HIGH);231.}232.233.void eight()//定义数字8时阴极那些管脚开关234.{235.digitalWrite(a, LOW);236.digitalWrite(b, LOW);237.digitalWrite(c, LOW);238.digitalWrite(d, LOW);239.digitalWrite(e, LOW);240.digitalWrite(f, LOW);241.digitalWrite(g, LOW);242.}243.244.void nine()//定义数字9时阴极那些管脚开关245.{246.digitalWrite(a, LOW);247.digitalWrite(b, LOW);248.digitalWrite(c, LOW);249.digitalWrite(d, LOW);250.digitalWrite(e, HIGH);251.digitalWrite(f, LOW);252.digitalWrite(g, LOW);253.}把下面代码复制下载到控制板中,看看效果。
arduino案例
arduino案例Arduino案例。
Arduino是一款开源的电子原型平台,可以用来制作各种互动的项目。
它的设计理念是简单易用,适合初学者和专业人士使用。
在本文中,我们将介绍一些基于Arduino的实际案例,希望能够给大家带来一些灵感和启发。
首先,我们来看一个简单的Arduino案例,LED闪烁。
LED是一种常见的电子元件,可以用来显示各种信息。
在这个案例中,我们将通过Arduino控制LED的闪烁频率,从而实现一个简单的可视化效果。
通过编写简单的代码,我们可以让LED以不同的频率闪烁,从而实现各种有趣的效果。
接下来,让我们来看一个更复杂的案例,温度监控系统。
在这个案例中,我们将使用Arduino连接温度传感器,并通过编写代码实现对环境温度的实时监测。
当温度超过一定阈值时,Arduino将通过蜂鸣器或者LCD显示屏等设备发出警报,提醒用户注意环境温度的变化。
这个案例展示了Arduino在实际生活中的应用,可以帮助我们实现对环境的监测和控制。
除了以上案例,Arduino还可以应用于各种领域,比如智能家居、机器人、无人机等。
通过连接各种传感器和执行器,我们可以实现各种有趣的项目,比如智能灯光控制系统、自动浇水系统、避障小车等。
这些项目不仅可以帮助我们学习电子技术和编程,还可以为我们的生活带来便利和乐趣。
总之,Arduino是一款功能强大的电子原型平台,可以帮助我们实现各种有趣的项目。
通过学习和实践,我们可以掌握电子技术和编程知识,同时也可以享受到创造的乐趣。
希望本文介绍的Arduino案例能够给大家带来一些启发,激发大家的创造力和想象力。
让我们一起动手,实现更多有趣的Arduino项目吧!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动手
• 通过读取电位器的值来控制LED灯的亮度
300度 旋转角度传感器
多圈 旋转角度传感器
60行程 滑动电位器 推子
游戏杆 控制杆 JoyStick
模拟温度传感器
光线传感器
触摸传感器
倾斜传感器
人体运动 红外热释传感器
反射型红外开关 50cm~100cm
反射型红外开关 10cm
反射型红外开关 2cm
对射型 红外开关 8米
继电器模块
动手
• 通过按钮模拟来控制LED灯的亮灭
面包板使用方法介绍
动手
• 用面包板完成LED模块的电路连接
LED基本电路
电阻
LED
– 通常在 setup() 函数里调用
Байду номын сангаас
Arduino 串口输出
• 将数据从Arduino传输到PC
– TX 串口转USB PC端软件串口监视软件 – Arduino IDE自带串口监视软件 – 也可以用其它软件进行接收:Flash, Processing, Director, vvvv等
• 串口输出函数
声音传感器
Sharp 红外距离传感器
• 30cm, 80cm, 150cm, 5.5m
三轴 加速度传感器
FlexiForce压力传感器
• 1 lb, 25 lb, 100 lb
FSR系列压力传感器
• 压力1-10kG • 尺寸和外形不同
弯曲传感器
• 单向,双向
拉伸 传感器
• 4 inch, 6 inch
Arduino电机驱动扩展板
• 基于L298N,工作原理与L293D一样 • 提供更大工作电流,可以驱动大的直线电机 • 逆电压消除电路
步进电机
• 一种可以精确控制的交流电机 • 由驱动脉冲控制,每个脉冲让电机前进一个固定的角度 (步进角) • 电机速度由单位时间内脉冲的个数决定(脉冲频率) • 功率小,负载能力低,控制相对复杂
• Serial.print(78)
– 输出"78"
• Serial.print(1.23456)
– 输出"1.23"
• Serial.print(byte(78))
– 输出―N‖ (N的ASCII码值为78))
• Serial.print('N')
– 输出"N"
• Serial.print("Hello world.")
– Serial.print(val), Serial.println(val)
• 输出ASCII码(后者多一个回车换行)
– Serial.print(val, format) , Serial.println(val, format)
• 按指定格式输出(后者多一个回车换行)
Serial.print(val) 实例
动手
• 实验各种模拟传感器 • 对RGB LED进行控制 • 分享
串口通信
• 串口通信(Serial Communication)是Arduino和计算机间 按位进行数据传输的一种最基本的方式。 • 使用3根线完成
– 地线,GND – 发送,Tx – 接收 ,Rx
• 主要参数
– – – – 波特率:通信速度,表示每秒钟传送的位(bit)的个数 数据位 停止位 奇偶校验位
• 工作电流
– 电机工作电流越大,输出功率越大 – 空载运行时,电机的电流最小(空载电流) – 负载增大到使电机停止转动时(堵转电流)
• 转矩
– 电机的转动力
• 转速
– 每分钟旋转的圈数(转/分,RPM)
注意!
• 电机属于大电流设备,无法用Arduino引脚直接控制
– 区别于LED
• 电机电压高于Arduino的工作电压,注意隔离和接线
玩转Arduino合集
Arduino是什么?
• Arduino硬件介绍 • Arduino编程环境介绍
Arduino的安装
• Arduino IDE的安装 • USB驱动的安装
Arduino程序结构:setup()
上电后setup()函数执行一次
4
Arduino程序结构:loop()
loop()函数一直循环运行
模拟信号
• 模拟信号的值可以连续变化 • 9V电池就是一种模拟器件,因为它的输出电压并不精确地 等于9V,而是随时间发生变化,并可取任何实数值。 • 光照强度、温度、湿度等也都是模拟信号
Arduino中的模拟输出
• analogWrite(pin, value) • pin为Arduino上的PWM引脚
直流减速电机
• 直流减速电机(齿轮减速电机)是在普通直流电机的基础 上,加上配套齿轮减速箱。 • 齿轮减速箱可以提供较低的转速和较大的力矩,不同的减 速比可以提供不同的转速和力矩
常用参数
• 工作电压(额定电压)
– – – – 驱动电机推荐使用的电压 高于或者低于工作电压时电机也能工作 实际电压 < 额定电压,输出功率变小 实际电压 > 额定电压,会影响电机的寿命
Arduino 串口
• USB转串口
– PC端:串口 – Arduino端:USB
• 串口引脚
– RX:Pin 0 – TX:Pin 1
• 串口数目
– Arduino MEGA和Arduino 2560:4个 – 其余:1个
• 串口初始化函数
– Serial.begin(speed)
• speed: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200
• 速度控制
– 使用Arduino模拟输出引脚 – 将产生的PWM信号连接到L293D的使能引脚
• 方向控制
– – – – – 使用Arduino的数字输出引脚 将产生的数字信号连接到L293D的A、B两个方向引脚 正转:A为高,B为低 反转:A为低,B为高 制动:A、B同时为高或者低
动手
• 用L293D控制电机
• 与LED灯控制代码相同
电机速度控制
• 复习PWM
– 高速地开关三极管来实现对电机的控制 – 占空比(打开时间:关闭时间)决定了输出给电机的能量份额 – Arduino的analogWrite函数用来产生PWM信号
动手
• 用Arduino控制电机转动的速度 • 如何让速度变化更容易观察到?
H桥式驱动电路
– 输出"Hello world."
Serial.print(val, format) 实例
• • • • Serial.print(78, BYTE)
– 输出"N"
Serial.print(78, BIN)
– 输出"1001110"
Serial.print(78, OCT)
– 输出"116"
Serial.print(78, DEC)
– 3, 5, 6, 9, 10, 11
• value取值0-255
• PWM
– 实现模拟信号的数字化方法
动手
• Arduino控制LED淡入淡出效果
动手
• 实现全彩的混色
模拟输入
• 通常基于分压原理 • 电位器 • 电子积木
– 300度 旋转角度传感器
Arduino中的模拟输入
• analogRead(pin)
• 4个三极管控制一个直流电机 • 只让对角线上的一对三极管导通
– 否则会短路,烧坏三极管
• 能同时控制速度和方向
电机驱动芯片L293D
• 包含两个H桥式驱动电路,可以用来驱动两个直流电机
使能引脚 方向A 电机 方向B 电机电源
Arduino 5V
电机电源和 Arduino 需要共地!
Arduino控制L293D
5
Arduino数字输入输出
6
Arduino程序下载
• HelloWorld程序
动手
• HelloWorld:点亮一个LED灯
Arduino与电子积木
• 什么是电子积木 • 电子积木如何与Arduino连接
– 传感器扩展板 – 连接线
数字型电子积木
通用按钮模块
小按钮模块
大按钮模块
磁力开关
动手
• 要求:清屏后在屏幕上的第二行第二列开始显示字符串 Arduino Club • 提示
– 在loop的最后加delay防止闪烁 – 在下载代码的时候不能接显示屏
Arduino 串口输入
• 串口队列(Buffer)
– PC和Arduino间的缓冲区
• 串口输入函数
– Serial.available()
串口液晶模块
• • • 波特率9600 命令格式
– 所有对该液晶屏进行控制的串口命令都以字符”$‖开始,以回车换行”\r\n‖结束, 两者之间是相应的命令和参数,不同的命令具有不同的参数。
操作命令
– 光标移动 :GO<空格>行<空格>列
• 行和列均从1开始 • GO 1 1
– 在当前光标位置上显示字符串 PRINT<空格>字符串
双极性步进电机
• 每个线圈都可以两个方向通电 • 四根引线,每个线圈两条 • 使用数字万用表确定线圈分组
基于串口的电子积木(一)
串行液晶显示屏 字符型 1602 LCD
无线数据传输模块 APC220
蓝牙串口模块
USB转串口适配器