gray6666 发表于 2021-3-13 21:15:32

Ardunio UNO 1 ~数字接口

一、Arduino 和 Arduino UNO 科普
   Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
   Arduino Uno是基于ATmega328P的微控制器板。它有14个数字输入/输出引脚(其中6个可用作PWM输出),6个模拟输入,16MHz晶振时钟,USB连接,电源插孔,ICSP接头和复位按钮。只需要通过USB数据线连接电脑就能供电、程序下载和数据通讯。

Arduino UNO R3是一款非常适合单片机入门的开发板,采用AVR单片机ATmega328P作为主控制器,集成开发环境为Arduino IDE,可以帮助初学者快速掌握单片机技术。
https://mc.dfrobot.com.cn/data/attachment/album/202103/13/155807oqqx0soghqghnaxv.jpg

二、Arduino UNO数字口
数字接口,总共16个,功能有区别:
1.数字接口从图上可以看到总共有14个(0~13号),0号和1号口属于串口通信用的TX,RX,一般我们不去占用;从2号口到13号口是我们可随意使用的数字接口数字接口可以读取数字信号,也可以输出数字信号,而在2到13号口中带有“~”符号的接口代表它不仅可以输出高电平和低电平信号,也可以输出PWM信号,不带“~”符号的接口就只能输出5V高电平或者0V低电平。输出高电平和低电平可以简单理解为只能输出5V和0V。
https://mc.dfrobot.com.cn/data/attachment/album/202103/13/160426esv5ddsv2vs9kqt9.jpg

三、入门案例

输出信号 digitalWrite(pin, value)
pin: the Arduino pin number.
value: HIGH or LOW.


读入信号
digitalRead(pin)案例电路连接图

数字控制 经典案例《开关灯》
int LED = 13;

void setup() {               

// 定义13为输出引脚

pinMode(LED, OUTPUT);   

}

void loop() {

digitalWrite(LED, HIGH);   // 点亮LED

delay(1000);               // 持续1秒

digitalWrite(LED, LOW);    // 熄灭LED

delay(1000);               // 持续1秒

}

2.带有“~”符号的接口PWM(Pulse-width modulation)还可以输出模拟信号 。PWM是一种方波控制信号。方波高电平的宽度在一个周期里的占比被称为占空比(Duty Cycle)。改变PWM的占空比,可以改变输出信号的平均电压,实现模拟电压的输出。

Arduino Uno的3,5,6,9,10,11接口可以通过简单语句analogWrite(pin, dutyCycle)来实现一个指定占空比的PWM。其中pin的值选择(5,6,9,10,3,11),dutyCycle的值在0~255之间,0为占空比0%,255为占空比100%。但是这种方式PWM信号的频率是固定的默认值,大约1000Hz左右(16MHz/64/256)。

analogWrite(pin, dutyCycle)

案例电路连接图

PWM案例《控制LED的亮度》
#define LED 3 //定义LED灯引脚

int i = 0;                   //存储最新数值变数,我们将使用它来从上到下计数

void setup(){

pinMode(LED,OUTPUT);       //设定LED引脚为输出

}

void loop(){

for(i = 0;i < 255;i++){    //变数从0到254之间变化(渐强)

    analogWrite(LED, i);   //设定LED亮度

    delay(10);               //延时10ms,因为analogWrite执行瞬间完成,

                           //速度太快不易察觉

                           

}

for(i =255;i > 0; i--){    //变数从255到1之间变化(渐弱)

   analogWrite(LED, i);    //设定LED亮度

   delay(10);            //延时10ms

}

}
页: [1]
查看完整版本: Ardunio UNO 1 ~数字接口