У меня это работает на ура, только у меня гусенецы
Код:
const int Motor1Pin1 = 2;
const int Motor1Pin2 = 3;
const int Motor2Pin1 = 5;
const int Motor2Pin2 = 6;
int EN1 = 4;
int EN2 = 10;
char symbol;
enum States
{
WAITING,
READING,
RUNNING,
ERROR
};
States state;
States onWait();
States onRead();
States onRun();
States onError();
//Место объявления ваших переменных
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
void setup()
{
//Место инициализации ваших переменных
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
pinMode(Motor1Pin1, OUTPUT);
pinMode(Motor1Pin2, OUTPUT);
pinMode(Motor2Pin1, OUTPUT);
pinMode(Motor2Pin2, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
switch (state)
{
case WAITING:
state = onWait();
break;
case READING:
state = onRead();
break;
case RUNNING:
state = onRun();
break;
default:
state = onError();
}
}
States onWait()
{
if (Serial.available() > 0)
{
return READING;
}
return WAITING;
}
States onRead()
{
symbol = Serial.read();
return RUNNING;
}
States onRun()
{
switch (symbol)
{
case 'W':
//начало действий при полученном символе 'W'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
digitalWrite(Motor1Pin2, LOW);
digitalWrite(Motor1Pin1, HIGH);
digitalWrite(Motor2Pin2, LOW);
digitalWrite(Motor2Pin1, HIGH);
analogWrite(EN1, 255);
analogWrite(EN2, 255);
break;
case 'T':
//начало действий при полученном символе 'T'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
//digitalWrite(Motor1Pin2, LOW);
//digitalWrite(Motor1Pin1, LOW);
//digitalWrite(Motor2Pin1, LOW);
//digitalWrite(Motor2Pin2, LOW);
analogWrite(EN1, 0);
analogWrite(EN2, 0);
break;
case 'A':
//начало действий при полученном символе 'A'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
digitalWrite(Motor1Pin1, LOW);
digitalWrite(Motor1Pin2, HIGH);
digitalWrite(Motor2Pin2, LOW);
digitalWrite(Motor2Pin1, HIGH);
analogWrite(EN1, 255);
analogWrite(EN2, 255);
break;
case 'S':
//начало действий при полученном символе 'S'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
digitalWrite(Motor1Pin1, LOW);
digitalWrite(Motor1Pin2, HIGH);
digitalWrite(Motor2Pin1, LOW);
digitalWrite(Motor2Pin2, HIGH);
analogWrite(EN1, 255);
analogWrite(EN2, 255);
break;
case 'D':
//начало действий при полученном символе 'D'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
digitalWrite(Motor1Pin2, LOW);
digitalWrite(Motor1Pin1, HIGH);
digitalWrite(Motor2Pin1, LOW);
digitalWrite(Motor2Pin2, HIGH);
analogWrite(EN1, 255);
analogWrite(EN2, 255);
break;
case 'l':
//начало действий при полученном символе 'l'
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
break;
default:
return ERROR;
}
return WAITING;
}
States onError()
{
//Получены неоговоренные символы. Очищаем ввод и продолжаем.
//Здесь можно добавить какие-то действия для этой ситуации.
//...
while (Serial.available())
{
Serial.read();
}
return WAITING;
}