How do I control 12V underlighting in a car?

First, I apologize for my noobness.....

Ok, I currently have an entire custom designed control system for my 1078 VW Bus (touchscreen navigation and everything!) but would like to add underlighting, and other custom lighting controlls. I already have an Arduino Mega, fo use of audio and controlling my iPod, plus an LED screen...but now i would like to make my underlighting controllable through the arduino....

I know i need some type of relay, but i cant find any solid information about doing so.....what i thought would be my answer would be a DC SSR, but those prooved to not be buyable very easily.....

so in short, i need one signal pin from the arduino, to turn on a 12v light


State change detection (edge detection)

Often, you don't need to know the state of a digital input all the time,
but you just need to know when the input changes from one state to another.
For example, you want to know when a button goes from OFF to ON. This is called
state change detection, or edge detection.

This example shows how to detect when a button or button changes from off to on
and on to off.

The circuit:

  • pushbutton attached to pin 2 from +5V
  • 10K resistor attached to pin 2 from ground
  • LED attached from pin 13 to ground (or use the built-in LED on
    most Arduino boards)

created 27 Sep 2005
modified 17 Jun 2009
by Tom Igoe
modified by undrcvragnt
2 Jan 2010


// this constant won't change:
const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin = 13; // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button

void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize serial communication:

void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);

// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter, DEC);
else {
// if the current state is LOW then the button
// wend from on to off:

// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;

// turns on the LED every two button pushes by
// checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the division of two numbers:
if (buttonPushCounter % 2 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);


(not my code, used from change state detector and made 4 pushes to 2 pushes)

Use the original set up:

Connect the ground of your lights to this:

undrcvragnt appears to be suggesting you use a Transistor, and I agree. The only problem with using transistors such as the PN2222, is that they can only control low levels of current (600mA -). I believe MOSFETS can control much more, but you need to know how much current your lights draw. After that, you can determine which transistor to use.

Another option, as you stated, is a relay. If you know how to use one, it could be pretty simple, but I've never worked with relays, so I can give no advice in that area.