обороты моторов

ilnarv
Offline
Зарегистрирован: 09.02.2015

Здраствуйте. Подскажите пожалуйста, хотел что бы плавно набирались обороты моторов а и в итоге при получении команды работает только одна сторона.Спасибо.

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
	}  

 

ilnarv
Offline
Зарегистрирован: 09.02.2015

все, разобрался :)

 

SLOM
Offline
Зарегистрирован: 06.11.2014

ну так поделитесь рабочим кодом и коментариями к нему, если не жалко конечно.. :)