Arduino基础学习笔记

    科技2022-07-11  90

    Ardunio概述

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

    基本概念

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

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

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

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

    常用组件

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

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

    下拉电阻:下拉电阻的作用是将一个未知的电平拉低到稳定的低电平状态。

      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个数值。

    Processed: 0.031, SQL: 8