Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino-Controlled Traffic Light System with Touch Sensor Interaction

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Traffic Light System with Touch Sensor Interaction

Traffic Light Control Circuit Documentation

Summary

This circuit is designed to control a traffic light system using an Arduino UNO microcontroller and a touch sensor. The system operates by cycling through the traffic light LEDs (red, yellow, green) in response to touch sensor inputs. When the touch sensor is activated, the system transitions from one light to the next in the sequence: red, yellow, green, and then all off. This cycle repeats with each subsequent touch sensor activation.

Component List

Traffic Light

Touch Sensor

Arduino UNO

Wiring Details

Traffic Light

Touch Sensor

Documented Code

/*
 * This Arduino Sketch controls a traffic light system using a touch sensor.
 * When the touch sensor is pressed, the red LED turns on. On the next press,
 * the yellow LED turns on. On the next press, the green LED turns on. On the
 * next press, all LEDs turn off. This cycle repeats with each subsequent press.
 */

const int touchPin = 7; // Pin connected to touch sensor IO
const int redLedPin = 2; // Pin connected to red LED
const int yellowLedPin = 3; // Pin connected to yellow LED
const int greenLedPin = 4; // Pin connected to green LED

int touchState = 0; // Current state of the touch sensor
int lastTouchState = 0; // Previous state of the touch sensor
int ledState = 0; // State of the LEDs (0: off, 1: red, 2: yellow, 3: green)

void setup() {
  pinMode(touchPin, INPUT);
  pinMode(redLedPin, OUTPUT);
  pinMode(yellowLedPin, OUTPUT);
  pinMode(greenLedPin, OUTPUT);
  // Initialize all LEDs to off
  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLedPin, LOW);
  digitalWrite(greenLedPin, LOW);
}

void loop() {
  touchState = digitalRead(touchPin);
  // Check if the touch sensor state has changed
  if (touchState != lastTouchState) {
    if (touchState == HIGH) {
      // Cycle through LED states
      ledState = (ledState + 1) % 4;
      updateLeds();
    }
    delay(50); // Debounce delay
  }
  lastTouchState = touchState;
}

void updateLeds() {
  // Turn off all LEDs
  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLedPin, LOW);
  digitalWrite(greenLedPin, LOW);
  // Turn on the appropriate LED based on the current state
  if (ledState == 1) {
    digitalWrite(redLedPin, HIGH);
  } else if (ledState == 2) {
    digitalWrite(yellowLedPin, HIGH);
  } else if (ledState == 3) {
    digitalWrite(greenLedPin, HIGH);
  }
}

The code is structured with a setup function that initializes the pins and a loop function that reads the touch sensor state and updates the LED states accordingly. The updateLeds function is responsible for turning on the appropriate LED based on the current state. The debounce delay is used to prevent false triggering of the touch sensor.