CODE | LED Interactive Traffic Lights - Arduino Project 004

RonWang3 years ago (2023-05-31)电子编程 COD448

This time you are going to extend the previous project to include a set of pedestrian lights and a pedestrian push button to request to cross the road. The Arduino will react when the button is pressed by changing the state of the lights to make the cars stop and allow the pedestrian to cross safely.

This is the first time you are going to interact with the Arduino and cause it to do something when you change the state of a button that the Arduino is watching. In this project, you will also learn how to create your own functions in code.

From now on, I will no longer list the breadboard and jumper wires in the parts required list. Note that you will always need these basic components.

Project 4 -Interactive Traffic Lights

04 Interactive Traffic Light Circuit

04 Interactive Traffic Light Schematic

/* Coding Ron Wang
   June 11st 2024
   Autaba support for coding hardwarec
 */
// Project 4 - Interactive LED Traffic Lights

int carRed = 10; // assign the car lights
int carYellow = 9;
int carGreen = 8;
int pedRed = 7; // assign the pedestrian lights
int pedGreen = 6;
int button = 2; // button pin
int crossTime = 5000; // time alloyoud to cross
unsigned long changeTime; // time since button pressed
void setup() {
 pinMode(carRed, OUTPUT);
 pinMode(carYellow, OUTPUT);
 pinMode(carGreen, OUTPUT);
 pinMode(pedRed, OUTPUT);
 pinMode(pedGreen, OUTPUT);
 pinMode(button, INPUT); // button on pin 2
 // turn on the green light
 digitalWrite(carGreen, HIGH);
 digitalWrite(pedRed, HIGH);
}
void loop() {
 int state = digitalRead(button);
 /* check if button is pressed and it is over 5 seconds since last button press */
 if (state == HIGH && (millis() - changeTime) > 5000) {
 // Call the function to change the lights
 changeLights();
 }
}
void changeLights() {
 digitalWrite(carGreen, LOW); // green off
 digitalWrite(carYellow, HIGH); // yellow on
 delay(2000); // wait 2 seconds
 digitalWrite(carYellow, LOW); // yellow off
 digitalWrite(carRed, HIGH); // red on
 delay(1000); // wait 1 second till its safe
 digitalWrite(pedRed, LOW); // ped red off
 digitalWrite(pedGreen, HIGH); // ped green on
 delay(crossTime); // wait for preset time period
 // flash the ped green
 for (int x=0; x<10; x++) {
 digitalWrite(pedGreen, HIGH);
 delay(250);
 digitalWrite(pedGreen, LOW);
 delay(250);
 }
 // turn ped red on
 digitalWrite(pedRed, HIGH);
 delay(500);
 digitalWrite(carYellow, HIGH); // yellow on
 digitalWrite(carRed, LOW); // red off
 delay(1000);
 digitalWrite(carGreen, HIGH);
 digitalWrite(carYellow, LOW); // yellow off
 // record the time since last change of lights
 changeTime = millis();
 // then return to the main program loop
}

             

Share with Friends:

Related Articles

Pelles C Install and Debug runtime Enviroment

Pelles C Install and Debug runtime Enviroment

C语言调试运行环境之TurboC一文介绍了在32位Windows系统下安装C语言运行环境之TubroC,但是由于TurobC只能在32位系统下运行,导致现在很多Windows10和Windows 11…

CODE | IR Remote Control Light - Arduino Project 050

CODE | IR Remote Control Light - Arduino Project 050

An IR remote and receiver communicate with each other by transmitting and decoding a signal in the f…

C04 | Compilation and Execution of Programs

C04 | Compilation and Execution of Programs

C语言教程04:程序的编译与运行源程序也称源代码,是指未编译的、按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令,可以用汇编语言或高级语言编写。计算机源代码的最终目的是将人类…

Resolving the Need to Enter FTP Credentials for WordPress Themes and Plugins

Resolving the Need to Enter FTP Credentials for WordPress Themes and Plugins

解决安装WordPress主题及插件需要输入FTP问题安装一个WordPress好像挺简单,但是默认主题不喜欢,想更换一个,无奈本地可以更换,但是服务器更换的时候需要设置FTP 。OK,设置呗,好像我…

C05 |   C/C++ Develop Environment

C05 | C/C++ Develop Environment

C语言教程05: C/C++开发环境C 语言编译器可以分为 C 和 C++两大类,其中 C++是 C 的超集,也支持 C 语言编程。事实上,编译器的选择不是最重要的,它们都可以完成基本的 C 语言编译…

How to Selection Soldering for your Maker

How to Selection Soldering for your Maker

如何选用合适的电络铁?初级电子制作与维修之工具选择电烙铁是我们电子制作和装配中,导线、延长线连接,电子元件的安装和拆卸的必备工具。尤其是在电器维修中也是最常用的工具。电烙铁的分类电络铁的分类方式很多,…

Post a Comment

Anonymous

Feel free to share your thoughts and opinions here.