Untitled
unknown
plain_text
a month ago
2.6 kB
4
Indexable
#include <Servo.h> #include <Pitches.h> #define NOTE_G5 784 #define NOTE_F5 698 const int yellowLED = 4; const int redLED = 8; const int greenLED = 12; const int buzzer = 2; const int button = A1; Servo servo_9; const int SERVO_PIN = 11; const int SERVO_MIN_ANGLE = 0; const int SERVO_MAX_ANGLE = 180; int servoAngle = SERVO_MIN_ANGLE; const int RPM = 60; const int SERVO_DELAY = 100; char state = 'w'; long motorStartTime, warningStartTime, buzzerStartTime, lastMotorMoveTime; const int motorHoldTime = 5000; const int warningDelay = 250; const int buzzerDelay = 500; bool redLightOn = false; bool buzzerToneG5 = true; void setup() { Serial.begin(9600); pinMode(buzzer, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(button, INPUT); servo_9.attach(SERVO_PIN); servo_9.write(servoAngle); motorStartTime = millis(); warningStartTime = millis(); buzzerStartTime = millis(); lastMotorMoveTime = millis(); delay(2000); } void loop() { Serial.println(state); if (state == 'w') { noTone(buzzer); digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); if (digitalRead(button) == LOW) { state = 'd'; } } if (state == 'd' || state == 'p' || state == 'u') { if (millis() - warningStartTime >= warningDelay) { redLightOn = !redLightOn; digitalWrite(redLED, redLightOn ? HIGH : LOW); digitalWrite(yellowLED, redLightOn ? LOW : HIGH); digitalWrite(greenLED, LOW); warningStartTime = millis(); } if (millis() - buzzerStartTime >= buzzerDelay) { if (buzzerToneG5) { tone(buzzer, NOTE_G5, 100); } else { tone(buzzer, NOTE_F5, 100); } buzzerToneG5 = !buzzerToneG5; delay(250); noTone(buzzer); buzzerStartTime = millis(); } } if (millis() - lastMotorMoveTime >= SERVO_DELAY) { lastMotorMoveTime = millis(); if (state == 'd') { if (servoAngle < SERVO_MAX_ANGLE) { servoAngle += 6; servo_9.write(servoAngle); } else { state = 'p'; motorStartTime = millis(); } } else if (state == 'p') { if (millis() - motorStartTime >= motorHoldTime) { state = 'u'; } } else if (state == 'u') { if (servoAngle > SERVO_MIN_ANGLE) { servoAngle -= 6; servo_9.write(servoAngle); } else { state = 'w'; } } } }
Editor is loading...
Leave a Comment