如何使用Arduino Nano控制红绿灯

描述

  本文将介绍如何基于一个简单PCB洞洞板制作红绿灯,并通过Arduino Nano R3对它进行控制。

  元器件清单

  Arduino Nano R3

  LED发光二极管(红、绿、黄)

  220欧姆电阻3个

  按钮开关

  洞洞板

  单排母插针

  烙铁

  威廉希尔官方网站 原理图

pcb

  Arduino Nano制作红绿灯连接图

  威廉希尔官方网站 连接图,因为软件中没有找到Nano的原型图,所以用UNO代替了,但是两者间所示的接口都是一样的。三个按钮开关分别连接Nano的GND和10、11、12针;Nano的4、5、6针分别通过三个220欧电阻连接LED发光二极管的正极,负极接Nano的GND。

  红绿灯焊接

pcb

  基于Arduino Nano制作红绿灯

pcb

  Arduino Nano制作红绿灯

  采用洞洞板的目的,是可以将所有的原件焊接在一起,更利于后续的美化。同时使用单排母插针焊接在PCB洞洞板一侧,这样可以方便将Arduino Nano随时插入和取下来,所有分立元件焊接在另一侧,这样看上去会简洁很多。

  控制代码

  本项目的代码和威廉希尔官方网站 一样非常简单,易于实现。完整代码如下:

const int led[3] = {4, 5, 6};

const int button[3] = {10, 12, 11};

int state[3] = {0, 0, 0};

int button_on[3] = {0, 0, 0};

long last_time[3] = {0, 0, 0};

long cur_time[3] = {0, 0, 0};

long debounce_delay = 500;

void setup() {

for (int i = 0; i < 3; i++) {

pinMode(led[i], OUTPUT);

}

for (int i = 0; i < 3; i++) {

pinMode(button[i], INPUT_PULLUP);

}

}

void loop() {

for (int i = 0; i < 3; i++) {

digitalWrite(led[i], state[i]);

button_on[i] = (digitalRead(button[i]) == LOW);

cur_time[i] = millis();

if (cur_time[i] - last_time[i] > debounce_delay) {

if (button_on[i]) {

state[i] = 1 - state[i];

last_time[i] = cur_time[i];

}

};

};

}

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分