int sTart = 12;
int sTep = 13;
int redButton = 2;
int greenButton = 4;
int redLed = 5;
int greenLed = 3;
int blueLed = 9;
int yellowLed = 10;
int nApravlenie_OUT = 11;
int nApravlenie = 8;
bool gReen = LOW;
bool rEd = HIGH;
int BLACK = 7;
unsigned long previousMillis = 0;
const long interval = 1000;
bool ledState = LOW;
void setup() {
pinMode(sTart, OUTPUT);
pinMode(sTep, OUTPUT);
pinMode(redButton, INPUT);
pinMode(greenButton, INPUT);
pinMode(redLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(nApravlenie, INPUT);
pinMode(nApravlenie_OUT, OUTPUT);
pinMode(BLACK, INPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (digitalRead(BLACK) == HIGH) {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(sTart, LOW);
digitalWrite(sTep, LOW);
gReen = LOW;
rEd = HIGH;
return;
}
if (digitalRead(nApravlenie) == HIGH) {
digitalWrite(nApravlenie_OUT, HIGH);
digitalWrite(blueLed, LOW);
digitalWrite(yellowLed, HIGH);
}
else {
digitalWrite(nApravlenie_OUT, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(blueLed, HIGH);
}
if (gReen == HIGH) {
if (digitalRead(redButton) == HIGH) {
gReen = LOW;
rEd = HIGH;
digitalWrite(redLed, LOW);
}
else {
digitalWrite(greenLed, LOW);
digitalWrite(sTart, HIGH);
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(redLed, ledState);
}
digitalWrite(sTep, HIGH);
delay(10);
digitalWrite(sTep, LOW);
delay(10);
}
}
if (rEd == HIGH) {
if (digitalRead(greenButton) == HIGH) {
rEd = LOW;
gReen = HIGH;
digitalWrite(greenLed, LOW);
}
else {
digitalWrite(sTart, LOW);
digitalWrite(greenLed, HIGH);
}
}
}
// Условие работы и индикации как в задании №3. Дополнительное
// условие: реализовать аварийный останов работы шагового двигателя используя для
// этого функции драйвера шагового двигателя. В качестве кнопки с фиксацией можно
// использовать переключатель