обороты моторов
- Войдите на сайт для отправки комментариев
Пт, 17/04/2015 - 17:43
Здраствуйте. Подскажите пожалуйста, хотел что бы плавно набирались обороты моторов а и в итоге при получении команды работает только одна сторона.Спасибо.
001
#include <CyberLib.h> // Подключаем библиотеку
002
#include <Servo.h> // Подключаем библиотеку сервоприводов
003
004
Servo myservo1;
005
Servo myservo2;
006
007
int i;
008
int IN1 = 4;
009
int IN2 = 5;
010
int IN3 = 7;
011
int IN4 = 6;
012
int ENA = 3;
013
int ENB = 9;
014
015
uint8_t inByte;
016
017
void setup()
018
{
019
myservo1.attach(10); // Подключение сервоприводов к порту
020
myservo2.attach(12); // Подключение сервоприводов к порту
021
init; // Инициализация портов
022
pinMode (ENA, OUTPUT);
023
pinMode (IN1, OUTPUT);
024
pinMode (IN2, OUTPUT);
025
pinMode (ENB, OUTPUT);
026
pinMode (IN4, OUTPUT);
027
pinMode (IN3, OUTPUT);
028
UART_Init(57600);// Инициализация порта для связи с роутером
029
}
030
031
void loop()
032
{
033
034
if (UART_ReadByte(inByte)) //Если что то пришло
035
{
036
switch (inByte) // Смотрим какая команда пришла
037
{
038
case 'x': // Остоновка робота
039
analogWrite(ENA, 0);
040
analogWrite(ENB, 0);
041
042
break;
043
044
case 'S': // Движение вперед
045
digitalWrite (IN2, HIGH);
046
digitalWrite (IN1, LOW);
047
digitalWrite (IN4, HIGH);
048
digitalWrite (IN3, LOW);
049
for (i = 20; i <= 180; ++i)
050
{
051
analogWrite(ENA, i);
052
analogWrite(ENB, i);
053
delay(30);
054
}
055
break;
056
057
case 'D': // Поворот влево
058
digitalWrite (IN1, HIGH);
059
digitalWrite (IN2, LOW);
060
digitalWrite (IN3, LOW);
061
digitalWrite (IN4, HIGH);
062
for (i = 20; i <= 180; ++i)
063
{
064
analogWrite(ENA, i);
065
analogWrite(ENB, i);
066
delay(30);
067
}
068
break;
069
070
case 'A': // Поворот вправо
071
digitalWrite (IN1, LOW);
072
digitalWrite (IN2, HIGH);
073
digitalWrite (IN3, HIGH);
074
digitalWrite (IN4, LOW);
075
for (i = 20; i <= 180; ++i)
076
{
077
analogWrite(ENA, i);
078
analogWrite(ENB, i);
079
delay(30);
080
}
081
break;
082
083
case 'W': // Движение назад
084
digitalWrite (IN1, HIGH);
085
digitalWrite (IN2, LOW);
086
digitalWrite (IN3, HIGH);
087
digitalWrite (IN4, LOW);
088
for (i = 20; i <= 180; ++i)
089
{
090
analogWrite(ENA, i);
091
analogWrite(ENB, i);
092
delay(30);
093
}
094
break;
095
096
case 'U': // Серво поднимается
097
myservo1.write(i -= 10);
098
break;
099
100
case 'J': // Серво опускается
101
myservo1.write(i += 10);
102
break;
103
104
case 'H': // Серво поворачивается влево
105
myservo2.write(i += 10);
106
break;
107
108
case 'K': // Серво поворачивается вправо
109
myservo2.write(i -= 10);
110
break;
111
112
}
113
}
114
}
все, разобрался :)
ну так поделитесь рабочим кодом и коментариями к нему, если не жалко конечно.. :)