Untitled
unknown
plain_text
4 years ago
4.2 kB
23
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...