1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
//********************************************************************
/*
Следующий эксперимент. Проверяем работу электронных компонентов робота.
Робот движется вперед, назад, влево, вправо с изменением скорости
*/
// По схеме определяем, к каким пинам подключен драйвер моторов
#define ML_IN 26 //пин, отвечающий за направление вращения левого мотора
#define ML_EN 25 //пин, отвечающий за скорость вращения. ШИМ
#define MR_IN 33 //направления вращения правого мотора
#define MR_EN 32 //скорость вращения правого мотора
void setup()
{
/* В ESP32 для задания параметров ШИМ необходимо предварительно задать
Номер канала ШИМ, частоту и разрешение.
Эти параметры мы устанавливаем в следующие функции.
ledcSetup(channel, frequency, resolution)
ledcAttachPin(gpio, channel)
0 - номер канала
1200 частота
8 - разрешение. Значение 8 позволяет нам задать значение ШИМ в пределах 0-255
*/
pinMode(ML_IN,OUTPUT); //устанавливаем пин направления как OUTPUT
ledcSetup(0, 1200, 8); //Задаем параметры для первого канала ШИМ
ledcAttachPin(25, 0); //пин 25 подключен к первому ШИМ каналу.
pinMode(MR_IN,OUTPUT); // устанавливаем пин направления как OUTPUT
ledcSetup(1, 1200, 8); //Задаем параметры для первого канала ШИМ
ledcAttachPin(32, 1); //пин 32 подключен ко второму ШИМ каналу.
}
void loop()
{
//движение вперед
digitalWrite(ML_IN,HIGH);
ledcWrite(0, 255); // Первый канал. Значение 255 ШИМ
digitalWrite(MR_IN, HIGH);
ledcWrite(1, 255); // Второй канал. Значение 255 ШИМ delay(2000);
//движение назад
digitalWrite(ML_IN,LOW);
ledcWrite(0, 90);
digitalWrite(MR_IN,LOW); //set control pins of the right motor to HIGH..
ledcWrite(1, 90);
delay(2000);
//движение влево
digitalWrite(ML_IN,LOW);
ledcWrite(0, 100);
digitalWrite(MR_IN,HIGH);
ledcWrite(1, 200);
delay(2000);
//движение вправо
digitalWrite(ML_IN,HIGH);
ledcWrite(0, 200);
digitalWrite(MR_IN,LOW);
ledcWrite(1, 100);
delay(2000);
//Остановка
digitalWrite(ML_IN,LOW);
ledcWrite(0, 0);
digitalWrite(MR_IN,LOW);
ledcWrite(1, 0);
delay(2000);
}
//**************************************************
|