Automotive Wiper Motor / Headlight control using a single push button switch

Thread Starter


Joined Dec 14, 2023
I would like to use a single push-button switch to control a two-speed windshield wiper.

The car is a Nova kit car based on an early 1970 VW beetle, with the existing switches and instrumentation that look antediluvian. I'm modernizing the dash and controls in keeping with the car's exotic looking exterior. I plan on using a vendor supplied "Raptor" wireless steering wheel mounted switch panel that only has push button switches that remotely operate small relays, either in a momentary or latch mode.

What I would like is to be able to press the button once for low speed wiping, a second time for high speed, and then a third time to turn it off.

The wiper motor appears to be a standard VW two-speed wiper motor with 5 inputs: Low, High, "Park", Ground, and Power.

I would also like to include an intermittent function on the low speed and believe that a standard-ish 555 timer circuit could be inserted into that input to the motor to achieve that function. I do not think I need any advice on that aspect of the project.

I will be using standard automotive relays to build the circuit because of the amperages; and I have lots of them and the mounting blocks already on-hand.

I've tried to puzzle it out with relays and configuring them into "and" gates and latching relays but it all seems to be beyond my skill set.

Could anyone suggest how I could wire this up: A single on/off switch usually operated as momentary, but with possible latching capability.

What I'd like is one press for low, a second press for high, then a third press for off?

Note, too, that I plan on using this similarly for the headlights: First push for low beams, second push for high beams, third push for off.



Joined Mar 14, 2008
You could perhaps use some type of sequencing relay, but that likely would be fairly expensive.

Alternately you could use a CD4017 CMOS counter circuit to provide from two to ten sequential states from a push-button input.
The outputs would control transistor drivers to either control a relay or directly drive your devices.
It can be assembled on a small perf-board.
I can provide a circuit, if interested.
Last edited:


Joined Aug 31, 2022
In case you plan to add more functionality and/or other circuits how about using an Arduino UNO which can be programmed with fairly simple code to drive relays, with push switches. If you have 12V relays you can use output lines to drive into the base of an NPN transistor (via a resistor) to switch relays connected between the +ve rail and transistor collector. The UNO can be powered from 12V and the maximum current from the outputs is 40mA. Use the R3 - no need for the R4 which is faster but has a lower current output.

For this example, the push button could be connected between an input pin and ground. The processor has internal pullup resistors which you can select with "pinMode(wiper_button, INPUT_PULLUP);". So that input is normally high and the code will loop continuously to check the pin to see if it goes low and take the corresponding action. To avoid switch bounce, when it's low, implement the desired relay action and insert maybe half a second delay before the switch is checked again. For the intermittent mode you could have a potentiometer on or under the dash to alter the delay between eack wipe.


Joined Jan 27, 2019
Both suggested approaches are good ones though the challenging electrical environment of a car could cause trouble for each. This is not to say you can’t or shouldn’t use either one, it’s just a consideration.

Were I to choose one of them, I would go the microcontroller route and definitely use the Arduino ecosystem as mentioned. There are many possibilities once you have both the hardware in place and the knowledge to use it.

Even if you were never going to do more than your stepped speed control, an inexpensive and robust Arduino-compatible development board like the Seeed Studio Seeeduino Xiao ESP32 offers everything you need, minus the switching devices you choose (relays, MOSFETs).

But as a potentially huge bonus, also includes WiFi and Bluetooth which don’t have to be used, but can be, offering endless possibilities. You can see the scale, that’s a standard Type-C connector. Yes, there will be a learning curve which may appear steep at first, but thanks to the the Arduino environment it flattens out pretty fast. Once you are done, you will have a new and extremely powerful toolset for future projects.

On the other hand, it would be relatively easy to create your own relay logic using standard relays and clever wiring. The key is DPDT (double pole, double through) relays and wiring the power to the relay coils through each other such that one impulse turns on relay A, a second turns on relay B and turns off relay A, and the third turns off B. It will probably also require a few “passive” parts.

If you can do the thinking you need to work out the logic, it no longer presents much advantage over the Arduino route since:

1. It will not cost much less, or less at all.

2. The work you will need to do to understand the logic and circuits is easily as much as to understand the Arduino solution.

3. It will lack the flexibility and extensibility of the Arduino solution, and where the Xiao only needs a software revision and upload to make corrections and improvements, the relay solution requires rewiring—a far more difficult proposition, especially if it is buried in the dash.

Whatever you choose, I am certain you will find excellent, expert help here on AAC in implementing it. Good luck with your project.