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(初级入门)相关推荐

  1. esp8266初级入门实用教程一之访问心知天气读取实时天气数据

    ESP8266作为一款功能强大的的物联网模块,已经被应用到了很多实用的物联网项目中.作为一个菜鸟,本人也捣鼓这个东西很长时间了,在捣鼓这个东西的同时我也总结了一些使用经验.在此借助CSDN平台出几个教 ...

  2. Jeecg 初级入门

    Jeecg 初级入门 1.部署jeecg 1.1.下载jeecg 请在jeecg 发布地址下载jeecg工程 1.2 导入myeclipse8.5 按照如下视图选择jeecg项目存放路径然后导入项目工 ...

  3. 【技术培训】招收Jeecg门徒 ---javaweb初级入门班

    招收Jeecg门徒[javaweb初级入门班] 最近准备带徒弟,带些人才出来,我带徒弟的理念是实践为王,在实践中掌握原理,积累经验. 我带徒弟的方向是JAVA WEB,掌握各种主流框架.(后期会开展j ...

  4. mui初级入门教程(六)— 模板页面实现原理及多端适配指南

    文章来源:小青年原创 发布时间:2016-07-26 关键词:mui,webview,template,os,多端适配 转载需标注本文原始地址: http://zhaomenghuan.github. ...

  5. Linux初级入门(第一次作业)

    Linux初级入门 在本科期间学过一些Linux的简单命令,再次接触Linux不仅巩固了知识还学习到了很多新的东西. 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是 ...

  6. 【吴刚】电商网站详情页设计初级入门标准视频教程-吴刚-专题视频课程

    [吴刚]电商网站详情页设计初级入门标准视频教程-325人已学习 课程介绍         本套教程在学员有PS软件基础及对网页元素制作有了解的基础上,循序渐进,深入浅出,全篇干货,系统化的讲解电商网站 ...

  7. uni-app项目开发-----初级入门教程(从0到1制作打包自己的app)

    uni-app项目开发-----初级入门教程(从0到1制作打包自己的app) uni-app实现了一套代码,同时运行到多个平台.支持iOS模拟器.Android模拟器.H5.微信开发者工具.支付宝小程 ...

  8. Elasticsearch 使用初级入门 【入门篇】

    Elasticsearch 使用初级入门 整理中.... 1.下载 下载网址:https://www.elastic.co/cn/downloads/elasticsearch 2.安装 因为安全问题 ...

  9. 视频教程-【吴刚】电商活动站设计初级入门标准视频教程-UI

    [吴刚]电商活动站设计初级入门标准视频教程 业内知名UID.UED.用户体验.品牌策略与创意设计师,十三年行业职业教育培训经验,业内"UI视频第一人",教学总监.视觉设计讲师. A ...

最新文章

  1. 全民K歌内容挖掘与召回
  2. Java中泛型的各种使用
  3. py爬取英文文档学习单词
  4. 【转】linux内核态和用户态的区别
  5. App后台开发运维和架构实践学习总结(4)——APP的注册和登录功能设计
  6. PU-Net: Point Cloud Upsampling Network
  7. f77编程和c语言的区别,在fortran中l用F77编译器编译程序时出现问题?
  8. python模块之httplib(在py3中功能进一步强大,请详看文档)
  9. swift oc UIimage 和 NSString 互相转换
  10. SpringBoot系列(5):SpringBoot对JSON数据的处理
  11. java车牌识别字符分割_opencv 车牌字符分割 ANN网络识别字符
  12. 求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果
  13. 闲赋在家的猿们、接下来怎么走?
  14. 4245. 【五校联考6day2】er
  15. Android Adapter详解
  16. 【华人学者风采】李飞飞 美国斯坦福大学
  17. 机器学习-2.Python机器学习软件包Scikit-Learn的学习与运用
  18. Nexus war 下载
  19. C语言之不等式的写法,大于小于等于
  20. Redis实现在线用户列表(按登录时间排序、可查询、踢人)

热门文章

  1. Cisco Packet Tracer软件的下载安装
  2. 列出1~10000的所有质数。
  3. BaseTool的一些理解
  4. 显示农历的html代码,很全的显示阴历(农历)日期的js代码
  5. Templates for Keynote DesiGN for mac(Keynote模板)
  6. 中小企业管理解决方案
  7. java.nio包网络编程_Java NIO网络编程
  8. 淘宝购买天龙八部单机版实现局域网联机
  9. 甘蔗歉收糖价大涨,游资热捧白糖期货
  10. 轮式移动机器人里程计分析