7.0 KiB
---LESSON_INFO--- Pelajaran Arduino: Membuat simulasi lampu lalu lintas dengan 3 LED.
Learning Objectives:
- Mengontrol beberapa LED secara berurutan
- Menerapkan pola sequence/timing dengan
delay() - Merangkai 3 LED ke Arduino
- Menggunakan
const intuntuk nama pin yang mudah dibaca
Prerequisites:
- Hello, World!
- LED Blink
- Hello Serial
- Button Input ---END_LESSON_INFO---
Traffic Light — Lampu Lalu Lintas
Proyek ini mensimulasikan lampu lalu lintas menggunakan 3 LED: merah, kuning, dan hijau. Kita akan mengontrol urutan nyala-mati LED persis seperti lampu lalu lintas sungguhan.
Urutan Lampu Lalu Lintas
1. MERAH menyala (3 detik) → Berhenti
2. KUNING menyala (1 detik) → Bersiap
3. HIJAU menyala (3 detik) → Jalan
4. KUNING menyala (1 detik) → Bersiap berhenti
5. Kembali ke MERAH...
Menggunakan Konstanta untuk Pin
Daripada mengingat nomor pin, gunakan konstanta bernama:
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
Keuntungan:
- Kode lebih mudah dibaca:
digitalWrite(RED_PIN, HIGH)vsdigitalWrite(13, HIGH) - Jika ingin ganti pin, cukup ubah di satu tempat
Mengontrol Beberapa LED
Setiap LED memerlukan pin output sendiri:
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
Pastikan hanya satu LED menyala pada satu waktu:
// Nyalakan merah, matikan yang lain
digitalWrite(RED_PIN, HIGH);
digitalWrite(YELLOW_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
Serial Monitor untuk Debugging
Cetak status lampu ke Serial Monitor agar mudah di-debug:
Serial.println("RED");
delay(3000); // Merah menyala 3 detik
---EXERCISE---
Tantangan
Kode Arduino: Buat program yang mensimulasikan lampu lalu lintas:
- Merah di pin 13 menyala selama 3 detik, cetak
REDke Serial - Kuning di pin 12 menyala selama 1 detik, cetak
YELLOWke Serial - Hijau di pin 11 menyala selama 3 detik, cetak
GREENke Serial - Kuning lagi selama 1 detik, cetak
YELLOWke Serial - Ulangi dari merah
Pastikan hanya satu LED yang menyala pada satu waktu!
Rangkaian: Hubungkan 3 LED ke Arduino:
- Pin 13 → LED Merah (Anode A), Cathode C → GND
- Pin 12 → LED Kuning (Anode A), Cathode C → GND
- Pin 11 → LED Hijau (Anode A), Cathode C → GND
Setelah selesai, tekan Compile & Run dan perhatikan LED menyala bergantian.
---INITIAL_CODE_ARDUINO--- // Traffic Light - Lampu Lalu Lintas // Simulasi lampu merah, kuning, hijau
const int RED_PIN = 13; const int YELLOW_PIN = 12; const int GREEN_PIN = 11;
void setup() { pinMode(RED_PIN, OUTPUT); pinMode(YELLOW_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); Serial.begin(9600); }
void loop() { // Lampu MERAH digitalWrite(RED_PIN, HIGH); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); Serial.println("RED"); delay(3000);
// Lampu KUNING digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); Serial.println("YELLOW"); delay(1000);
// Lampu HIJAU digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, HIGH); Serial.println("GREEN"); delay(3000);
// Lampu KUNING lagi digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); Serial.println("YELLOW"); delay(1000); } ---END_INITIAL_CODE_ARDUINO---
---VELXIO_CIRCUIT--- { "board": "arduino:avr:uno", "components": [ { "type": "led", "id": "led-red", "x": 409.6091884525257, "y": 65.40692157090741, "rotation": 0, "props": { "color": "red", "pin": 13, "state": true, "value": true } }, { "type": "led", "id": "led-yellow", "x": 466.09101803924966, "y": 66.43228050989252, "rotation": 0, "props": { "color": "yellow", "pin": 12, "state": false, "value": false } }, { "type": "led", "id": "led-green", "x": 522.0366933470766, "y": 63.613964067867315, "rotation": 0, "props": { "color": "green", "pin": 11, "state": false, "value": false } }, { "type": "resistor", "id": "resistor-1776300566703-7pi4wei9j", "x": 275.08055011716567, "y": 133.79325981817132, "rotation": 0, "props": { "value": true, "state": true } }, { "type": "resistor", "id": "resistor-1776300590088-k4l87u1rf", "x": 273.3198126609919, "y": 178.95644554504224, "rotation": 0, "props": { "value": false, "state": false } }, { "type": "resistor", "id": "resistor-1776300593575-rklkixiwy", "x": 270.5981563595655, "y": 220.2759558909028, "rotation": 0, "props": { "value": false, "state": false } } ], "wires": [
] } ---END_VELXIO_CIRCUIT---
---EXPECTED_SERIAL_OUTPUT--- RED YELLOW GREEN YELLOW ---END_EXPECTED_SERIAL_OUTPUT---
---EXPECTED_WIRING--- { "wires": [ { "start": { "componentId": "resistor-1776300566703-7pi4wei9j", "pinName": "2" }, "end": { "componentId": "led-red", "pinName": "A" } }, { "start": { "componentId": "resistor-1776300590088-k4l87u1rf", "pinName": "2" }, "end": { "componentId": "led-yellow", "pinName": "A" } }, { "start": { "componentId": "resistor-1776300593575-rklkixiwy", "pinName": "2" }, "end": { "componentId": "led-green", "pinName": "A" } }, { "start": { "componentId": "arduino-uno", "pinName": "GND.3" }, "end": { "componentId": "led-red", "pinName": "C" } }, { "start": { "componentId": "arduino-uno", "pinName": "GND.3" }, "end": { "componentId": "led-yellow", "pinName": "C" } }, { "start": { "componentId": "arduino-uno", "pinName": "GND.3" }, "end": { "componentId": "led-green", "pinName": "C" } }, { "start": { "componentId": "resistor-1776300566703-7pi4wei9j", "pinName": "1" }, "end": { "componentId": "arduino-uno", "pinName": "13" } }, { "start": { "componentId": "resistor-1776300590088-k4l87u1rf", "pinName": "1" }, "end": { "componentId": "arduino-uno", "pinName": "12" } }, { "start": { "componentId": "resistor-1776300593575-rklkixiwy", "pinName": "1" }, "end": { "componentId": "arduino-uno", "pinName": "11" } } ] } ---END_EXPECTED_WIRING---
---KEY_TEXT--- pinMode digitalWrite const int Serial delay ---END_KEY_TEXT---
---EVALUATION_CONFIG--- { "timeout_ms": 10000 } ---END_EVALUATION_CONFIG---