// TONE MANAGER - 1 input switch and 1 input potentiometer to generate tones const int buttonPin = 6; const int buzzer = 2; const int slider = A5; bool onoff = false; bool tonePlaying = false; bool toneAborted = false; unsigned long toneStartTime = 0; unsigned long lastTime = 0; int oldslider; int currentButtonState; #define mapslider map(analogRead(slider),0,1023,1,50) void setup() {pinMode(buttonPin,INPUT_PULLUP);pinMode(buzzer, OUTPUT); pinMode(slider,INPUT); for (int i=1;i<25;i++) {tone(buzzer,random(200,700));delay(random(150,250)); noTone(buzzer);delay(random(10,30));} tonePlaying = false; toneAborted = true; noTone(buzzer);} void loop() { oldslider = mapslider; if (abs(mapslider-oldslider) > 0) { tone(buzzer,map(analogRead(slider),0,1023,150,800)); delay(random(100,200)); oldslider = mapslider; noTone(buzzer);} currentButtonState = digitalRead(buttonPin); if (currentButtonState == LOW) { if (!tonePlaying && !toneAborted) { tone(buzzer, random(150, 800)); tonePlaying = true; toneStartTime = millis(); } } else { if (tonePlaying) { noTone(buzzer); if (millis() - toneStartTime >= 1000) {toneAborted = true;} tonePlaying = false; } } if (tonePlaying && (millis() - toneStartTime) >= 1000) { noTone(buzzer); tonePlaying = false; toneAborted = true;} if (toneAborted && currentButtonState == HIGH) {toneAborted = false;} }