#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int pinBuzzer = 4;
int EW_LED[] = {26,27,14};
int SN_LED[] = {32,33,25};
void setup()
{
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
for(int i=0;i<3;i++){
pinMode(EW_LED[i], OUTPUT);
pinMode(SN_LED[i], OUTPUT);
}
}
void loop()
{
SEMAFORO();
}
void SEMAFORO()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Light NS: GREEN");
//display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 30);
display.println("Light EW: RED");
display.display();
digitalWrite(EW_LED[0], HIGH);
digitalWrite(SN_LED[0], LOW);
digitalWrite(EW_LED[1], LOW);
digitalWrite(SN_LED[1], LOW);
digitalWrite(EW_LED[2], LOW);
digitalWrite(SN_LED[2], HIGH);
delay(3000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Light NS: YELLOW");
//display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 30);
display.println("Light EW: RED");
display.display();
digitalWrite(EW_LED[2], LOW);
digitalWrite(SN_LED[2], LOW);
digitalWrite(EW_LED[1], LOW);
digitalWrite(SN_LED[1], HIGH);
tone(pinBuzzer, 200, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(500);
tone(pinBuzzer, 400, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(1000);
tone(pinBuzzer, 800, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(500);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Light NS: RED");
//display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 30);
display.println("Light EW: GREEN");
display.display();
digitalWrite(EW_LED[0], LOW);
digitalWrite(SN_LED[0], HIGH);
digitalWrite(EW_LED[1], LOW);
digitalWrite(SN_LED[1], LOW);
digitalWrite(EW_LED[2], HIGH);
digitalWrite(SN_LED[2], LOW);
delay(3000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Light NS: RED");
//display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 30);
display.println("Light EW: YELLOW");
display.display();
digitalWrite(EW_LED[2], LOW);
digitalWrite(SN_LED[2], LOW);
digitalWrite(EW_LED[1], HIGH);
digitalWrite(SN_LED[1], LOW);
tone(pinBuzzer, 200, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(500);
tone(pinBuzzer, 400, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(1000);
tone(pinBuzzer, 800, 1000);
delay(500);
tone(pinBuzzer, 0, 1000);
delay(500);
}