大家好我是你们的朋友JamesBin,这篇课文能让你从0到1的学习arduino,下面让我们开始学习吧!
三相电详解一、认识arduino二、点灯程序三、闪烁LED灯四、呼吸灯五、按键六、按键消抖持续更新中 一、认识arduinoArduino这个名字源于意大利语,本意为“强壮的朋友”,于2005年诞生于意大利的伊夫雷亚交互设计学院(Interaction Design Institute Ivrea),主导项目的主要创始人之一名叫Massimo Banzi。
Arduino项目创建的初衷,是为了降低交互设计学院里学生创作交互作品的门槛。其中除了减少学生的花费以外,还考虑到了其学习的难度。也就是说,只要花费很少的money,具有非常少量的编程知识,就可以根据天马行空的创意,创造出不同的作品。
本着开源的精神,让更多的爱好者受益,Arduino项目创建的伊始,就遵守了开源硬件的协议,任何人都可以免费拿到Arduino硬件电路板的设计图纸,并根据自己的设计工艺进行批量生产。
近年来随着智能硬件的崛起,全世界兴起了一种名为创客的风潮,他们使用Arduino及其周边的各种硬件模块,快速搭建各种好玩的产品。比如可以快速创建个性化的空气质量检测器,火灾报警器,甚至有爱猫的朋友作出智能喂猫器,甚至还可以做出各种稀奇古怪的小型机器人,飞行爱好者们设计出各种飞行器,从而最终完成各种惊险刺激的航拍。
既然Arduino可以做出这么多有趣的东西,接下来就让我们认识一下她吧!
图片来源:Arduino UNO电路板
图片来源:Arduino UNO电路板
如上图所示,Arduino的基础电路板名叫Arduino UNO。这款电路板最初是2011年9月25日在纽约创客大会(New York Maker Faire)上发布的,型号名字“UNO”,是意大利语中“一”的意思。
简单概括来说,电路板主要包括三大部分:
处理器使用的是Atmel公司生产的处理器。
电源的供电方式有三种,第一种是直接通过USB接口直接供电,第二种是通过柱形外部电源接口进行供电,最后一种是通过扩展插槽上的3V或5V引脚进行供电。
扩展插槽主要分为模拟信号引脚和数字信号引脚以及接地引脚。顾名思义,数字信号引脚可以直接引入或输出的是数字信号,模拟信号引脚引入或输出的是模拟信号。当电路设计复杂的时候,扩展插槽可以接入扩展板,根据不同需求,对整个电路板进行扩展,增强了基础电路板的可扩展性。图中的重启按钮可以对整个电路板进行重启操作。
硬件方面
图片来源:Arduino-UNO-LED
具体包括如下:
Arduino UNO电路板(1块)
mini面包板(1块)
220欧姆电阻(1个)
LED灯(1盏)
面包线(2根)
软件方面只需要Arduino官方提供的IDE即可。
准备好上面这些之后,接下来只要连接好电路,敲几行简单的代码,就可以让我们的神灯闪烁起来!
连接电路
代码:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
}
代码解释:
int led = 13; // 定义针脚号,数字类型为整型
// 对Arduino电路板或相关状态进行初始化方法
pinMode(led, OUTPUT);
// 设定13号针脚为输出状态,pinMode()方法是Arduino类库提供的系统方法,调用的时候需要传入两个参数。一个是针脚号,另一个是针脚号的状态。
三、闪烁LED灯
硬件方面
图片来源:Arduino-UNO-LED
具体包括如下:
Arduino UNO电路板(1块)
mini面包板(1块)
220欧姆电阻(1个)
LED灯(1盏)
面包线(2根)
软件方面只需要Arduino官方提供的IDE即可。
准备好上面这些之后,接下来只要连接好电路,敲几行简单的代码,就可以让我们的神灯闪烁起来!
连接电路
int led = 13; // 定义针脚号,数字类型为整型
void setup() {
pinMode(led, OUTPUT);
}
// 系统调用,无限循环方法
void loop() {
digitalWrite(led, HIGH);
delay(1000);
// 此处向Arduino的13针脚发送低电压状态,
// 此状态可以让LED神灯熄灭
digitalWrite(led, LOW);
// 再次延迟1000毫秒,也即1秒钟,
delay(1000);
}
四、呼吸灯
硬件方面
图片来源:Arduino-UNO-LED
软件方面
只需要Arduino官方提供的IDE即可。
准备好上面这些之后,接下来只要连接好电路,敲几行简单的代码,就可以让我们的神灯闪烁起来!
连接电路
代码如下:
void setup ()
{
pinMode(13,OUTPUT);
}
void loop()
{
//循环语句,控制PWM亮度的增加
for (int a=0; a=0;a--)
{
analogWrite(11,a);
delay(10);//当前亮度的维持的时间,单位毫秒
}
delay(800);//完成一个循环后等待的时间,单位毫秒
}
五、按键
硬件方面
图片来源:Arduino电路配件
具体包括如下:
Arduino UNO电路板(1块)
面包板(1块)
10k电阻(1个)
按键开关(1个)
面包线(3根)
软件方面
Arduino官方提供的IDE,和之前一样。
代码如下
const int buttonPin = 2;
const int ledPin = 13;
// 定义按键状态变量初始值为0
int buttonState = 0;
void setup() {
// 设置ledPin端口为输出端口
pinMode(ledPin, OUTPUT);
// 设置buttonPin端口为输入端口
pinMode(buttonPin, INPUT);
}
void loop() {
// 读取按键状态
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
// 点亮LED神灯
digitalWrite(ledPin, HIGH);
} else {
// 熄灭LED神灯
digitalWrite(ledPin, LOW);
}
}
六、按键消抖
连线:
代码
// 定义按键输入针脚号常量,
// 并初始化为2号针脚。
const int buttonPin = 2;
// 定义LED输入针脚号常量,
// 并初始化为13号针脚。
// 注:此处我们使用的LED神灯是Arduino UNO电路板自带,
// 此神灯对应的针脚号默认为13,此数值不得随意更改,
// 所以这里定义的数值13是为了和默认值相对应。
const int ledPin = 13;
// 定义记录LED神灯当前状态的变量,
// 并初始化状态为HIGH。
int ledState = HIGH;
// 定义记录按键当前状态的变量
int buttonState;
// 定义记录按键最近一次状态变化的变量,
// 并初始化状态为LOW。
int lastButtonState = LOW;
// 定义记录最近一次抖动的时间变量,
// 并初始化时间为0毫秒。
long lastDebounceTime = 0;
// 定义延迟抖动的时间变量,
// 并初始化为50毫秒。
long debounceDelay = 50;
// 对Arduino电路板或相关状态进行初始化方法
void setup() {
// 设置按键的针脚为输入状态
pinMode(buttonPin, INPUT);
// 设置电路板上LED神灯的针脚状态为输出状态
pinMode(ledPin, OUTPUT);
// 设置电路板上LED神灯的初始状态,
// 此处因为变量ledState的初始状态为HIGH,
// 所以LED神灯的初始状态为亮。
digitalWrite(ledPin, ledState);
}
// 系统调用,无限循环方法
void loop() {
// 读取按键的状态
int reading = digitalRead(buttonPin);
// 判断当前的按键状态是否和之前有所变化
if (reading != lastButtonState) {
// 如果按键发生了变化,
// 则重新设置最近一次抖动的时间。
lastDebounceTime = millis();
}
// 判断按键按下或抬起的状态时间间隔是否大于延迟抖动的时间长度。
// 方法millis()可以获取当前时间,单位统一为毫秒。
if ((millis() - lastDebounceTime) > debounceDelay) {
// 判断当前的按键状态是否和之前有所变化
if (reading != buttonState) {
// 如果发生了变化,
// 则更新按键状态变量。
buttonState = reading;
// 判断按键的状态是否为按下,
// 只有在按键按下的时候,
// 才改变LED神灯的状态。
if (buttonState == HIGH) {
// 如果LED神灯当前为亮度,
// 则变为灭。如果为灭,
// 则变为亮。
ledState = !ledState;
}
}
}
// 最终改变电路板上LED神灯的状态
digitalWrite(ledPin, ledState);
// 更新按键最近一次状态变化的变量
lastButtonState = reading;
}
持续更新中