Arduino(初级入门)
1.关于引脚
Arduino上每一个带有数字编号的引脚,都是数字引脚,使用这些引脚可以完成输入输出数字信号的功能
2.关于pinMode()函数:(数字 I/O)
在使用输入输出功能前,需要使用pinMode()函数引脚配置模式
pinMode(pin,mode); //mode可使用:输出模式(OUTPUT),输入模式(INPUT),输入上拉模式 (INPUT_PULLUP),pin为指定配置的引脚编号
//在Arduino核心库中,OUTPUT被定义成1,INPUT 被定义成0
//因此可以用1代替OUTPUT,用0代替INPUT
如pinMode(2,OUTPUT);即为把2号引脚配置为输出模式
3.关于digitalWrite()函数:(数字 I/O)
digitalWrite(pin,value); //pin为指定输出的引脚编号,value为指定输出的电平,高电平(HIGH),低电平(LOW)即为0v
//在Arduino核心库中,HIGH被定义成1,LOW 被定义成0
//因此可以用1代替HIGH,用0代替LOW
高电平 即为当前Arduino的工作电压,Arduino UNO的工作电压为5v,Arduino Due的工作电压为3.3v
4.关于digitalRead()函数:(数字 I/O)
int value=digitalRead(pin); //定义一个变量,使用digitalRead()函数读取引脚pin的电平, 以数字的方式返回给value
读取数字引脚的 HIGH(高电平)或 LOW(低电平)
5.数字信号与模拟信号:
数字信号:只有0和1,不是0就是1,没有其他数字
模拟信号:可以是任意一个值
6.关于数字电平:
数字是一种表示一位电压的方式:0或1
在Arduino上,当数字引脚配置为输出(OUTPUT)时,电平设置为0或5v,当数字引角配置为输入(INPUT)时,电压由外部设备提供,该电压可以在0~5v变化,并转换成数字表示(0或1),电压低于0.8v则视为0,高于2.0v时视为1,电压在阈值之间则不确定
7.关于串口通信:
Arduino与计算机最常用的方式是串口通信,使用串口通信时,需要先使用Serial.begin()函数来初始化Arduino的串口通信功能
Serial.begin(speed); //参数speed指串口通信波特率即串口通信速率的参数 ,常用波特率:300 600 1200 2400 4800 9600等(每秒传送比特的个数),串口通信协议中串口通信双方必须使用同样的波特率才能正常通信
8.串口输出:关于Serial.print()和 Serial.println()函数
Serial.print(value); //若有引号,则打印引号里面的内容(字符串)
Serial.println(value); //若打印变量的数值,则没有引号,区别是Serial.println()比Serial.print()多了换行的作用
9.关于random()和randomSeed()函数:
random(min, max); //在[min, max)区间内产生一个随机数,包括min本身不包括max本身
单独使用random()函数所产生的随机数在每次程序启动后都是同一组随机数
randomSeed(seedVal); //使用randomSeed函数可以在每次运行都产生不同的随机数
10.关于analogWrite()函数:(模拟 I/O)
analogWrite(ledPin, value);//模拟输入,其中ledPin是引脚编号,value是参数
//既可调节亮度,也可以调节电机的转速
//该函数每次对引脚执行指令,指令执行后,都会给引脚一个固定的PWM信号,大概为 490hz
//value:占空比,0到255之间,占空比的多少可表示亮度的大小
11.关于analogRead()函数:(模拟 I/O)
analogRead(pin);//读取模拟输入引脚pin的数值,读取的数值为0到1024之间的整数
12.关于map()函数:
map(value,fromLow,fromHigh,toLow,toHigh) //将一个数值从一个范围映射到另一个范围
//value: 要映射的值 fromLow: 原范围的下限 fromHigh: 原范围的上限
//toLow: 新范围的下限 toHigh: 新范围的上限
13. 关于attachInterrupt()函数:
attachInterrupt(interrupt, ISR, mode);
//interrupt:中断号,在Uno R3中有中断号0(即引脚2)、中断号1(即引脚3)
//ISR:中断处理函数
//mode:中断触发方式,LOW(低电平触发)、CHANGE(引脚状态改变触发)、RISING(上升沿触发)、FALLING(下降沿触发)
14.关于Serial.available()函数:
Serial.available(); //串口接收缓存中有多少字节的数据待处理,返回值即为多少
14.第一个Arduino程序(LED闪烁):
//项目一 ——LED闪烁灯
int pin = 13; //LED连接到引脚13
void setup()
{
pinMode(pin, OUTPUT); //将引脚13设置为OUTPUT模式
}
void loop()
{
digitalWrite(pin, HIGH); //将引脚13设置为高电平,此时LED灯亮
delay(1000); //保持灯亮状态1000毫秒即1秒
digitalWrite(pin, LOW); //将引脚13设置为低电平,此时LED灯暗
delay(1000); //保持灯暗状态1000毫秒即1秒
}
四个led灯轮流闪烁:
void setup()
{for(int i=3; i<=9; i+=2) //引脚3、5、7、9设置为输出状态(OUTPUT){pinMode(i, OUTPUT);}
}void loop() {f1();delay(1000); //转换方向之间间隔两秒f2();delay(1000);
}
void f1() //依次点亮led,后依次熄灭led
{for(int i=3; i<=9; i+=2){digitalWrite(i, HIGH);delay(200); //两个灯点亮之间间隔200毫秒}for(int i=9; i>=3; i-=2){digitalWrite(i, LOW);delay(200); //两个灯熄灭之间间隔200毫秒}
}
void f2() //反方向依次点亮led,后依次熄灭led
{for(int i=9; i>=3; i-=2){digitalWrite(i, HIGH);delay(200); //两个灯点亮之间间隔200毫秒}for(int i=3; i<=9; i+=2){digitalWrite(i, LOW); //两个灯熄灭之间间隔200毫秒delay(200);}
}
led分别由暗到明、由明到暗:
int ledPin = 9;
int brightness = 0;void setup() {pinMode(ledPin, OUTPUT); //设置9号引脚为输出摸式(OUTPUT)Serial.begin(9600); //开启串口通讯,可在串口监视器监测led亮度变化
}
void loop() { for(brightness = 0; brightness<=255; brightness+=5){ //led由暗到明analogWrite(ledPin, brightness);Serial.print("brightness = ");Serial.println(brightness); //在串口监视器上检测亮度实时变化}delay(10); for(brightness = 255; brightness>=0; brightness-=5){ //led由明到暗analogWrite(ledPin, brightness);Serial.print("brightness = ");Serial.println(brightness); //在串口监视器上检测亮度实时变化}delay(10);
}
利用电位器调节led灯亮度:
int ledPin = 9;
int readValue = 0; //创建变量readValue储存读取的A0引脚的模拟信号值
int brightness = 0; //创建变量brghtness储存映射在新的占空比(PWM)范围void setup(){pinMode(ledPin, OUTPUT); //将9号引脚设置为输出模式
}void loop(){readValue = analogRead(A0); //读取模拟信号值brightness = map(readValue, 0, 1024, 0, 255); //映射在新的占空比(PWM)范围analogWrite(ledPin, brightness); //输出占空比控制亮度}
光敏电阻 :
int ledPin = 9;
int readValue = 0; //创建变量readValue储存读取的A0引脚的模拟信号值
int ledBrightness = 0; //创建变量brghtness储存映射在新的占空比(PWM)范围void setup(){pinMode(ledPin, OUTPUT); //将9号引脚设置为输出模式
}void loop(){readValue = analogRead(A0); //读取A0引脚模拟信号值ledBrightness = map(readValue, 100, 500, 0, 255); //映射在新的占空比(PWM)范围analogWrite(ledPin, brightness); //输出占空比控制亮度
}
外部中断:
int sensorLed = 9;
int sensorINPUT = 2;
char state = LOW;void setup() {pinMode(sensorLed, OUTPUT);pinMode(sensorINPUT, INPUT_PULLUP);attachInterrupt(0, blink, FALLING);
}void loop() {if(state == HIGH){state = LOW;digitalWrite(sensorLed, HIGH);delay(500);}else{digitalWrite(sensorLed, LOW);}
}void blink()
{state = !state;
}
注: 学习资源来自太极创客和博主TonylOT
Arduino(初级入门)相关推荐
- esp8266初级入门实用教程一之访问心知天气读取实时天气数据
ESP8266作为一款功能强大的的物联网模块,已经被应用到了很多实用的物联网项目中.作为一个菜鸟,本人也捣鼓这个东西很长时间了,在捣鼓这个东西的同时我也总结了一些使用经验.在此借助CSDN平台出几个教 ...
- Jeecg 初级入门
Jeecg 初级入门 1.部署jeecg 1.1.下载jeecg 请在jeecg 发布地址下载jeecg工程 1.2 导入myeclipse8.5 按照如下视图选择jeecg项目存放路径然后导入项目工 ...
- 【技术培训】招收Jeecg门徒 ---javaweb初级入门班
招收Jeecg门徒[javaweb初级入门班] 最近准备带徒弟,带些人才出来,我带徒弟的理念是实践为王,在实践中掌握原理,积累经验. 我带徒弟的方向是JAVA WEB,掌握各种主流框架.(后期会开展j ...
- mui初级入门教程(六)— 模板页面实现原理及多端适配指南
文章来源:小青年原创 发布时间:2016-07-26 关键词:mui,webview,template,os,多端适配 转载需标注本文原始地址: http://zhaomenghuan.github. ...
- Linux初级入门(第一次作业)
Linux初级入门 在本科期间学过一些Linux的简单命令,再次接触Linux不仅巩固了知识还学习到了很多新的东西. 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是 ...
- 【吴刚】电商网站详情页设计初级入门标准视频教程-吴刚-专题视频课程
[吴刚]电商网站详情页设计初级入门标准视频教程-325人已学习 课程介绍 本套教程在学员有PS软件基础及对网页元素制作有了解的基础上,循序渐进,深入浅出,全篇干货,系统化的讲解电商网站 ...
- uni-app项目开发-----初级入门教程(从0到1制作打包自己的app)
uni-app项目开发-----初级入门教程(从0到1制作打包自己的app) uni-app实现了一套代码,同时运行到多个平台.支持iOS模拟器.Android模拟器.H5.微信开发者工具.支付宝小程 ...
- Elasticsearch 使用初级入门 【入门篇】
Elasticsearch 使用初级入门 整理中.... 1.下载 下载网址:https://www.elastic.co/cn/downloads/elasticsearch 2.安装 因为安全问题 ...
- 视频教程-【吴刚】电商活动站设计初级入门标准视频教程-UI
[吴刚]电商活动站设计初级入门标准视频教程 业内知名UID.UED.用户体验.品牌策略与创意设计师,十三年行业职业教育培训经验,业内"UI视频第一人",教学总监.视觉设计讲师. A ...
最新文章
- 全民K歌内容挖掘与召回
- Java中泛型的各种使用
- py爬取英文文档学习单词
- 【转】linux内核态和用户态的区别
- App后台开发运维和架构实践学习总结(4)——APP的注册和登录功能设计
- PU-Net: Point Cloud Upsampling Network
- f77编程和c语言的区别,在fortran中l用F77编译器编译程序时出现问题?
- python模块之httplib(在py3中功能进一步强大,请详看文档)
- swift oc UIimage 和 NSString 互相转换
- SpringBoot系列(5):SpringBoot对JSON数据的处理
- java车牌识别字符分割_opencv 车牌字符分割 ANN网络识别字符
- 求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果
- 闲赋在家的猿们、接下来怎么走?
- 4245. 【五校联考6day2】er
- Android Adapter详解
- 【华人学者风采】李飞飞 美国斯坦福大学
- 机器学习-2.Python机器学习软件包Scikit-Learn的学习与运用
- Nexus war 下载
- C语言之不等式的写法,大于小于等于
- Redis实现在线用户列表(按登录时间排序、可查询、踢人)