#define pots_5v 12 #define duration_pin A1 #define pulses_pin A0 #define pedal_pin A2 #define pedal_pin_gnd A3 #define pedal_pressed 0 #define SSR 2 #define n_measures 50 #define min_pulse 10 #define max_pulse 200 #define between_pulses 10 #define min_n_pulses 1 #define max_n_pulses 10 #define SSR_ON 1 #define SSR_OFF 0 int duration = min_pulse; int pulses = min_n_pulses; void setup() { Serial.begin(9600); pinMode(duration_pin, INPUT); pinMode(pulses_pin, INPUT); pinMode(pedal_pin, INPUT_PULLUP); pinMode(pedal_pin_gnd, OUTPUT); pinMode(SSR, OUTPUT); pinMode(pots_5v, OUTPUT); digitalWrite(pedal_pin_gnd, 0); digitalWrite(SSR, SSR_OFF); digitalWrite(pots_5v, 1); } void loop() { if(check_pedal()){ Serial.println("Pedal pressed"); Serial.print("Duration: "); Serial.println(duration); Serial.print("Pulses: "); Serial.println(pulses); for(int i = 0; i < pulses; i++){ Serial.println("Fire!"); digitalWrite(SSR, SSR_ON); delay(duration); digitalWrite(SSR, SSR_OFF); delay(between_pulses); } } duration = max_pulse + min_pulse - map(measure(duration_pin), 0, 1023, min_pulse, max_pulse); pulses = max_n_pulses - map(measure(pulses_pin), 0, 1023, min_n_pulses, max_n_pulses); } boolean pressed = false; boolean check_pedal(){ if(digitalRead(pedal_pin) == pedal_pressed){ if(pressed) return false; delay(5); if(digitalRead(pedal_pin) == pedal_pressed){ pressed = true; return true; } } pressed = false; return false; } int measure(int pin){ unsigned long sum = 0; for(int i = 0; i < n_measures; i++) sum += analogRead(pin); return sum/n_measures; }