Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino-Controlled Multi-Stage Coin-Operated Car Wash System with LCD Display

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Multi-Stage Coin-Operated Car Wash System with LCD Display

Circuit Documentation

Summary

This circuit is designed to control a multi-stage process using an Arduino Expansion Board. The stages include Wash, Soap, Blow, and Water, each controlled by a Solid State Relay (SSR). The circuit also includes an LCD display for user interaction, arcade buttons for input, and a coin acceptor for payment. The system allows users to start and pause each stage, and it includes a settings mode for adjusting the countdown times and prices for each stage.

Component List

  1. SSR-40A

    • Description: Solid State Relay
    • Pins: -, +, Lin, Lout
    • Purpose: Controls the power to each stage (Wash, Soap, Blow, Water)
  2. 120V Outlet

    • Description: Standard 120V AC outlet
    • Pins: AC Neutral, AC Hot, GND
    • Purpose: Provides AC power to external devices
  3. Terminal Block

    • Description: Terminal block for wire connections
    • Pins: None
    • Purpose: Provides a common connection point for multiple wires
  4. Circuit Breaker

    • Description: Circuit breaker for safety
    • Pins: -, +
    • Purpose: Protects the circuit from overcurrent
  5. Arduino Expansion Board

    • Description: Arduino-compatible microcontroller board
    • Pins: 8, 9, 10, 11, 12, 13, GND, AREF, RX, TX, 2, 3, 4, 5, 6, 7, G, V, 1, 0, 5V, SCL, SDA, 3V3, A0, A1, A2, A3, A4, A5, A6, A7, RST, NC, VIN, POWER
    • Purpose: Controls the entire system, including relays, buttons, and LCD
  6. Lcd 20x4 i2c

    • Description: 20x4 character LCD with I2C interface
    • Pins: GND, 5v, SCA, SCL
    • Purpose: Displays information to the user
  7. Arcade Button (red)

    • Description: Arcade-style push button
    • Pins: no name yet
    • Purpose: User input for starting and pausing stages
  8. POWER SUPPLY 12V 5AMP

    • Description: 12V DC power supply
    • Pins: 220V Positive Pole (AC), 220V Negative Pole (AC), GND, GND (DC), 12V-24V Output (DC)
    • Purpose: Provides 12V DC power to the circuit
  9. 2.1mm Male

    • Description: 2.1mm male power connector
    • Pins: +, -
    • Purpose: Connects the power supply to the circuit
  10. Multi Coin Acceptor

    • Description: Coin acceptor for multiple coin types
    • Pins: COIN, DC12V, GND, COUNTER
    • Purpose: Accepts coins for payment
  11. Resistor

    • Description: 200 Ohm resistor
    • Pins: pin1, pin2
    • Purpose: Limits current in the circuit

Wiring Details

SSR-40A

SSR-40A

SSR-40A

SSR-40A

120V Outlet

Terminal Block

Circuit Breaker

Arduino Expansion Board

Lcd 20x4 i2c

Arcade Button (red)

POWER SUPPLY 12V 5AMP

2.1mm Male

Multi Coin Acceptor

Resistor

Documented Code

Arduino Expansion Board Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h> // Include EEPROM library

// LCD setup
LiquidCrystal_I2C lcd(0x27, 20, 4);

// Button pins
const int buttonPins[4] = {A0, A1, A2, A3}; // A0: Cycle settings, A1: Toggle adjustment type, A2: Increase, A3: Decrease
// Relay pins
const int relayPins[4] = {7, 6, 5, 4};

// Coin acceptor pin
const int coinAcceptorPin = 2; // Pin connected to coin acceptor output

// Countdown time in seconds for each stage
int countdownTimes[4]; // Initialize without default values
// Prices for each stage
int prices[4]; // Initialize without default values

// Countdown timers
int timers[4] = {0, 0, 0, 0};
// Pause state for each timer
bool paused[4] = {true, true, true, true}; // Start with all timers paused

// Blink control
bool blinkState = false; // State for blinking
unsigned long previousMillis = 0; // Store the last time the text was updated
const long blinkInterval = 500; // Blink interval in milliseconds
unsigned long lastUpdateMillis = 0; // Store the last time the timers