venjiang 发表于 2015-11-17 11:02:59

交通信号灯学习


包装盒及配件质量看起来都不错



代码
// 汽车灯
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();
}
}第一次接线,开关忘记接电阻了,信号灯自动切换,加上电阻就好了,还是不够细心。
产品及文档都不错。继续学习。


何处不江南 发表于 2015-11-17 11:15:06

不错不错

Juice 发表于 2015-11-17 11:40:17

哈哈哈~~~我也是从点灯开始入门的不过现在依旧是入门阶段

dsweiliang 发表于 2015-11-17 13:55:49

开始入门咯~

丄帝De咗臂 发表于 2015-11-18 07:37:20

又有入门的了{:5_196:}

venjiang 发表于 2015-11-18 09:34:30

有多少坚持玩的?

luna 发表于 2015-11-18 17:12:04

venjiang 发表于 2015-11-18 09:34
有多少坚持玩的?

我玩了2遍好像,基本的硬件理论掌握了,才是硬件玩家的开始哦~~就可以造自己喜欢的应用了,可以看看这里,有什么激发灵感的~https://mc.dfrobot.com.cn/portal.php?mod=topic&topicid=1

Geemi 发表于 2016-1-11 14:42:14

路过………………{:5_175:}
页: [1]
查看完整版本: 交通信号灯学习