Auto lampen aansturen

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 15
Geregistreerd: 14 Aug 2013, 08:11
Woonplaats: Hardenberg

Auto lampen aansturen

Berichtdoor whitedxi » 23 Dec 2020, 22:33

Ik zag net dat mijn laatste project van 2013 dateerde en mijn laatste bezoek 15 november 2013..
Indien interesse(Uiteindelijk helemaal gelukt met de startboom inclusief 220v lampen e.d. maar het circuit is nu helaas een zonnepark voor panelen en heb ik het hele zaakje maar verkocht.)

Door Covid nu weer bezig met een nieuw project. Ik hoop in het voorjaar weer eens met mijn S2000 naar het werk te kunnen in het ziekenhuis met het dak open en custom achterlampen.

Youtube filmpje:
https://youtu.be/x2OvrTWhu98

Ik heb her en der wat code gevonden en wat aanpassingen doorgevoerd voor mijn doel. So far so good. Alles werk zoals ik wil en de hardware om het in de auto aan te sluiten is ook onderweg.

Kwam ik opeens toch een dingetje tegen..

Wat ik wil is dat eigenlijk bij het gebruik van de rem de animaties stoppen of in ieder geval meteen de rem aangaat.
Ik ben nu al 4 avonden bezig om te vinden waar het in zit met nekklachten van het turen en hangen over de laptop als gevolg..
While, state bijhouden, break, etc getracht te gebruiken. Telkens lukt het niet of ik doe het telkens niet goed..
Void loop helemaal weer weggehaald en zelfs rem als override voor de animatie van het knipperlicht lukt niet. Ben misschien ook goed scheel aan het worden nu...



Met name de knipperlichten zijn een issue. Als de animatie (lopende led) loopt en ik druk de rem in dan doorloopt eerst de animatie en dan pas komt de rem.
Druk ik de rem in en dan een van de knipperlichten dan blijft de rem aan zolang de animatie loopt (wat op zich goed is) maar laat ik de rem los tijdens de animatie dan doorloopt de animatie eerst alvorens alles uitgaat.

Showmode stopt pas na het helemaal doorlopen. Ook irritant maar kan ik in eerste instantie mee leven.

De park optie geeft eenzelfde issue. Tijdens het opstarten werkt de rem niet. Is de park functie aan dan gaat remmen goed maar als ik weer de knipperlichten probeer doorloopt de animatie van het knipperen eerst voordat de rem aangaat.

Is er iemand die me even de goede kant op kan sturen om het codering deel af te krijgen?
*Arduino nOOb but I am learning*

Advertisement

Berichten: 15
Geregistreerd: 14 Aug 2013, 08:11
Woonplaats: Hardenberg

Re: Auto lampen aansturen

Berichtdoor whitedxi » 23 Dec 2020, 22:33

// Original program by HAZI TECH and modified to work on ring leds and added showmode
// Original programming by Hasitha Jayasundara but edited by Bastiaan de Vries


#include "Arduino.h"
#include <FastLED.h>

#define LED_PIN 2 //LED Strip Signal Connection
#define LED_PINREV 4 //LED Strip Signal reverse
#define LED_PINBLI 6 //LED Strip Signal blinker
#define ParkSignal 3 //Park Signal Connection
#define BrakeSignal 5 //Brake Signal Connection
#define LeftSignal 7 //Left Blinker Signal Connection
#define RightSignal 9 //Right Blinker Signal Connection
#define ReverseSignal 11 //Reverse Signal Connection
#define ShowSignal 10//showmode Signal Connection

#define BRIGHTNESS 250
#define SATURATION 250

#define NUM_LEDS 32 //Total no of LEDs in the LED strip
#define NUM_LEDSREV 24 //Total no of LEDs in the LED strip reverse
#define BlinkerLEDs 16 //No of LEDs for Left/Right Blinker

int BlinkerSpeed = 35; //Turn Signal Running LED Speed. Adjust this to match with your vehicle turn signal speed. initial = 35
//int BlinkerOffDelay = 250; //Turn Signal Off time. Adjust this to match with your vehicle turn signal speed.

