欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Arduino基础学习笔记

程序员文章站 2022-07-08 18:07:59
Atmel Atmega 328微控制器  数字输入/输出:向开发板输入离散值0,1信号叫数字数入。从开发板输出离散值0,1信号叫数字输出。TX->1 RX<-0 与电脑传输数据使用。  模拟输入/输出:向开发板输入连续电信号叫模拟输入。从开发板输出连续电信号叫模拟输出。......

Ardunio概述

  Ardunio是一个易于硬件和软件开发的开源电子平台,它可以接收来自多种传感器的输入数据来感知环境,并控制LED,电机等多种设备的运转。你可以使用Java,C++,Python等Ardunio支持的编程语言来控制Ardunio的运行。

基本概念

  • 数字输入/输出:向开发板输入离散值0,1信号叫数字数入。从开发板输出离散值0,1信号叫数字输出。TX->1 RX<-0 与电脑传输数据使用。
  • 模拟输入/输出:向开发板输入连续电信号叫模拟输入。从开发板输出连续电信号叫模拟输出。
  • PWM概念:PWM指脉冲宽度调制,通过对脉冲(在极短时间内不断变化的数字信号)的宽度进行调制,来等效地获得所需要波形,是一种常用的数字信号转换为模拟信号的方式。例如:
    Arduino基础学习笔记

  当LED引脚电平为以下波形时
Arduino基础学习笔记
  高电平铺满整个PWM时钟周期,设此时LED亮度为100%。若为以下波形时
Arduino基础学习笔记

  则此时LED亮度为50%。设时间1为一个PWM时钟周期。在该时钟周期内,占空比(高电平保持的时间与PWM的时钟周期的总时间之比)为0.5,此时占空比可以看作LED亮度。

  • 数模转换:把数字信号转换为模拟信号或者把模拟信号转换为数字信号。

常用组件

  • 上拉电阻:上拉电阻的作用是将一个未知的电平拉高到稳定的高电平状态。在Ardunio中数字引脚和模拟引脚都内置了上拉电阻,可以使用代码激活。此外,自己配置的上拉电阻一般为10KΩ。
    Arduino基础学习笔记

  R1为上拉电阻,若开关S1断开,Input通过两个电阻接+5V,为稳定高电平。若开关S1闭合,Input接地,为稳定低电平。若没有上拉电阻R1,则开关断开时Input浮空,不确定其电平,产生电子噪声。

  • 下拉电阻:下拉电阻的作用是将一个未知的电平拉低到稳定的低电平状态。
    Arduino基础学习笔记

  R1为下拉电阻,若开关S1断开,Input通过两个电阻接地,为稳定低电平。若开关S1闭合,Input与+5V相连,为稳定高电平。若没有下拉电阻R1,则开关断开时Input浮空,不确定其电平,产生电子噪声。

Arduino程序结构

// 给开发板通电或者按下复位按钮后只执行一次
void setup () {}

// 反复执行
void loop () {}

数字电路API

  • 设置数字引脚输入输出模式
void pinMode(param1, param2);

  param1:引脚编号
  param2:模式,可选关键字INPUT(输入)或OUTPUT(输出)
  例如pinMode(2, OUTPUT)为设置2号引脚为输出模式
  Ardunio引脚开机默认为INPUT模式。当引脚设定为OUTPUT模式时,引脚为低阻抗状态,Ardunio可以向其它电路元器件提供电流,若元器件驱动电流超过40mA,则需要其他辅助元器件。当引脚设置为INPUT模式时,此时引脚处于高阻抗状态,等同于在引脚前串联一个100MΩ的电阻,所以只需要很小的电流就能改变引脚电平状态。当引脚设置为INPUT_PULLUP模式,则启用引脚内部上拉电阻,相当于引脚通过上拉电阻连接到高电平上。

  • 向引脚写数字信号
void digitalWrite(param1, param2);

  param1:引脚编号
  param2:要输出的数字信号,可选关键字HIGH(高电平5V)或LOW(低电平0V/GND)
  例如digitalWrite(2, HIGH)为设置2号引脚上的电平为高电平,该函数需要先设置pinMode(2, OUTPUT),即设置2号引脚为输出模式。

  • 从数字引脚中读取数字信号
HIGH/LOW digitalRead(param1);

  param1:引脚编号
  return:返回HIGH表示此时引脚为高电平,返回LOW表示此时引脚为低电平
  例如digitalRead(2) == LOW为判断此时2号引脚是否为低电平

  • 设置延迟
void delay(param1);

  param1:延迟时间(ms)
  例如delay(1000)为等待1000毫秒后执行下一条语句。

串口通信

  串口通信用于Ardunio开发板与电脑或者其他设备之间进行通信

  • 初始化串口通信
Serial.begin(param);

  param1:串口通信传输位数
  例如Serial.begin(9600)为初始化串口通信,每秒9600位

  • 输出变量到串口监视器
Serial.println(param);

  param:需要的输出信息
  例如Serial.println(buttonState)为向串口输出buttonState数据

获取随机数

  • 获取一个长整型随机数
long random(param1, param2);

  param1:可以取到的随机数的最小值
  param2:不可以取到的随机数的最大值
  return:long型随机数
  例如random(1, 10)为获取大于等于1且小于10的随机整数

模拟电路API

  • 向引脚中写模拟信号
void analogWrite(param1, param2);

  param1:引脚编号
  param2:要输出的模拟信号,范围为0~255
  例如analogWrite(9, 128)为向9号引脚写入数据128
  在Ardunio Uno中只有3,5,6,9,10,11能够输出模拟信号

  • 从模拟输入引脚中读取数据数值
int analogRead(param);

  param:引脚编号
  return:返回int类型数据,范围在0-1023之间
  Ardunio控制器有多个10位数模转换通道,因此有0~2^10-1共1024个数值。

本文地址:https://blog.csdn.net/yq543858194/article/details/108911619

相关标签: 物联网 单片机