Untitled

 avatar
unknown
plain_text
4 years ago
4.2 kB
19
Indexable
#include <WS2812FX.h>
#define LED_PIN    13  // pin data ke led strip
#define LED_COUNT 30  // jumlah led strip
WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int Signal_REM = 2; // pin trigger REM
int Sein_Kanan = 4; // pin trigger sein kanan
int Sein_Kiri = 6; // pin trigger sein kiri
int Sein_Kanan_Kiri = 10;  // pin trigger untuk lampu hazard / darurat
int ON = LOW;
int OFF = HIGH;
int SignalREM = OFF;
int SignalSeinKanan = OFF;
int SignalSeinKiri = OFF;
int SignalSeinKananKiri = OFF;
int CounterKanan = 0;
int CounterKiri = 0;
unsigned long time;
unsigned long timer = 2000;
unsigned long Start;
unsigned long Stop;
void setup() {

  Serial.begin(115200);
  pinMode(Signal_REM, INPUT_PULLUP);
  pinMode(Sein_Kanan, INPUT_PULLUP);
  pinMode(Sein_Kiri, INPUT_PULLUP);
  pinMode(Sein_Kanan_Kiri, INPUT_PULLUP);
  ws2812fx.init();
  ws2812fx.setBrightness(255);
  ws2812fx.start();
}
void loop() {

  time = millis();
  SignalREM = digitalRead(Signal_REM);
  SignalSeinKanan = digitalRead(Sein_Kanan);
  SignalSeinKiri = digitalRead(Sein_Kiri);
  SignalSeinKananKiri = digitalRead(Sein_Kanan_Kiri);
  ws2812fx.service();
  if (SignalSeinKanan == ON) {
    Sein_kanan();
    Serial.println("Sein_kanan");
    CounterKanan++;
    CounterKiri = 0;
    Start = millis();
  }
  if (SignalSeinKiri == ON)
  {
    Sein_kiri();
    Serial.println("Sein_kiri");
    CounterKiri++;
    CounterKanan = 0;
    Start = millis();
  }
  if (SignalSeinKananKiri == ON)
  {
    Sein_kanan_kiri();
    Serial.println("Sein_kanan_kiri");
    Start = millis();
  }
  if ((SignalREM == ON) && (SignalSeinKanan == OFF) && (SignalSeinKiri == OFF) && (SignalSeinKananKiri == OFF))
  {
    LampuRem();
    Serial.println("SINYAL_REM");
    
    Start = millis();
  }
  if ((SignalREM == ON) && (CounterKanan > 0))
  {
    LampuRem_JikaBersamaSeinKanan();
    Serial.println("SINYAL_REM");
    CounterKiri = 0;
    Start = millis();
  }
  if ((SignalREM == ON) && (CounterKiri > 0))
  {
    LampuRem_JikaBersamaSeinKiri();
    Serial.println("SINYAL_REM");
    CounterKanan = 0;
    Start = millis();
  }
  if ((SignalSeinKanan == OFF) && (SignalSeinKiri == OFF) && (SignalREM == OFF) && (SignalSeinKananKiri == OFF)) {
    Stop = Start + timer;
    if ( Stop <= time ) {
      Stanby();
      CounterKiri = 0;
      CounterKanan = 0;
      Start = 0;
    }
  }
}
void Sein_kanan() {
  ws2812fx.setSegment(0,  0, 14, FX_MODE_COLOR_WIPE_INV, ORANGE, 1000, true); 
  ws2812fx.setSegment(1, 15, 17,  NO_OPTIONS, BLACK, 2000, false); 
  ws2812fx.setSegment(2, 18, 29, NO_OPTIONS, BLACK, 1000, false);
  // segment 0 is leds 0 - 9
}
void Sein_kiri() {
  ws2812fx.setSegment(0, 0, 9, NO_OPTIONS, BLACK, 1000, false);  
  ws2812fx.setSegment(1, 10, 14,  NO_OPTIONS, BLACK, 2000, false);
  ws2812fx.setSegment(2,  15,  29, FX_MODE_COLOR_WIPE_INV, ORANGE, 1000, false);
}
void LampuRem() {
  ws2812fx.setSegment(0,  0,  29, FX_MODE_MULTI_STROBE, RED, 2000, false); 
  ws2812fx.setSegment(1, 30, 31, NO_OPTIONS, BLACK, 2000, false); 
  ws2812fx.setSegment(2, 32, 33   , NO_OPTIONS, BLACK, 2000, false);
void Stanby() {
  ws2812fx.setSegment(0, 0, 29, FX_MODE_COLOR_WIPE_RANDOM, GREEN, 2000, false); 
//  ws2812fx.setSegment(1, 3, 25,  NO_OPTIONS, BLACK, 5000, false); 
//  ws2812fx.setSegment(2, 26, 29,  NO_OPTIONS, BLACK, 1000, false);
}
void Sein_kanan_kiri() {
  ws2812fx.setSegment(0,  0,  9, FX_MODE_BLINK, ORANGE, 2000, false); 
  ws2812fx.setSegment(1, 10, 19, NO_OPTIONS, BLACK, 2000, false);
  ws2812fx.setSegment(2, 20, 29, FX_MODE_BLINK, ORANGE, 2000, false);
}
void LampuRem_JikaBersamaSeinKiri() {
  ws2812fx.setSegment(0, 0, 9, NO_OPTIONS, BLACK, 1000, false);  
  ws2812fx.setSegment(1, 10, 19,  FX_MODE_STATIC, RED, 2000, false);
  ws2812fx.setSegment(2,  20,  29, FX_MODE_COLOR_WIPE_INV, ORANGE, 1000, false); 

}
void LampuRem_JikaBersamaSeinKanan() {
  ws2812fx.setSegment(0,  0, 9, FX_MODE_COLOR_WIPE_INV, ORANGE, 1000, true);
  ws2812fx.setSegment(1, 10, 19, FX_MODE_STATIC, RED, 2000, false);
  ws2812fx.setSegment(2, 20, 29, NO_OPTIONS, BLACK, 1000, false);

}
Editor is loading...