交通信号灯学习
包装盒及配件质量看起来都不错
代码
// 汽车灯
int carRed = 12;
int carYellow = 10;
int carGreen = 8;
// 开关
int button = 7;
unsigned long changeTime; // 按钮按下后的时间
// 行人灯
int pedRed = 1;
int pedGreen = 3;
int crossTime = 5000; // 行人通过时间
// 等待变灯时间
int waitTime = 5000;
void setup() {
setOutput(1);
setOutput(3);
setOutput(8);
setOutput(10);
setOutput(12);
// 设置按钮为输入
pinMode(button, INPUT);
// 初始状态
// 汽车
digitalWrite(carGreen, HIGH);// 绿灯亮
// 行人
digitalWrite(pedRed, HIGH); // 红灯亮
}
// 设置指定针脚输出
void setOutput(int pin) {
pinMode(pin, OUTPUT);
}
// 改变信息号灯
void changeLights() {
// 汽车
digitalWrite(carGreen, LOW);// 绿灯灭
digitalWrite(carYellow, HIGH); // 黄灯亮
delay(2000);
digitalWrite(carYellow, LOW); // 黄灯灭
digitalWrite(carRed, HIGH); // 红灯亮
delay(1000);
// 行人
digitalWrite(pedRed, LOW); // 红灯灭
digitalWrite(pedGreen, HIGH); // 绿灯亮
// 等待行人通过
delay(crossTime);
// 闪烁
pedLightFlash();
digitalWrite(pedRed, HIGH); // 红灯亮
delay(500);
// 汽车
digitalWrite(carRed, LOW); // 红灯灭
digitalWrite(carYellow, HIGH); // 黄灯亮
delay(1000);
digitalWrite(carYellow, LOW); // 黄灯灭
digitalWrite(carGreen, HIGH); // 绿灯亮
changeTime = millis(); // 记录上一次灯变化的时间
}
// 行人灯闪烁
void pedLightFlash() {
for (int i = 0; i < 10; i++) {
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}
}
void loop() {
int state = digitalRead(button);
if (state == HIGH && (millis() - changeTime) > waitTime) {
changeLights();
}
}第一次接线,开关忘记接电阻了,信号灯自动切换,加上电阻就好了,还是不够细心。
产品及文档都不错。继续学习。
不错不错 哈哈哈~~~我也是从点灯开始入门的不过现在依旧是入门阶段 开始入门咯~ 又有入门的了{:5_196:} 有多少坚持玩的? venjiang 发表于 2015-11-18 09:34
有多少坚持玩的?
我玩了2遍好像,基本的硬件理论掌握了,才是硬件玩家的开始哦~~就可以造自己喜欢的应用了,可以看看这里,有什么激发灵感的~https://mc.dfrobot.com.cn/portal.php?mod=topic&topicid=1 路过………………{:5_175:}
页:
[1]