Arduino UNO Controlled Traffic Light System with Joystick Interface
View and Edit Project In Cirkit Designer
Traffic Light Control System Documentation
Summary
The circuit described in this documentation is designed to control a traffic light system using an Arduino UNO microcontroller and a joystick module. The joystick's movements control the activation of the traffic light's LEDs: moving the joystick up activates the red LED, left for the yellow LED, and right for the green LED. Moving the joystick down activates all LEDs. The circuit utilizes digital and analog input/output pins on the Arduino to interface with the traffic light and joystick module.
Component List
Arduino UNO
- Description: A microcontroller board based on the ATmega328P.
- Purpose: Acts as the central processing unit for the traffic light control system, reading joystick inputs and controlling the output to the LEDs.
- Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0-A5, SCL, SDA, AREF, D0-D13.
Traffic Light
- Description: A simple traffic light module with three LEDs (Green, Yellow, Red).
- Purpose: Displays the traffic light status based on the joystick input.
- Pins: Green, Yellow, Red, GND.
Joystick Module
- Description: An input module with a two-axis joystick and a push button.
- Purpose: Provides user input to control the traffic light system.
- Pins: SW, VRY, VRX, VCC, GND.
Wiring Details
Arduino UNO
- A0: Connected to the VRX pin of the Joystick module (X-axis output).
- A1: Connected to the VRY pin of the Joystick module (Y-axis output).
- D7: Connected to the SW pin of the Joystick module (Switch, not used in this application).
- D2: Connected to the Red pin of the Traffic Light.
- D3: Connected to the Yellow pin of the Traffic Light.
- D4: Connected to the Green pin of the Traffic Light.
- GND: Common ground shared with the Traffic Light and Joystick module.
Traffic Light
- Green: Connected to D4 on the Arduino UNO.
- Yellow: Connected to D3 on the Arduino UNO.
- Red: Connected to D2 on the Arduino UNO.
- GND: Connected to GND on the Arduino UNO.
Joystick Module
- VRX: Connected to A0 on the Arduino UNO (X-axis input).
- VRY: Connected to A1 on the Arduino UNO (Y-axis input).
- SW: Connected to D7 on the Arduino UNO (Switch, not used in this application).
- GND: Connected to GND on the Arduino UNO.
Documented Code
/*
* This Arduino sketch controls a traffic light system using a joystick module.
* When the joystick is moved up, the red LED turns on.
* When the joystick is moved left, the yellow LED turns on.
* When the joystick is moved right, the green LED turns on.
* When the joystick is moved down, all LEDs turn on.
*/
// Pin definitions
const int VRX_PIN = A0; // Joystick X-axis
const int VRY_PIN = A1; // Joystick Y-axis
const int SW_PIN = 7; // Joystick button (not used)
const int RED_LED_PIN = 2; // Red LED
const int YELLOW_LED_PIN = 3; // Yellow LED
const int GREEN_LED_PIN = 4; // Green LED
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set LED pins as outputs
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
// Set joystick button pin as input
pinMode(SW_PIN, INPUT);
}
void loop() {
// Read joystick values
int xValue = analogRead(VRX_PIN);
int yValue = analogRead(VRY_PIN);
// Determine joystick direction
if (yValue < 300) { // Joystick moved up
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
} else if (xValue < 300) { // Joystick moved left
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, LOW);
} else if (xValue > 700) { // Joystick moved right
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, HIGH);
} else if (yValue > 700) { // Joystick moved down
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, HIGH);
} else { // Joystick in neutral position
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
}
// Small delay to stabilize readings
delay(100);
}
This code is designed to be uploaded to the Arduino UNO microcontroller. It initializes the pins connected to the joystick and traffic light LEDs, reads the joystick's analog values, and sets the LEDs accordingly. The joystick's switch is not used in this application.