#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
const int rgbPinR = 3;
const int rgbPinG = 5;
const int rgbPinB = 6;
const int buzzerPin = 4;
int currentDistance = 0;
int stepsMade = 0;
String systemState = "READY";
void setup() {
myStepper.setSpeed(60);
Serial.begin(9600);
pinMode(rgbPinR, OUTPUT);
pinMode(rgbPinG, OUTPUT);
pinMode(rgbPinB, OUTPUT);
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2);
lcd.backlight();
// Начальное состояние
digitalWrite(rgbPinG, HIGH);
digitalWrite(rgbPinR, LOW);
digitalWrite(rgbPinB, LOW);
updateDisplay();
}
void loop() {
systemState = "MOVING";
updateDisplay();
myStepper.step(stepsPerRevolution);
stepsMade += stepsPerRevolution;
currentDistance += 10;
delay(1000);
tone(buzzerPin, 1000);
delay(500);
noTone(buzzerPin);
digitalWrite(rgbPinG, LOW);
digitalWrite(rgbPinR, HIGH);
delay(1000);
digitalWrite(rgbPinR, LOW);
digitalWrite(rgbPinB, HIGH);
delay(1000);
digitalWrite(rgbPinB, LOW);
digitalWrite(rgbPinG, HIGH);
systemState = "READY";
updateDisplay();
}
void updateDisplay() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Dist: ");
lcd.print(currentDistance);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Steps: ");
lcd.print(stepsMade);
lcd.setCursor(10, 1);
lcd.print(systemState);
}