Pendahuluan

Dalam proyek ini, Anda akan membangun sistem lampu lalu lintas:

  • Terdapat 3 LED dengan warna berbeda (hijau, kuning, dan merah) untuk meniru lampu lalu lintas mobil
  • Terdapat 2 LED dengan warna berbeda (hijau dan merah) untuk meniru lampu lalu lintas pejalan kaki
  • Terdapat tombol tekan untuk meniru lampu lalu lintas pejalan kaki

Komponen yang Diperlukan

Semua komponen yang diperlukan untuk proyek ini.

Saya menggunakan LED dengan ukuran yang berbeda, tetapi jika Anda tidak memiliki LED dengan ukuran yang berbeda, tidak apa-apa. Proyek ini masih berfungsi.

Skematik

Rakit semua bagian dengan mengikuti skema di bawah ini.

Kode

  • Anda tidak memerlukan pustaka apa pun untuk kode ini. Kode ini sangat sederhana. Berikut beberapa kiat untuk lebih memahami apa yang sedang terjadi.
  • Lampu mobil selalu hijau, dan lampu pejalan kaki selalu merah kecuali seseorang menekan tombol.
  • Saat seseorang menekan tombol, berikut yang terjadi:
  • Lampu mobil berubah menjadi kuning lalu merah
  • Lampu pejalan kaki berubah menjadi hijau
  • Lampu berada dalam kondisi ini selama beberapa saat (dalam kode ini, kali ini variabelnya adalah crossTime)
  • Lampu hijau pejalan kaki berkedip dan berubah menjadi merah
  • Lampu mobil berubah dari merah menjadi hijau
  • Semua tindakan ini akan dilakukan di dalam fungsi changeLights(). Setiap kali Anda ingin mengubah lampu, Anda hanya perlu memanggil fungsi changeLights().

Salin kode berikut ke Arduino IDE Anda, dan unggah ke papan Arduino Anda. Pastikan Anda telah memilih papan dan port COM yang tepat.

View code on GitHub

/*

Rui Santos

Complete Project Details http://randomnerdtutorials.com

*/

int redCar = 13; int yellowCar = 12; int greenCar = 11; int greenPed = 2; int redPed = 3;

int button = 7;

int crossTime = 2000; unsigned long changeTime;

void setup() {

// initialize timer changeTime = millis();

// here we are initializing our pins as outputs pinMode(redCar, OUTPUT);

pinMode(yellowCar, OUTPUT); pinMode(greenCar, OUTPUT); pinMode(redPed, OUTPUT); pinMode(greenPed, OUTPUT); pinMode(button, INPUT);

//turn on the green light digitalWrite(greenCar, HIGH); digitalWrite(redPed, HIGH); digitalWrite(redCar, LOW); digitalWrite(yellowCar, LOW);

digitalWrite(greenPed, LOW);

19

Serial.begin(9600);

}

void loop() {

// this variable will tell us if the button is pressed int state = digitalRead(button); Serial.println(state);

// if the button is pressed and if it has passed 5 seconds since last button press

if (state == HIGH && (millis() - changeTime) > 5000) {

//call the function to change the lights changeLights();

}

}

void changeLights() {

digitalWrite(greenCar, LOW); // the green LED will turn off digitalWrite(yellowCar, HIGH); // the yellow LED will turn on for 2 second delay(2000);

digitalWrite(yellowCar, LOW); // the yellow LED will turn off digitalWrite(redCar, HIGH); // the red LED will turn on for 5 seconds

digitalWrite(redPed, LOW); digitalWrite(greenPed, HIGH); delay(crossTime);

// flash the ped green

for (int x=0; x<10; x++) { digitalWrite(greenPed, LOW); delay(100); digitalWrite(greenPed, HIGH); delay(100);

}

digitalWrite(greenPed, LOW); digitalWrite(redCar, LOW); digitalWrite(redPed, HIGH); digitalWrite(greenCar, HIGH);

changeTime = millis();

}

Percobaan

Saat Anda menekan tombol, lampu untuk mobil berubah dari hijau menjadi merah, dan lampu pejalan kaki berubah dari merah menjadi hijau.

Setelah waktu penyeberangan, lampu hijau untuk pejalan kaki berkedip dan berubah menjadi merah. Lampu untuk mobil berubah dari merah menjadi hijau.

Penutup

Jika Anda memulai dengan Arduino, latihan yang baik adalah mengubah nilai beberapa variabel seperti crossTime dan changeTime dan melihat apa yang terjadi.

Jika Anda menginginkan sesuatu yang sedikit lebih menantang, cobalah meniru apa yang terjadi di persimpangan, dengan beberapa lampu untuk beberapa mobil dan pejalan kaki.

Resources: Rui Santos