666浏览
查看: 666|回复: 0

[入门] 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,可以帮助初学者快速掌握单片机技术。


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


三、入门案例

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


读入信号
digitalRead(pin)案例电路连接图
1.png
数字控制 经典案例《开关灯》
  1. int LED = 13;
  2. void setup() {               
  3.   // 定义13为输出引脚
  4.   pinMode(LED, OUTPUT);     
  5. }
  6. void loop() {
  7.   digitalWrite(LED, HIGH);   // 点亮LED
  8.   delay(1000);               // 持续1秒
  9.   digitalWrite(LED, LOW);    // 熄灭LED
  10.   delay(1000);               // 持续1秒
  11. }
复制代码


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)

案例电路连接图
11.png
PWM案例《控制LED的亮度》
  1. #define LED 3 //定义LED灯引脚
  2. int i = 0;                   //存储最新数值变数,我们将使用它来从上到下计数
  3. void setup(){
  4.   pinMode(LED,OUTPUT);       //设定LED引脚为输出
  5. }
  6. void loop(){
  7.   for(i = 0;i < 255;i++){    //变数从0到254之间变化(渐强)
  8.     analogWrite(LED, i);     //设定LED亮度
  9.     delay(10);               //延时10ms,因为analogWrite执行瞬间完成,
  10.                              //速度太快不易察觉
  11.                              
  12.   }
  13.   for(i =255;i > 0; i--){    //变数从255到1之间变化(渐弱)
  14.      analogWrite(LED, i);    //设定LED亮度
  15.      delay(10);              //延时10ms
  16.   }
  17. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail