Arduino学习记录

文章目录

  • 常用的学习网站
  • 常用库的下载:
  • Arduino资料总结
    • Aruino接口资源和基本资料
    • Arduino常用数据类型和库函数总结
      • 数据类型
      • 库函数
    • 定时功能
    • 看门狗功能
    • 如何改变文本的样式
    • 生成一个适合你的列表
    • 创建一个表格
      • 设定内容居中、居左、居右
      • SmartyPants
    • 创建一个自定义列表
    • 如何创建一个注脚
    • 注释也是必不可少的
    • KaTeX数学公式
    • 新的甘特图功能,丰富你的文章
    • UML 图表
    • FLowchart流程图
    • 导出与导入
      • 导出
      • 导入

常用的学习网站

Arduino-home:官方网站

Arduino-中文社区:中文社区

Arduino-百度贴吧:百度贴吧

Arduino-综合讨论区:综合讨论区

创客制造: 各种开源硬件教程

Arduino UNO数据手册 Arduino UNO数据手册

学习项目(强烈推荐):学习项目

常用库的下载:

Arduino-PID :Arduino-PID-官方说明 ,解释
Arduino-Timer:定时库Github下载

Arduino资料总结

Aruino接口资源和基本资料

  • 处理器核心:ATmega328

  • 14路数字输入/输出口(digital I/O)

     1个串口:0: RX;1:TX
     6个PWM输出口:3,5,6,9,10,11(也可以作为数字I/O口)
     纯数字I/O口:2,4,7,8,12,13(只具备数字I/O功能)
    
  • 6路模拟输入: A0-A5

  • 1个16MHz晶体振荡器

  • 1个USB接口

  • 1个复位按钮

  • 输入电压:外接USB时,无需外部供电。或者单独5V~9V DC

  • 输出电压:2种输出电压:5V DC,40mA电流 和3.3V DC

板子接口

Arduino常用数据类型和库函数总结

数据类型

数据类型:
boolean  布尔类型
char
byte  字节类型
int
unsigned int
long
unsigned long
float
double
string
array
常量:
HIGH | LOW     表示数字IO口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。
INPUT | OUTPUT   表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT  表示输出(AVR能提供5V电压 40mA电流)。
true | false    true 表示真(1),false表示假(0)。

库函数

  • 基本结构
void setup();//初始化函数,整个程序开始运行时,执行一次,注意只执行一次
void loop();//连续循环执行函数内的语句
  • I/O控制
pinMode(pin,mode);//定义引脚是输入还是输出,pin是int类型0~13,mode为INPUT或OUTPUT,相当于给这个引脚定义
digitalWrite(pin,valve);//引脚输出电平,输出高或者低,pin是int类型0~1,valve是HIGH或LOW	
int digitalRead(pin);//读取引脚电平,可以读取数字传感器

pinMode函数用于配置引脚为输入或者输出模式,它是一个无返回值的函数,一般放在setup()函数内,先设置再使用。pinMode函数由两个参数–pin 和 mode,pin参数表示要配置的引脚代号,以Arduino Uno为例,它的取值范围是013,也可以把模拟引脚(A0A5)作为数字引脚使用,此时编号为14脚到19脚。mode参数表示设置的模式——INPUT输入模式或者OUTPUT输出模式,其中INPUT用于读取信号,OUTPUT用于输出控制信号。
digitalWrite函数的作用是设置引脚的输出电压为高电平或低电平,也是一个无返回值的函数,在使用该函数设置引脚之前,需要先用pinMode()函数交引脚设置为OUTPUT模式,因为数字口具有输入或输出两种状态,需要预先定义。digitalWrite函数有两个参数—pin 和 value, pin 代表引脚,value代表输出的电平——HIGH(高电平)或LOW(低电平)。

  • 模拟I/O口(PWM)
int digitalRead(pin);//可以读取模拟传感器,精度10位AD(0~5V表示为0~1024)
analogWrite(pin,valve);//3,5,6,9,10,11口PWM输出,valve为0~255
  • 时间函数
