
Blog - LEDbar controller for Garbage run 2018
09-Feb-2018

Atmega based LEDbar controller to switch 4 LEDbars (12v 180w) on a car for the Garbage run 2018
Updated on: 05-02-2018 :: Version 0.1
Specifications
Schematic

..
Parts
Part details used for the controller:
ATmega source code (Arduino IDE)
/* Atmega sketch for LEDbar controller - Duteweerd Elektronica 2017 - 2018 */ int allOnPin = 2; //Switch: All on (Pin2) int strobePin = 3; // int LEDBar_10frontPin = 4; // int LEDBar_rearPin = 5; // int LEDBar_highbeamSigPin = 7; // int LEDBar_rearSigPin = 6; // int LEDbarF1_outPin = 8; // int LEDbarF2_outPin = 9; // int LEDbarF3_outPin = 10; // int LEDbarR1_outPin = 11; // int HeartBeat_LEDPin = 13; // int strobe_potPin = A1; // int val_allOnPin = 0; int val_strobePin = 0; int val_LEDBar_10frontPin = 0; int val_LEDBar_rearPin = 0; int val_LEDBar_highbeamSigPin = 0; int val_LEDBar_rearSigPin = 0; int val_strobe_potPin = 0; int randNumber; int last_allOnPin = LOW; int last_strobePin = LOW; int last_LEDBar_10frontPin = LOW; int last_LEDBar_rearPin = LOW; int last_LEDBar_highbeamSigPin = LOW; int last_LEDBar_rearSigPin = LOW; void setup() { // initialize PINS for INPUT pinMode(allOnPin, INPUT); pinMode(strobePin, INPUT); pinMode(LEDBar_10frontPin, INPUT); pinMode(LEDBar_rearPin, INPUT); pinMode(LEDBar_highbeamSigPin, INPUT); pinMode(LEDBar_rearSigPin, INPUT); pinMode(strobe_potPin, INPUT); // initialize PINS for OUTPUT pinMode(LEDbarF1_outPin, OUTPUT); pinMode(LEDbarF2_outPin, OUTPUT); pinMode(LEDbarF3_outPin, OUTPUT); pinMode(LEDbarR1_outPin, OUTPUT); pinMode(HeartBeat_LEDPin, OUTPUT); } void heartbeat() { //Perform a heartbeat indication on LED (Buildin Pin 13) digitalWrite(HeartBeat_LEDPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for half a second digitalWrite(HeartBeat_LEDPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } void strobe() { //Strobe function code randNumber = random(8, 12); // select random output for strobe digitalWrite(randNumber, HIGH); delay(val_strobe_potPin); // wait for however potentiometer value is digitalWrite(randNumber, LOW); delay(val_strobe_potPin); // wait for however potentiometer value is } void loop() { // Read switch states val_allOnPin = digitalRead(allOnPin); val_strobePin = digitalRead(strobePin); val_LEDBar_10frontPin = digitalRead(LEDBar_10frontPin); val_LEDBar_rearPin = digitalRead(LEDBar_rearPin); val_LEDBar_highbeamSigPin = digitalRead(LEDBar_highbeamSigPin); val_LEDBar_rearSigPin = digitalRead(LEDBar_rearSigPin); val_strobe_potPin = map(analogRead (strobe_potPin), 0, 1023, 10, 1000); //heartbeat(); //heartbeat LED function if (val_strobePin == HIGH & last_strobePin == LOW) { digitalWrite(LEDbarR1_outPin, LOW); digitalWrite(LEDbarF1_outPin, LOW); digitalWrite(LEDbarF2_outPin, LOW); digitalWrite(LEDbarF3_outPin, LOW); last_strobePin = HIGH; } if (val_strobePin == LOW & last_strobePin == HIGH) { last_strobePin = LOW; } if (val_strobePin == HIGH) { //Code to start strobe function strobe(); return; } //Rear light function if (val_LEDBar_rearSigPin == HIGH) { //code to start rear light function digitalWrite(LEDbarR1_outPin, HIGH); last_LEDBar_rearSigPin = HIGH; } if (val_LEDBar_rearSigPin == LOW & last_LEDBar_rearSigPin == HIGH) { digitalWrite(LEDbarR1_outPin, LOW); last_LEDBar_rearSigPin = LOW; } //Rear light function if (val_LEDBar_rearPin == HIGH) { //code to start rear light function digitalWrite(LEDbarR1_outPin, HIGH); last_LEDBar_rearPin = HIGH; } if (val_LEDBar_rearPin == LOW & last_LEDBar_rearPin == HIGH) { digitalWrite(LEDbarR1_outPin, LOW); last_LEDBar_rearPin = LOW; } //High beam function if (val_LEDBar_highbeamSigPin == HIGH) { //code to start high beam function digitalWrite(LEDbarF1_outPin, HIGH); digitalWrite(LEDbarF2_outPin, HIGH); digitalWrite(LEDbarF3_outPin, HIGH); last_LEDBar_highbeamSigPin = HIGH; } if (val_LEDBar_highbeamSigPin == LOW & last_LEDBar_highbeamSigPin == HIGH) { digitalWrite(LEDbarF1_outPin, LOW); digitalWrite(LEDbarF2_outPin, LOW); digitalWrite(LEDbarF3_outPin, LOW); last_LEDBar_highbeamSigPin = LOW; } if (val_allOnPin == HIGH) { //Code to start allOn function digitalWrite(LEDbarR1_outPin, HIGH); digitalWrite(LEDbarF1_outPin, HIGH); digitalWrite(LEDbarF2_outPin, HIGH); digitalWrite(LEDbarF3_outPin, HIGH); last_allOnPin = HIGH; } if (val_allOnPin == LOW & last_allOnPin == HIGH) { digitalWrite(LEDbarR1_outPin, LOW); digitalWrite(LEDbarF1_outPin, LOW); digitalWrite(LEDbarF2_outPin, LOW); digitalWrite(LEDbarF3_outPin, LOW); last_allOnPin = LOW; } if (val_LEDBar_10frontPin == HIGH) { //Code to start allOn function digitalWrite(LEDbarF1_outPin, 30); last_LEDBar_10frontPin = HIGH; } if (val_LEDBar_10frontPin == LOW & last_LEDBar_10frontPin == HIGH) { digitalWrite(LEDbarF1_outPin, LOW); last_LEDBar_10frontPin = LOW; } }
Finished product


If you have any questions about this topic, please contact me
If this was interesting for you, please consider a donation via PayPal here