Arduino controlled Chevy V8 firing sequence HELP NEEDED

Good day everyone,

This looked like the best place to share my ambitious project (for me anyway).
Since I know I'll run into some problems coding, as I have little experience in this field but would very much like to learn it.
Best thing to get into this was to find a fun and preferably semi-usefull project to do so.

Since I got a mechanics background and I'm a proper petrolhead, I'm building my own Chevy smallblock V8 coffee table.
I want to have some kind of background lighting in the engine cilinders to have is stand out, so the usual RGB ebay Led strips came to mind.

But after I saw this video on youtube, I have to try and recreate the effect of the cilinders firing in the proper sequence.

So my plan so far:
-I have the Arduino Mega on it's way to me, shouldn't take more than a couple of days.
-I have found a guide on electroschematics.com from a P.Marian who so kindly shared his project, which incidently is almost exactly what I need
http://www.electroschematics.com/9820/arduino-led-ring/
-Basically, I want to have a light source in each cilinder (8 outputs) that turn on in succession and repeating the loop infinitly.

  • I will place the finished lights in the correct cilinder afterwards, to have the cilinders firing according to the engine specs. but that is besides the point here.*
    -The speed at which these lights flash from one to the next should be controlled by a potentiometer.

Now, I have my own wiring diagram drawn up arlread. This is for my first testing setup with the single LED's.
So far, this is almost exactly like the article on electroschematics.com so I would guess that I can make it to this point...

From there I would like to add some other features, that might go beyond my current qualifications. That is, for now.
-First, I think the single LED's will need replacing by a LED strip to give enough light to glow in the engine cilinder.
Each strip containg a few LED's (5-6 I would estimate)
So 8 individual LED strip lighting up in succession will be required.
-Secondly, a breathing effect for the led's would be a more soothing visual representation for a cilinder firing.
Instead of an ON/OFF effect.
-If possible, a second potentiometer to change the brightness of the LEDs would be nice.
NOTE: This doesn't have to be a Smart/Wireless/Bluetooth/... kind of thing. Fysical buttons or signals can be incorporated and will suit the project.

So my questions so far.
-Which LED's/LED strip do you guys recommend?
The Neopixel LED strip caught my eye, since it seems the easiest to wire up. If someone has pro's/con's I'd love to hear it.
-How will my wiring diagram need to change to incorporate these strips, new parts for my arduino build, etc. ?
-How will the coding need to change to have them control the LED strips in a similar way with the potentiometer controlling speed?
-Can I code a breathing effect for switching on a LED?
-Can I have a dimming input via a second potentiometer?

I'm noticing this is a rather lengthy thread for just a few questions.
But I have noticed from my own research on arduino for the last week, that in this case it is better to give more info than almost none at all.

I thank you for looking into this and helping me out wherever possible. Comments, thoughts, suggestion,... Just let me know
Stoked to get started on this project.
Have a nice day

I cannot see any of the photos you have posted.

ieee488:
I cannot see any of the photos you have posted.

I made some changes in the picture path.
Are they visible now? It's strange, I can see them fine, so it is hard figuring out what is going wrong here.

Here you can find the Sketch Code for the 6 LED ring I’m thinking of implementing in my own project
Props go to P. MARIAN

/* source: http://www.electroschematics.com/9820/arduino-led-ring/ */
const byte leds = 8; // how many leds
byte pins[] = {5, 6, 7, 8, 9, 10, 11, 12}; // pins to connect leds
int pot = A1;
int minSpeed = 500; // put a high value
int maxSpeed = 50;  // put a low value
 
void setup()
{
	for(int i = 0; i < leds; i++) {
		pinMode(pins[i], OUTPUT);
	}  
	pinMode(pot, INPUT);
}
 
void loop()
{
	for(int i = 0; i < leds; i++) {
		digitalWrite(pins[i], HIGH);
		int valPot = analogRead(pot);
		int speed = map(valPot, 0, 1023, minSpeed, maxSpeed);
		delay(speed);
		digitalWrite(pins[i], LOW);
	}	
}

You will probably want to add a switching (driver) transistor on each Arduino output to the LEDs since the Arduino is fairly limited in the drive ability. As far as the "breathing" effect, you can create that with PWM on the LED, however, I don't think you could have 8 different PWM channels going. I'm sure someone else here will tell me "of course it is easy, just do it this way" ... and we both learn :slight_smile: Hmmm - thinking about it a bit, you would actually only need 4 channels of PWM and switch between alternate pistons (LED) since any time one is at TDC compression, there is another one at TDC exhaust.

gpsmikey:
You will probably want to add a switching (driver) transistor on each Arduino output to the LEDs since the Arduino is fairly limited in the drive ability. As far as the "breathing" effect, you can create that with PWM on the LED, however, I don't think you could have 8 different PWM channels going. I'm sure someone else here will tell me "of course it is easy, just do it this way" ... and we both learn :slight_smile: Hmmm - thinking about it a bit, you would actually only need 4 channels of PWM and switch between alternate pistons (LED) since any time one is at TDC compression, there is another one at TDC exhaust.

Thanks for the info, so having around 12ish PWM channels on the arduino Mega doesn't mean I can have 8 different signals going to the LEDs for the breathing effect?

Damn, than I'll have to wait for someone who can help me wire that in.
If it's impossible to do, I'll be able to live with it... But still...

I have seen the transistors used with LED strips, do you think I'll need them when I try it out with the 8 single LED's first aswell?
I want to use the one LED for each cilinder to test the brightness out, but most likely I'll want a strip just for the birghtness of it (and color changing).
That where I seen it get complicated with the transistors, that's why theAdafruit Neopixel LED strips seemed to be a bit less cluttered.

Thanks for the reply!

The Arduino can directly drive (if I remember correctly) 20ma per output which is fine for a single standard LED, but not sufficient for either a high power one or a bunch together. You can either use a bipolar transistor for the switch or a logic level MOSFET (my choice would depend on which one I have handy in my parts bin). Either way only requires basically a transistor and a couple of additional resistors.

I just finished a first version of the LED ignition timing for the engine.

Here you can check out the video of the working prototype:

V8 arduino controlled ignition sequence

4 LED’s for each cilinder. I’ll try it out if this is bright enough to place inside the engine, but I’m doutfull.
An LED strip around the inside of each cilinder might be required, so that might complicate the project a bit.
Or at least the coding.

I was able to use the code I previously posted, completely as is. worked perfectly.

If anyone could help me, how can I have this code set up to fade the LED’s in and out?
And is it even possible?

I’m using mosfets for each set of 4 led’s and a poteniometer to set the speed of the “ignition” timing

I’ll place a more detailed wiring diagram if someone is interested in it.

If anyone has any suggestions, comment or questions,
I’ll gladly hear them

Personally, I think analog rgb LEDs are the wrong way to go.

Smart LEDs are way easier to control.

These neopixel rings might fit directly into the piston-thing.