unsigned long millis();//返回时间函数,单位毫秒(ms),程序开始运行到该语句这边所用的时间,溢出大概50天
unsigned long micros();//返回时间函数,单位微秒(ms),程序开始运行到该语句这边所用的时间,大概一个小时
delay(ms);//延时函数,单位毫秒(ms)
delayMicroseconds(us);//延时函数,单位微秒(us)
  • 串口收发
int Serial.available() //判断缓存区状态,返回串口接收缓冲区的字节数 
Serial.begin(speed,config)  //初始化串口,speed波特率,config数据、校验、停止位 
Serial.end()  //释放串口通信引脚,使其作为普通引脚 
Serial.find(target)  //在缓冲区中搜索target,找到返回 true,否则返回false 
Serial.findUntil(target,terminal)  //搜索target直至terminal,无返回值 
Serial.flush()  //等待正在发送的数据发送完成 
Serial.peek()   //返回但不删除一字节数据 
Serial.print(value,format)  //以ASCII码格式输出数据 
Serial.read()   //读取并删除一字节数据 
Serial.readBytes(buffer,length) //读取 length长度的数据并存入 buffer 
Serial.readBytesUntil(character,buffer,length) 
Serial.setTimeout(time)  //设置超时(等待串口数据)时间,与前两个函数配合使用 
Serial.write(val/str/(buf,len)) //以字节形式输出数据到串口,返回输出的字节数 
void serialEvent() //串口事件,在串口缓冲区有数据时触发,实际是运行在两次 loop之间 
/*软件模拟串口通信*/
SoftwareSerial mySerial(rxPin.txPin)  构造函数,创建一个软串口 
mySerial.listen()  开启软串口监视状态,一个时刻只能监视一个软串口 
mySerial.isListening()  判断是不是处在监视状态 
mySerial.overflow()  检测缓冲区是不是已经溢出 

定时功能

定时库Github下载

  • 示例
#include <Event.h>
#include <Timer.h>

Timer t;//实例化一个定时器对象
Timer t1;

void setup() {
  // initialize serial:
  Serial.begin(9600);
  t.every(1000,callbackfun);//定时1s,执行回调函数中断
  t1.every(2000,callbackfun1);//定时2s,执行回调函数中断
}

void loop() {
  t.update();//更新,这句话要有
  t1.update();
  
}

void callbackfun(){
  
Serial.println("hello");
}
void callbackfun1(){
  
Serial.println("hello1111111");
}

看门狗功能

介绍:看门狗定时器用避免电子设备出现故障造成死机,例如死循环。为此,看门狗作为一个物理定时器,在程序运行时不断的增加,并驱动一个中断, 如果达到某一个设定的值,就会复位微处理器。在正常操作下,定时器在程序流程中的定期设置为0, 但如果代码进入死循环,定时器复位不会发生,看门狗触发中断并重新启动。使用看门狗防止死机:Arduino为用户提供了方便操作的函数和宏,可以直接引入库:

#include <avr/wdt.h>

这个函数库提供了三个API函数供我们使用:

wdt_enable(timeout) //看门狗使能并设置超时时间
wdt_disable() //关闭
wdt_reset() //复位

通常情况下,需要在setup()函数中使能看门狗定时器,并在loop()中不断的喂狗防止溢出,官方给出的示例代码如下:


#include <avr/wdt.h>
void setup()
{
   Serial.begin(9600);
   pinMode(13,OUTPUT);
   wdt_enable(WDTO_2S); //开启看门狗,并设置溢出时间为两秒
}
 
void loop()
{
   digitalWrite(13,HIGH);
   delay(100);
   digitalWrite(13,LOW);
   delay(100);
   for(int i=0;;i++){
   Serial.println(i);
   wdt_reset(); //喂狗操作,使看门狗定时器复位,上面程序运行超过2秒就会重,跳出loop循环
}

看门狗参考资料

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

你可能感兴趣的:(Arduino学习记录)