обороты моторов
- Войдите на сайт для отправки комментариев
Пт, 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 }
все, разобрался :)
ну так поделитесь рабочим кодом и коментариями к нему, если не жалко конечно.. :)