自学Arduino UNO串口(制造光控灯)
一、Arduino串口介绍
串口用于不同设备间互相传输数据。比如,可以在电脑上实时输入指令,Arduino 板做出相应的反应,Arduino 板正在执行的工作也能实时反应在电脑上。
二、Arduino串口分类
Arduino采用USART通信模式,可以有硬串口,软串口两种实现方式。
通常将Arduino UNO上自带的串口0(RX)、1(TX)称为硬件串口,可与外围串口设备通信。
而使用SoftwareSerial类库模拟成的串口,称为软件模拟串口(简称软串口)。如果要连接更多的串口设备,可以使用软串口。
三、Arduino串口的使用
1、初始化串口
void setup(){ //开机就执行一次的部分//pinMode(led,OUTPUT);Serial.begin(9600); //初始化串口,一般设置通信波特率为9600波特,表示每秒发送9600bit的数据
}
2、串口的输出(输出到电脑屏幕上)
void loop(){Serial.println("Hello Word");//Arduino板传输"Hello Word"给电脑delay(1000);}
Serial.println() : 串口输出数据并换行,print多了nl代表换行
Serial.print() :不换行
3、串口输入
void loop(){//Serial.println("Hello Word");//Arduino板传输"Hello Word"给电脑delay(1000);if(Serial.available()>0) //获取串口缓冲区中的数据,判断是否有数据{char ch=Serial.read(); //从电脑端输入数据,存入Arduino板Serial.println(ch); //输出所存入Arduino板的数据}
在监视器中可输入数据:
Serial.available() :判断串口缓冲区的状态,返回从串口缓冲区读取的字节数。有字节才会执行
若没有这个判断:
void loop(){//Serial.println("Hello Word");//Arduino板传输"Hello Word"给电脑delay(1000);char ch=Serial.read(); //从电脑端输入数据,存入Arduino板Serial.println(ch); //输出所存入Arduino板的数据}
结果:一开始就输出‘?’ 输入了几个数据,将数据输出完后又输出‘?’
Serial.read() :读取串口数据,一次读一个字符,读完后删除已读数据。所以才会一次输出一个字符
Serial.readString() : 从串口缓存区读取全部数据到一个字符串型变量。注意定义数据类型String字符串
if(Serial.available()>0) //获取串口缓冲区中的数据,判断是否有数据{String ch=Serial.readString(); //从电脑端输入数据,存入Arduino板Serial.println(ch); //输出所存入Arduino板的数据}
一次性输出多个字符
四、利用串口设计光控灯。
1、思路:
因为光敏电阻的特性,阻值随光度的变化而变化,电压也自然跟着变化。Arduino板可以通过串口将电压的变化输出给电脑,电脑分析电压的大小,通过串口输入数据给Arduino板控制led灯的开关。
2、代码:
int a = 0;
void setup(){ //开机就执行一次的部分pinMode(12,OUTPUT);Serial.begin(9600); //Serial-串口的函数。初始化串口,一般设置通信波特率为9600波特,表示每秒发送9600bit的数据
}void loop(){a = analogRead(A0);//Arduino板读取引脚A0处的电压值,并把值赋给a。Serial.println(a); //在串口监视器中输出a的值delay(100);if(a>600) //如果电压映射的值小于600就把12号引脚设为高平电压{digitalWrite(12,LOW);Serial.println("关灯"); //将12号引脚位置的状态输出给串口监视窗}else{digitalWrite(12,HIGH);Serial.println("开灯");}delay(1);
}
analogRead():用于从Arduino的模拟输入引脚读取数值。可以将0-5伏特的电压输入信号映射到数值0-1023。例:analogRead(A0),先获取A0处的电压,若位5V则映射到数值为1023,返回数值1023。
3、连接线路
理论图:
实际图:
4、上传代码
打开串口监视窗,开始实验。
大功告成!!!
改进:
在串口监视窗输入'a',Arduino板也能立马做出反应,并反馈它的状态:
代码:
while(Serial.available() > 0){char ch=Serial.read(); //从电脑端输入数据,存入Arduino板if(ch=='a'){digitalWrite(12,HIGH);Serial.println(ch);Serial.println("开灯");delay(2000);}else if(ch=='b'){digitalWrite(12,LOW);Serial.println(ch);Serial.println("关灯");}}
串口监视窗:a
有了串口连接Arduino板和电脑,我们可以让板传输自己的数据给电脑,让我们了解它所正在执行的工作。我们也可以通过串口监视窗输入数据给Arduino板,让它马上就能执行我们所编写的程序。
自学Arduino UNO串口(制造光控灯)相关推荐
- Arduino开发小项目—光控灯
@Arduino开发小项目-光控灯 本篇文章介绍光敏电阻,通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备. 传感器是一种检测装置,能感受并采集到被测量的信息,在当下物联网 ...
- Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事
继续是讲解基础原理,新手专用部分.这次讲光敏电阻,和用电阻分压.光电元器件有好几种,其中测光相关的元器件,常见的有光敏三极管和光敏电阻,我们这次光控灯用光敏电阻.在我们光控灯里面,将会使用它搭建出分压 ...
- 【Arduino】入门篇——光控灯
光控灯 一.实验目的 二.实验器材 三.电路图 四.实验步骤 五.代码块 六.实验结果 一.实验目的 通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备. 二.实验器材 Un ...
- arduino 光控灯_Arduino基础—光控灯(物联网)
本实验借鉴TonyCode的简书说明. 作者:TonyCode 链接:https://www.jianshu.com/p/41827528e3c5 来源:简书 # Arduino基础入门篇-光控灯 物 ...
- Arduino—光控灯
Arduino光控灯 首先介绍光敏电阻,光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器:入射光强,电阻减小,入射光弱,电阻增大.光敏电阻器一般用于光的测量.光的控制和光电 ...
- arduino 光控灯_Arduino 极速入门系列 - 光控灯(1)- 关于理论和 LED 那些事
点个 LED 闪亮好像太单调,这次来个光控 LED 灯.这个其实不需要 Arduino 也能做,这次只是用来演示一下 PWM 在 Arduino 里面的做法.PWM 原理后面会解释.这次用充电宝提供 ...
- 物联网——光控灯的实现
光控灯 1.实验器材 Uno R3开发板 配套USB数据线 面包板及配套连接线 1个LED灯 1个220Ω限流电阻 1个光敏电阻传感器 1个1K普通电阻 2.实验步骤 硬件连接(原理图): 在ardu ...
- 基于Arduino UNO的楼道人体感应灯
基于Arduino UNO的楼道人体感应灯 文章目录 前言 一.认识人体热释电红外传感器 二.模块连接图及程序 1.setup()初始化程序 2.loop()主函数 总结 前言 生活中经常看到一些自动 ...
- 【掌控板2.0】<Mind+>:光控灯、声控灯、语音识别模块、实现Easy IoT上MQTT消息的通讯实验
一.实验目的及要求 [实验一]光控灯 [实验二]声控灯 [实验三]语音识别控制灯 [实验四]实现Easy IoT上mqtt消息的通讯 (1)甲按A键(或触摸P)发送消息至topic1,同时监听topi ...
最新文章
- GPT-3等三篇论文获NeurIPS2020最佳论文奖 | AI日报
- cuda_opencv 矩阵相加
- 博客访问量终于破10000了
- 第十一天2017/04/25(1、二叉树)
- xsd java引用_web.xml文件的 xsd引用(或dtd引用)学习
- 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
- flutter 图解_【Flutter 专题】83 图解自定义 ACEWave 波浪 Widget (一)
- 常用英雄胜率怎么刷_单排刷英雄胜率或者炸鱼方法。
- ACM学习历程—HDU5666 Segment(数论)
- 2.6.24内核中对S3C2440的引导启动分析
- 微技能|几分钟搭建网站内容平台
- 5.docker 命令
- 怎么看公司财务报表?
- Lua面向对象之二:类继承
- python自动按键脚本
- arduino步进电机程序库_Arduino步进电机控制示例
- com.homelink.android,链家-新房二手房租房
- Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
- 20190605学习日记
- 互联网营销师-淘宝直播运营
热门文章
- mysql中文排序,自定义排序(一科,二科,三科,四科等等)
- 直播 | 浙江大学硕士生任意:非自回归语音合成
- vs .sln与.suo文件
- java上传文件限制大小_Java Web:附件上传,两种文件上传限制格式及大小方法,学习笔记文件操作【诗书画唱】...
- VMvare-linux没有图形化界面
- 读取windows电脑上共享目录的操作
- 08年中国最火的10大网上商店系统
- 玩摄影,究竟要烧多少钱?
- NANDFLASH的学习(三)
- 哈夫曼树 哈夫曼编码