int redPin = 13;
int greenPin = 12;
int yellowPin = 11;
int buzzerPin = 8;
int val;
int frequency = map(val, 0, 1023, 3500, 4500);
bool isRed;
void setup() {
pinMode(redPin, OUTPUT), pinMode(greenPin, OUTPUT),
pinMode(yellowPin, OUTPUT);
StateMachine(0);
}
void loop(){}
//машина состояний
void StateMachine(int numberState)
{
//базовое переключение переменных в свиче
switch(numberState)
{
case 0:
LightWorks(redPin);
digitalWrite(yellowPin, HIGH);
break;
case 1:
digitalWrite(yellowPin, HIGH);
delay(750);
digitalWrite(yellowPin, LOW);
if(isRed)
{
isRed = false;
StateMachine(2);
}
else
{
StateMachine(0);
}
break;
case 2:
LightWorks(greenPin);
break;
}
}
void LightWorks(int numberPin)
{
digitalWrite(numberPin, HIGH);
delay(1500);
for(int i = 0; i < 3; i++)
{
tone(buzzerPin, frequency, 300);
digitalWrite(numberPin, LOW);
delay(150);
digitalWrite(numberPin, HIGH);
delay(150);
}
digitalWrite(numberPin, LOW);
if(numberPin == redPin)
{
digitalWrite(yellowPin, HIGH);
isRed = true;
}
StateMachine(1);
}
Светофор база