tugas 3 — Arduino Uno simulation

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by smekantri.

Components

Sketch code

#include <Wire.h>

#define SLAVE_ADDR 0x08

const int PIN_RED    = 8;
const int PIN_YELLOW = 9;
const int PIN_GREEN  = 10;

volatile byte receivedState = 0;
volatile bool newStateAvailable = false;

void setup() {
  pinMode(PIN_RED, OUTPUT);
  pinMode(PIN_YELLOW, OUTPUT);
  pinMode(PIN_GREEN, OUTPUT);

  // Status awal: Matikan semua lalu nyalakan Merah
  setLights(HIGH, LOW, LOW);

  Wire.begin(SLAVE_ADDR);
  Wire.onReceive(receiveEvent);
  
  Serial.begin(9600);
  Serial.println("Arduino Slave Siap.");
}

void loop() {
  if (newStateAvailable) {
    newStateAvailable = false;

    switch (receivedState) {
      case 0: // MERAH
        setLights(HIGH, LOW, LOW);
        Serial.println("Lampu: MERAH");
        break;
      case 1: // KUNING
        setLights(LOW, HIGH, LOW);
        Serial.println("Lampu: KUNING");
        break;
      case 2: // HIJAU
        setLights(LOW, LOW, HIGH);
        Serial.println("Lampu: HIJAU");
        break;
      default:
        setLights(LOW, LOW, LOW);
        break;
    }
  }
}

void setLights(int red, int yellow, int green) {
  digitalWrite(PIN_RED, red);
  digitalWrite(PIN_YELLOW, yellow);
  digitalWrite(PIN_GREEN, green);
}

// ISR saat Master mengirimkan data
void receiveEvent(int bytes) {
  while (Wire.available()) {
    receivedState = Wire.read();
    newStateAvailable = true;
  }
}

More projects by smekantri