int StartupSpeed = 20;// initial 20
int ParkDetect = 0;

unsigned long currentMillis = 0;
unsigned long previousMillis = 0;

int Blinkani = 0;
int Brake = 0;


CRGB leds[NUM_LEDS];
CRGB ledsrev[NUM_LEDSREV];
CRGB ledsbli[NUM_LEDS];


void setup()
{
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812, LED_PINREV, GRB>(ledsrev, NUM_LEDSREV);
FastLED.addLeds<WS2812, LED_PINBLI, GRB>(ledsbli, NUM_LEDS);
pinMode(ParkSignal, INPUT);
pinMode(BrakeSignal, INPUT);
pinMode(LeftSignal, INPUT);
pinMode(RightSignal, INPUT);
pinMode(ReverseSignal, INPUT);
pinMode(ShowSignal, INPUT);

}


void loop()
{

if(digitalRead(ReverseSignal)==1)
{
Reverse();

if(digitalRead(BrakeSignal)==1) //Brake Light
{

Brake= 1;
BrakeFull();
Brake = 0;
}

}

if(ParkDetect == 0)
{
if(digitalRead(ParkSignal)==1)
{
ParkDetect = 1;
}
}

if(ParkDetect == 2)
{
if(digitalRead(ParkSignal)==0)
{
ParkDetect = 3;
}
}

if(ParkDetect == 1)
{
ParkON();
ParkDetect = 2;
}

if(ParkDetect == 3)
{
ParkOFF();
ParkDetect = 0;
}

if(digitalRead(ParkSignal)==0)
{
if(digitalRead(ReverseSignal)==0)
{
if((digitalRead(BrakeSignal)==0)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //all off
{
AllOff();
}

if(digitalRead(ShowSignal)==1) //Show Lights
{
ShowMode();
}

if((digitalRead(BrakeSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //Brake Light
{
BrakeFull();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Left Blinker
{
Blinkani = 1; // animation is running
RightOff();
LeftBlinker();
LeftDim();
Blinkani = 0; // animation stops
//delay (BlinkerOffDelay);
}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Right Blinker
{
LeftOff();
RightBlinker();
RightDim();
//delay (BlinkerOffDelay);
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Left Blinker & Brake
{
Blinkani = 1; // animation is running
RightFull();
LeftBlinker();
LeftDim();
Blinkani = 0; // animation stops
//delay (BlinkerOffDelay);
}


if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Right Blinker & Brake
{

LeftFull();
RightBlinker();
RightDim();

}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==0)) //Dual Blinker / Hazard
{
MiddleOff();
DualBlinker();
LeftDim();
RightDim();

}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==1)) //Dual Blinker / Hazard + Brake
{
LeftDim();
RightDim();
BrakeMiddle();
DualBlinker();
LeftDim();
RightDim();

}
}
}


if(ParkDetect == 2)
{
if(digitalRead(ReverseSignal)==0)
{
if((digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Park Light
{
ParkFull();
}


if((digitalRead(BrakeSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //Brake Light
{
BrakeFull();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Left Blinker
{
LeftDim();
RightLit();
LeftBlinker();
LeftDim();

}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Right Blinker
{
RightDim();
LeftLit();
RightBlinker();
RightDim();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Left Blinker & Brake
{
LeftDim();
LeftBlinker();
LeftDim();
}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Right Blinker & Brake
{
RightDim();
RightBlinker();
RightDim();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==0)) //Dual Blinker / Hazard
{
LeftDim();
RightDim();
ParkMiddle();
DualBlinker();
LeftDim();
RightDim();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==1)) //Dual Blinker / Hazard + Brake
{
LeftDim();
RightDim();
BrakeMiddle();
DualBlinker();
LeftDim();
RightDim();
}

if(digitalRead(ShowSignal)==1) //Show Lights
{
ShowMode();
}
}
}
}

void ParkON()
{
for (int i = 0; i < (NUM_LEDS/2); i++)

{
leds[i] = CRGB(30, 0, 0);
ledsbli[i] = CRGB(30, 0, 0);

leds[i-1] = CRGB(0, 0, 0);
ledsbli[i-1] = CRGB(0, 0, 0);

leds[(NUM_LEDS-1)-i] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS-1)-i] = CRGB(30, 0, 0);

leds[(NUM_LEDS)-i] = CRGB(0, 0, 0);
ledsbli[(NUM_LEDS)-i] = CRGB(0, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = ((NUM_LEDS/2)-1); j >= 0; j--)

{
leds[j] = CRGB(30, 0, 0);
ledsbli[j] = CRGB(30, 0, 0);

leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(30, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = ((NUM_LEDS/2)-1); j >= 0; j--)

{
leds[j] = CRGB(255, 0, 0);
ledsbli[j] = CRGB(255, 0, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 0, 0);
ledsbli[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = 255; j >= 60; j--)

{
for (int i = 0; i < NUM_LEDS; i++)

{
leds[i] = CRGB(j, 0, 0);
ledsbli[i] = CRGB(j, 0, 0);

}
FastLED.show();
//delay (5);
}
}

void ParkOFF()
{
for (int j = 60; j <= 255; j++)

{
for (int i = 0; i < NUM_LEDS; i++)

{
leds[i] = CRGB(j, 0, 0);
ledsbli[i] = CRGB(j, 0, 0);

}
FastLED.show();
//delay (5);
}

for (int j = 0; j <= ((NUM_LEDS/2)-1); j++)

{
leds[j] = CRGB(255, 0, 0);
ledsbli[j] = CRGB(255, 0, 0);

leds[j-1] = CRGB(30, 0, 0);
ledsbli[j-1] = CRGB(30, 0, 0);

leds[(NUM_LEDS-1)-j] = CRGB(255, 0, 0);
ledsbli[(NUM_LEDS-1)-j] = CRGB(255, 0, 0);

leds[(NUM_LEDS)-j] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS)-j] = CRGB(30, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

leds[((NUM_LEDS/2)-1)] = CRGB(30, 0, 0);
ledsbli[((NUM_LEDS/2)-1)] = CRGB(30, 0, 0);

leds[((NUM_LEDS/2)-1)+1] = CRGB(30, 0, 0);
ledsbli[((NUM_LEDS/2)-1)+1] = CRGB(30, 0, 0);

FastLED.show();

for (int j = 0; j <= ((NUM_LEDS/2)-1); j++)

{
leds[j] = CRGB(30, 0, 0);
ledsbli[j] = CRGB(30, 0, 0);

leds[j-1] = CRGB(0, 0, 0);
ledsbli[j-1] = CRGB(0, 0, 0);

leds[(NUM_LEDS-1)-j] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS-1)-j] = CRGB(30, 0, 0);

leds[(NUM_LEDS)-j] = CRGB(0, 0, 0);
ledsbli[(NUM_LEDS)-j] = CRGB(0, 0, 0);

FastLED.show();
delay (StartupSpeed);
}
}

void AllOff()
{
for (int i = 0; i < NUM_LEDS; i++)
for (int k = 0; k < NUM_LEDSREV; k++)
for (int z = 0; z < NUM_LEDS; z++)
{
leds[i] = CRGB(0, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[z] = CRGB(0, 0, 0);
}
FastLED.show();
}





void LeftOff()
{

for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void RightOff()
{

for (int z = BlinkerLEDs; z < NUM_LEDS; z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void MiddleOff()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
for (int k = BlinkerLEDs; k < (NUM_LEDSREV - BlinkerLEDs); k++)
for (int z = BlinkerLEDs; z < (NUM_LEDS - BlinkerLEDs); z++)
{
leds[i] = CRGB(0, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void Reverse()
{
for (int i = 0; i < NUM_LEDS; i++)
for (int k = 0; k < NUM_LEDSREV; k++)
for (int z = 0; z < NUM_LEDS; z++)
{
leds[i] = CRGB(0, 0, 0);
ledsrev[k] = CRGB(255, 255, 255);
ledsbli[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void BrakeFull()
{
for (int i = 0; i < NUM_LEDS; i++)
// for (int k = 0; k < NUM_LEDSREV; k++) not possible the small ring will get red and white signals

{
leds[i] = CRGB(255, 0, 0);
//ledsrev[k] = CRGB(255, 0, 0); not possible the small ring will get red and white signals
ledsbli[i] = CRGB(255, 0, 0);
}
FastLED.show();
}

void BrakeMiddle()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)

{ leds[i] = CRGB(255, 0, 0);

}
FastLED.show();
}

void ParkFull()
{
for (int i = 0; i < NUM_LEDS; i++)
for (int k = 0; k < NUM_LEDSREV; k++)
{
leds[i] = CRGB(60, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[i] = CRGB(60, 0, 0);
}
FastLED.show();
}

void ParkMiddle()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
for (int k = BlinkerLEDs; k < (NUM_LEDSREV - BlinkerLEDs); k++)

{
leds[i] = CRGB(60, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[i] = CRGB(60, 0, 0);
}
FastLED.show();
}

void LeftBlinker()
{
for (int z = (BlinkerLEDs)-1; z >= 0; z--)

{
currentMillis = previousMillis = millis();
while(previousMillis + 35 >= currentMillis){
ledsbli[z] = CRGB(255, 165, 0);
leds[z] = CRGB(255, 165, 0);


FastLED.show();
currentMillis = millis();
}
}
}

void LeftDim()
{
for (int z = 0; z < BlinkerLEDs; z++)

{
ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);


}
FastLED.show();
}

void LeftLit()
{
for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)

{
ledsbli[z] = CRGB(75, 0, 0);


}
FastLED.show();
}

void LeftFull()
{
for (int i = 0; i < (NUM_LEDS - BlinkerLEDs); i++)

for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)

{
leds[i] = CRGB(255, 0, 0);

ledsbli[z] = CRGB(255, 0, 0);

}
FastLED.show();
}

void RightBlinker()
{
for (int z = (NUM_LEDS - BlinkerLEDs); z < NUM_LEDS; z++)


{
currentMillis = previousMillis = millis();
while(previousMillis + 35 >= currentMillis){
ledsbli[z] = CRGB(255, 165, 0);
leds[z] = CRGB(255, 165, 0);


FastLED.show();
currentMillis = millis();
}
}
}

void RightDim()
{

for (int z = (NUM_LEDS - BlinkerLEDs); z < NUM_LEDS; z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}



void RightLit()
{
for (int i = BlinkerLEDs; i < NUM_LEDS; i++)
for (int k = BlinkerLEDs; k < NUM_LEDSREV; k++)
{
leds[i] = CRGB(75, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
}
FastLED.show();
}

void RightFull()
{
for (int i = BlinkerLEDs; i < NUM_LEDS; i++)

for (int z = BlinkerLEDs; z < NUM_LEDS; z++)
{
leds[i] = CRGB(255, 0, 0);

ledsbli[z] = CRGB(255, 0, 0);

}
FastLED.show();
}

void DualBlinker()
{
for (int z = (BlinkerLEDs-1); z >= 0; z--)
{
ledsbli[z] = CRGB(255, 165, 0);
ledsbli[NUM_LEDS-1-z] = CRGB(255, 165, 0);
FastLED.show();
delay (BlinkerSpeed);
}
}
void ShowMode()
{
for (int a = 0; a <1000; a++) //a = time the animation runs
{

for(int m =0; m< NUM_LEDS; m++)
for(int r =0; r< NUM_LEDSREV; r++)
{

leds[m] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);
ledsbli[m] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);
ledsrev[r] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);

}

FastLED.show();
delay (45); // colorchange speed
}
}
*Arduino nOOb but I am learning*

Berichten: 15
Geregistreerd: 14 Aug 2013, 08:11
Woonplaats: Hardenberg

Re: Auto lampen aansturen

Berichtdoor whitedxi » 24 Dec 2020, 17:27

Okay weer een stapje verder. Zal niet super gecodeerd zijn..
Als ik de Show mode aanroep en daarna de rem intrap gaat de showmode uit. Als ik daarna weer showmode doe start de showmode opnieuw.
Als ik de knipperlichtanimatie heb lopen en ik trap de rem in dan stopt de animatie direct en krijg ik de rem zonder animatie van het knipperen rechts of links. (eerder doorliep hij de animatie alvorens de rem te activeren)
Als ik nu echter de rem ingetrapt heb dan wil ik ook dat de knipperlicht animatie blijft lopen.

// Original program by HAZI TECH and modified to work on ring leds and added showmode
// Original programming by Hasitha Jayasundara but edited by Bastiaan de Vries


#include "Arduino.h"
#include <FastLED.h>

#define LED_PIN 2 //LED Strip Signal Connection
#define LED_PINREV 4 //LED Strip Signal reverse
#define LED_PINBLI 6 //LED Strip Signal blinker
#define ParkSignal 3 //Park Signal Connection
#define BrakeSignal 5 //Brake Signal Connection
#define LeftSignal 7 //Left Blinker Signal Connection
#define RightSignal 9 //Right Blinker Signal Connection
#define ReverseSignal 11 //Reverse Signal Connection
#define ShowSignal 10//showmode Signal Connection

#define BRIGHTNESS 250
#define SATURATION 250

#define NUM_LEDS 32 //Total no of LEDs in the LED strip
#define NUM_LEDSREV 24 //Total no of LEDs in the LED strip reverse
#define BlinkerLEDs 16 //No of LEDs for Left/Right Blinker

int BlinkerSpeed = 35; //Turn Signal Running LED Speed. Adjust this to match with your vehicle turn signal speed. initial = 35
//int BlinkerOffDelay = 250; //Turn Signal Off time. Adjust this to match with your vehicle turn signal speed.

int StartupSpeed = 20;// initial 20
int ParkDetect = 0;

unsigned long currentMillis = 0;
unsigned long previousMillis = 0;

int Turn = 0;
int Brake = 0;


CRGB leds[NUM_LEDS];
CRGB ledsrev[NUM_LEDSREV];
CRGB ledsbli[NUM_LEDS];


void setup()
{
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812, LED_PINREV, GRB>(ledsrev, NUM_LEDSREV);
FastLED.addLeds<WS2812, LED_PINBLI, GRB>(ledsbli, NUM_LEDS);
pinMode(ParkSignal, INPUT);
pinMode(BrakeSignal, INPUT);
pinMode(LeftSignal, INPUT);
pinMode(RightSignal, INPUT);
pinMode(ReverseSignal, INPUT);
pinMode(ShowSignal, INPUT);

}


void loop()
{






if(digitalRead(ReverseSignal)==1)
{
Reverse();

if(digitalRead(BrakeSignal)==1) //Brake Light
{

Brake= 1;
BrakeFull();
Brake = 0;
}

}

if(ParkDetect == 0)
{
if(digitalRead(ParkSignal)==1)
{
ParkDetect = 1;
}
}

if(ParkDetect == 2)
{
if(digitalRead(ParkSignal)==0)
{
ParkDetect = 3;
}
}

if(ParkDetect == 1)
{
ParkON();
ParkDetect = 2;
}

if(ParkDetect == 3)
{
ParkOFF();
ParkDetect = 0;
}

if(digitalRead(ParkSignal)==0)
{
if(digitalRead(ReverseSignal)==0)
{
if((digitalRead(BrakeSignal)==0)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //all off
{
AllOff();
}

if(digitalRead(ShowSignal)==1) //Show Lights
{
ShowMode();
}

if((digitalRead(BrakeSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //Brake Light
{
BrakeFull();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Left Blinker
{
Turn = 1; // animation is running
RightOff();
LeftBlinker();
LeftDim();
Turn = 0; // animation stops
//delay (BlinkerOffDelay);
}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Right Blinker
{
Turn = 1;
LeftOff();
RightBlinker();
RightDim();
Turn = 0;
//delay (BlinkerOffDelay);
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Left Blinker & Brake
{
Turn = 1; // animation is running
RightFull();
LeftBlinker();
LeftDim();
Turn = 0; // animation stops
}




if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Right Blinker & Brake
{
Turn = 1;
LeftFull();
RightBlinker();
RightDim();
Turn = 0;
//delay (BlinkerOffDelay);
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==0)) //Dual Blinker / Hazard
{
MiddleOff();
DualBlinker();
LeftDim();
RightDim();
//delay (BlinkerOffDelay);
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==1)) //Dual Blinker / Hazard + Brake
{
LeftDim();
RightDim();
BrakeMiddle();
DualBlinker();
LeftDim();
RightDim();
//delay (BlinkerOffDelay);
}





}
}


if(ParkDetect == 2)
{
if(digitalRead(ReverseSignal)==0)
{
if((digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Park Light
{
ParkFull();
}


if((digitalRead(BrakeSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(RightSignal)==0)) //Brake Light
{
BrakeFull();
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Left Blinker
{
Turn = 1;
LeftDim();
RightLit();
LeftBlinker();
LeftDim();
Turn = 0;

}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==0)) //Right Blinker
{
Turn = 1;
RightDim();
LeftLit();
RightBlinker();
RightDim();
Turn = 0;

}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Left Blinker & Brake
{
Turn = 1;
LeftDim();
LeftBlinker();
LeftDim();
Turn = 0;
}

if((digitalRead(RightSignal)==1)&&(digitalRead(LeftSignal)==0)&&(digitalRead(BrakeSignal)==1)) //Right Blinker & Brake
{
Turn = 1;
RightDim();
RightBlinker();
RightDim();
Turn = 0;
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==0)) //Dual Blinker / Hazard
{
LeftDim();
RightDim();
ParkMiddle();
DualBlinker();
LeftDim();
RightDim();
//delay (BlinkerOffDelay);
}

if((digitalRead(LeftSignal)==1)&&(digitalRead(RightSignal)==1)&&(digitalRead(BrakeSignal)==1)) //Dual Blinker / Hazard + Brake
{
LeftDim();
RightDim();
BrakeMiddle();
DualBlinker();
LeftDim();
RightDim();
//delay (BlinkerOffDelay);
}
}
}


}




















void ParkON()
{
for (int i = 0; i < (NUM_LEDS/2); i++)

{
//if(digitalRead(BrakeSignal)==1){ break; }
leds[i] = CRGB(30, 0, 0);
ledsbli[i] = CRGB(30, 0, 0);

leds[i-1] = CRGB(0, 0, 0);
ledsbli[i-1] = CRGB(0, 0, 0);

leds[(NUM_LEDS-1)-i] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS-1)-i] = CRGB(30, 0, 0);

leds[(NUM_LEDS)-i] = CRGB(0, 0, 0);
ledsbli[(NUM_LEDS)-i] = CRGB(0, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = ((NUM_LEDS/2)-1); j >= 0; j--)

{
//if(digitalRead(BrakeSignal)==1){ break; }
leds[j] = CRGB(30, 0, 0);
ledsbli[j] = CRGB(30, 0, 0);

leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(30, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = ((NUM_LEDS/2)-1); j >= 0; j--)

{
//if(digitalRead(BrakeSignal)==1){ break; }
leds[j] = CRGB(255, 0, 0);
ledsbli[j] = CRGB(255, 0, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 0, 0);
ledsbli[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

for (int j = 255; j >= 60; j--)

{
for (int i = 0; i < NUM_LEDS; i++)

{
//if(digitalRead(BrakeSignal)==1){ break; }
leds[i] = CRGB(j, 0, 0);
ledsbli[i] = CRGB(j, 0, 0);

}
FastLED.show();
delay (5);
}
}

void ParkOFF()
{
for (int j = 60; j <= 255; j++)

{
for (int i = 0; i < NUM_LEDS; i++)

{
leds[i] = CRGB(j, 0, 0);
ledsbli[i] = CRGB(j, 0, 0);

}
FastLED.show();
delay (5);
}

for (int j = 0; j <= ((NUM_LEDS/2)-1); j++)

{
leds[j] = CRGB(255, 0, 0);
ledsbli[j] = CRGB(255, 0, 0);

leds[j-1] = CRGB(30, 0, 0);
ledsbli[j-1] = CRGB(30, 0, 0);

leds[(NUM_LEDS-1)-j] = CRGB(255, 0, 0);
ledsbli[(NUM_LEDS-1)-j] = CRGB(255, 0, 0);

leds[(NUM_LEDS)-j] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS)-j] = CRGB(30, 0, 0);

FastLED.show();
delay (StartupSpeed);
}

leds[((NUM_LEDS/2)-1)] = CRGB(30, 0, 0);
ledsbli[((NUM_LEDS/2)-1)] = CRGB(30, 0, 0);

leds[((NUM_LEDS/2)-1)+1] = CRGB(30, 0, 0);
ledsbli[((NUM_LEDS/2)-1)+1] = CRGB(30, 0, 0);

FastLED.show();

for (int j = 0; j <= ((NUM_LEDS/2)-1); j++)

{
leds[j] = CRGB(30, 0, 0);
ledsbli[j] = CRGB(30, 0, 0);

leds[j-1] = CRGB(0, 0, 0);
ledsbli[j-1] = CRGB(0, 0, 0);

leds[(NUM_LEDS-1)-j] = CRGB(30, 0, 0);
ledsbli[(NUM_LEDS-1)-j] = CRGB(30, 0, 0);

leds[(NUM_LEDS)-j] = CRGB(0, 0, 0);
ledsbli[(NUM_LEDS)-j] = CRGB(0, 0, 0);

FastLED.show();
delay (StartupSpeed);
}
}

void AllOff()
{
for (int i = 0; i < NUM_LEDS; i++)
for (int k = 0; k < NUM_LEDSREV; k++)
for (int z = 0; z < NUM_LEDS; z++)
{
leds[i] = CRGB(0, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[z] = CRGB(0, 0, 0);
}
FastLED.show();
}





void LeftOff()
{

for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void RightOff()
{

for (int z = BlinkerLEDs; z < NUM_LEDS; z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void MiddleOff()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
for (int k = BlinkerLEDs; k < (NUM_LEDSREV - BlinkerLEDs); k++)
for (int z = BlinkerLEDs; z < (NUM_LEDS - BlinkerLEDs); z++)
{
leds[i] = CRGB(0, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[z] = CRGB(0, 0, 0);
}
FastLED.show();
}

void Reverse()
{
//for (int i = 0; i < NUM_LEDS; i++) // kan niet want anders gaan de rode strips met remmen meerdere feeds krijgen
for (int k = 0; k < NUM_LEDSREV; k++)
//for (int z = 0; z < NUM_LEDS; z++) // kan niet want anders gaan de rode strips met remmen meerdere feeds krijgen
{
//leds[i] = CRGB(0, 0, 0); // kan niet want anders gaan de rode strips met remmen meerdere feeds krijgen
ledsrev[k] = CRGB(255, 255, 255);
//ledsbli[z] = CRGB(0, 0, 0); // kan niet want anders gaan de rode strips met remmen meerdere feeds krijgen
}
FastLED.show();
}

void BrakeFull()
{
for (int i = 0; i < NUM_LEDS; i++)
//for (int k = 0; k < NUM_LEDSREV; k++) //not possible to RED the small ring will get red and white signals

{
leds[i] = CRGB(255, 0, 0);
//ledsrev[k] = CRGB(0, 0, 0); //not possible to RED the small ring will get red and white signals
ledsbli[i] = CRGB(255, 0, 0);
}
FastLED.show();
}

void BrakeMiddle()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)

{ leds[i] = CRGB(255, 0, 0);

}
FastLED.show();
}

void ParkFull()
{
for (int i = 0; i < NUM_LEDS; i++)
for (int k = 0; k < NUM_LEDSREV; k++)
{
leds[i] = CRGB(60, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[i] = CRGB(60, 0, 0);
}
FastLED.show();
}

void ParkMiddle()
{
for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
for (int k = BlinkerLEDs; k < (NUM_LEDSREV - BlinkerLEDs); k++)

{
leds[i] = CRGB(60, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
ledsbli[i] = CRGB(60, 0, 0);
}
FastLED.show();
}

void LeftBlinker()
{
for (int z = (BlinkerLEDs)-1; z >= 0; z--)

{
currentMillis = previousMillis = millis();
while(previousMillis + 35 >= currentMillis){
ledsbli[z] = CRGB(255, 165, 0);
leds[z] = CRGB(255, 165, 0);
if (digitalRead(BrakeSignal)==HIGH){ break; }
FastLED.show();
currentMillis = millis();
}
}
}


void LeftDim()
{
for (int z = 0; z < BlinkerLEDs; z++)

{
ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);


}
FastLED.show();
}

void LeftLit()
{
for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)

{
ledsbli[z] = CRGB(75, 0, 0);


}
FastLED.show();
}

void LeftFull()
{
for (int i = 0; i < (NUM_LEDS - BlinkerLEDs); i++)

for (int z = 0; z < (NUM_LEDS - BlinkerLEDs); z++)

{
leds[i] = CRGB(255, 0, 0);

ledsbli[z] = CRGB(255, 0, 0);

}
FastLED.show();
}

void RightBlinker()
{
for (int z = (NUM_LEDS - BlinkerLEDs); z < NUM_LEDS; z++)


{
currentMillis = previousMillis = millis();
while(previousMillis + 35 >= currentMillis){
ledsbli[z] = CRGB(255, 165, 0);
leds[z] = CRGB(255, 165, 0);
if(digitalRead(BrakeSignal)==HIGH){ break; }
FastLED.show();
currentMillis = millis();
}
}
}

void RightDim()
{

for (int z = (NUM_LEDS - BlinkerLEDs); z < NUM_LEDS; z++)
{

ledsbli[z] = CRGB(0, 0, 0);
leds[z] = CRGB(0, 0, 0);
}
FastLED.show();
}



void RightLit()
{
for (int i = BlinkerLEDs; i < NUM_LEDS; i++)
for (int k = BlinkerLEDs; k < NUM_LEDSREV; k++)
{
leds[i] = CRGB(75, 0, 0);
ledsrev[k] = CRGB(0, 0, 0);
}
FastLED.show();
}

void RightFull()
{
for (int i = BlinkerLEDs; i < NUM_LEDS; i++)

for (int z = BlinkerLEDs; z < NUM_LEDS; z++)
{
leds[i] = CRGB(255, 0, 0);

ledsbli[z] = CRGB(255, 0, 0);

}
FastLED.show();
}

void DualBlinker()
{
for (int z = (BlinkerLEDs-1); z >= 0; z--)
{
ledsbli[z] = CRGB(255, 165, 0);
ledsbli[NUM_LEDS-1-z] = CRGB(255, 165, 0);
FastLED.show();
delay (BlinkerSpeed);
}
}
void ShowMode()
{
currentMillis = previousMillis = millis();
while(previousMillis + 35 >= currentMillis)
for (int a = 0; a <500; a++) //a = time the animation runs

{
for(int m =0; m< NUM_LEDS; m++)
for(int r =0; r< NUM_LEDSREV; r++)
{

leds[m] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);
ledsbli[m] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);
ledsrev[r] = CHSV(m-(a*2),BRIGHTNESS, SATURATION);
if(digitalRead(BrakeSignal)==1){ a=9999;}
}

FastLED.show();
currentMillis = millis();
}
}
*Arduino nOOb but I am learning*

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Auto lampen aansturen

Berichtdoor shooter » 24 Dec 2020, 17:40

allereerst zag ik een stel delays daar moet je echt iets op verzinnen dat met een timer (millis()) werkt. dat heeft wel conseqeunties maar als je eerst even zelf eendemo programma maakt, dan snap je gelijk wat de bedoeling is.
hetzelfde verhaal is ook voor de for loops het geval.
als je eenmaal in zo een for loop zit kun je remmen maar dat heeft pas zin als je dat detecteert.
de loop zelf moet gewoon heel snel gaan, met bijvoorbeeld de remdetectie, als de rem aangaat dan een functie om de rem aan te zetten, en een functie om de rem uit te zetten natuurlijk.
voor de for loop moet je gaan onthouden waar je bent dus welke situatie er is. dan doe je die aanzetten en showen. Vervolgens ga je terug naar de loop en wacht je af met millis bijv wanneer de volgende situatie is, die zet je dan en dan weer show. Op die manier kun je veel dimgen 'tegelijk'sturen.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten