Untitled
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...