1904serial joy: различия между версиями
		
		
		
		
		
		Перейти к навигации
		Перейти к поиску
		
				
		
		
	
|  (Новая страница: «<code>   //////////////////////////////////////////////  //     2018.08.08 woronin,  umkiedu@gmail.com  //     Bluetooth Robot UMKI controller K6_mini  //     ч…») | Evgen (обсуждение | вклад)  Нет описания правки | ||
| Строка 1: | Строка 1: | ||
| < | <syntaxhighlight lang="C++"> | ||
|  ////////////////////////////////////////////// | |||
|   //     2018.08.08 woronin,  umkiedu@gmail.com |   //     2018.08.08 woronin,  umkiedu@gmail.com | ||
|   //     Bluetooth Robot UMKI controller K6_mini |   //     Bluetooth Robot UMKI controller K6_mini | ||
| Строка 21: | Строка 21: | ||
|   int pwm = 255; |   int pwm = 255; | ||
|   int speaker = 6; // ножка спикера   |   int speaker = 6; // ножка спикера   | ||
| void setup() { | |||
|    BTSerial.begin(9600); // инициализируем  порт блютус |    BTSerial.begin(9600); // инициализируем  порт блютус | ||
|    Serial.begin(9600);   // инициализируем  порт сериал - шнур USB |    Serial.begin(9600);   // инициализируем  порт сериал - шнур USB | ||
| } | |||
| void loop() // выполняем циклически опрос порта и отправляем все байты с блютуса в шнур | |||
| { | |||
|    int inByte[25], i, count, i4; //i - это элемент массива команды из 7 байт |    int inByte[25], i, count, i4; //i - это элемент массива команды из 7 байт | ||
|    count = BTSerial.available(); |    count = BTSerial.available(); | ||
| Строка 82: | Строка 84: | ||
|      go_stop(pwm); |      go_stop(pwm); | ||
|    } |    } | ||
| } // loop конец рабочего цикла | |||
| ////////// подпрограммы ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| void go_forward_x(int pwm) // вперед поехали после нажатой X | |||
| { | |||
|    digitalWrite(motor_l1, LOW ); // вперед левый |    digitalWrite(motor_l1, LOW ); // вперед левый | ||
|    analogWrite(ml_speed, pwm); // скорость |    analogWrite(ml_speed, pwm); // скорость | ||
| Строка 91: | Строка 94: | ||
|    analogWrite(mr_speed, pwm); // скорость |    analogWrite(mr_speed, pwm); // скорость | ||
|    Serial.println("for48"); |    Serial.println("for48"); | ||
| } | |||
| void go_bakward_x(int pwm) // назад поехали после нажатой X | |||
| { | |||
|    digitalWrite(motor_l1, HIGH); // назад левый |    digitalWrite(motor_l1, HIGH); // назад левый | ||
|    analogWrite(ml_speed, pwm); |    analogWrite(ml_speed, pwm); | ||
| Строка 99: | Строка 103: | ||
|    analogWrite(mr_speed, pwm);    |    analogWrite(mr_speed, pwm);    | ||
|    Serial.println("bak60"); |    Serial.println("bak60"); | ||
| } | |||
| void go_left_x(int pwm)  // влево поехали после нажатой X | |||
| { | |||
|    digitalWrite(motor_r1, LOW); // вперед правый |    digitalWrite(motor_r1, LOW); // вперед правый | ||
|    analogWrite(mr_speed, pwm);   |    analogWrite(mr_speed, pwm);   | ||
| Строка 107: | Строка 112: | ||
|    analogWrite(ml_speed, pwm);    |    analogWrite(ml_speed, pwm);    | ||
|    Serial.println("lef52"); |    Serial.println("lef52"); | ||
| } | |||
| void go_right_x(int pwm) // вправо поехали после нажатой X | |||
| { | |||
|    digitalWrite(motor_r1, HIGH); // назад правый |    digitalWrite(motor_r1, HIGH); // назад правый | ||
|    analogWrite(mr_speed, pwm); |    analogWrite(mr_speed, pwm); | ||
| Строка 115: | Строка 121: | ||
|    analogWrite(ml_speed, pwm);     |    analogWrite(ml_speed, pwm);     | ||
|    Serial.println("rig56"); |    Serial.println("rig56"); | ||
| } | |||
| void go_stop(int pwm) // стоп | |||
| { | |||
|    analogWrite(ml_speed, 0); // скорость стоп |    analogWrite(ml_speed, 0); // скорость стоп | ||
|    analogWrite(mr_speed, 0); |    analogWrite(mr_speed, 0); | ||
| } | |||
| </ | |||
| </syntaxhighlight> | |||
| [[Категория:Видео эпизоды УМКИ]] | [[Категория:Видео эпизоды УМКИ]] | ||
| [[Категория:Примеры программирования Arduino]] | |||
Текущая версия от 14:55, 15 ноября 2019
 //////////////////////////////////////////////
 //     2018.08.08 woronin,  umkiedu@gmail.com
 //     Bluetooth Robot UMKI controller K6_mini
 //     четвертый пример- Добавляем подпрограммы с моторами
 //
 //////////////////////////////////////////////
 #include <SoftwareSerial.h>
 SoftwareSerial BTSerial(6, 7); // RX, TX
 int byte_forward[] = {0, 0,   129, 0, 4, 0, 0};
 int byte_bakward[] = {0, 0,   127, 0, 4, 0, 0};
 int byte_left[]    = {0, 129, 0,   0, 4, 0, 0};
 int byte_right[]   = {0, 127, 0,   0, 4, 0, 0};
 int byte_stop[]    = {0, 0,   0,   0, 4, 0, 0};
 int byte_start[]   = {0, 0,   0,   0, 4, 0, 2};
 int press_but = 0;
 int motor_l1 = 4; // направление левый
 int ml_speed = 5; // скорость левый
 int motor_r1 = 2; // направление правый
 int mr_speed = 3; // скорость правый
 int pwm = 255;
 int speaker = 6; // ножка спикера 
void setup() {
  BTSerial.begin(9600); // инициализируем  порт блютус
  Serial.begin(9600);   // инициализируем  порт сериал - шнур USB
}
void loop() // выполняем циклически опрос порта и отправляем все байты с блютуса в шнур
{
  int inByte[25], i, count, i4; //i - это элемент массива команды из 7 байт
  count = BTSerial.available();
  if (count < 7) count = 0;
  else {
    for (i = 0; i < 7; i++) {
      inByte[i] = BTSerial.read();
      delay(10);
      Serial.print(inByte[i], HEX); // вывод в COM порт побайтно в шестнадцатиричной системе
      Serial.print(" "); // ставим пробел между байтами, чтобы удобно было смотреть монитор порта
    }
    Serial.println();
  }
  // начало разбор принятых байт
  if ( (inByte[2] == byte_forward[2]) ) {
    press_but = 48; // нажата кнопка вперед
  }
  else if ((inByte[1] == byte_left[1])) {
    press_but = 52; // нажата кнопка влево
  }
  else if ((inByte[1] == byte_right[1])) {
    press_but = 56; // нажата кнопка вправо
  }
  else if ((inByte[2] == byte_bakward[2])) {
    press_but = 60; // нажата кнопка назад
  }
  else if ((inByte[6] == byte_start[6]) ) {
    press_but = 66; // нажата кнопка старт
  }
  // конец разбор принятых байт
  // обработка нажатия кнопки
  // Разбор кнопок движения +++++++++++++++++++++++++++++++++++
  // Движение вперед
  if ( press_but == 48) {
    go_forward_x(pwm);
  }
  // Движение влево ++++++++++++++++++++++++++++
  if ( press_but == 52) {
    go_left_x(pwm);
  }
  // Движение вправо ++++++++++++++++++++++++++++++
  if ( press_but == 56) {
    go_right_x(pwm);
  }
  // Движение назад +++++++++++++++++++++++++++++++++++++
  if ( press_but == 60) {
    go_bakward_x(pwm);
  }
  // Движение стоп ++++++++++++++++++++++++++++++
  if ( press_but == 65) {
    go_stop(pwm);
  }
  // Движение по кнопке старт, но стоп ++++++++++++++++++++++++++++++
  if ( press_but == 66) {
    go_stop(pwm);
  }
} // loop конец рабочего цикла
////////// подпрограммы ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void go_forward_x(int pwm) // вперед поехали после нажатой X
{
  digitalWrite(motor_l1, LOW ); // вперед левый
  analogWrite(ml_speed, pwm); // скорость
  digitalWrite(motor_r1, LOW); // вперед правый
  analogWrite(mr_speed, pwm); // скорость
  Serial.println("for48");
}
void go_bakward_x(int pwm) // назад поехали после нажатой X
{
  digitalWrite(motor_l1, HIGH); // назад левый
  analogWrite(ml_speed, pwm);
  digitalWrite(motor_r1, HIGH); // назад правый
  analogWrite(mr_speed, pwm);  
  Serial.println("bak60");
}
void go_left_x(int pwm)  // влево поехали после нажатой X
{
  digitalWrite(motor_r1, LOW); // вперед правый
  analogWrite(mr_speed, pwm); 
  digitalWrite(motor_l1, HIGH); // назад левый
  analogWrite(ml_speed, pwm);  
  Serial.println("lef52");
}
void go_right_x(int pwm) // вправо поехали после нажатой X
{
  digitalWrite(motor_r1, HIGH); // назад правый
  analogWrite(mr_speed, pwm);
  digitalWrite(motor_l1, LOW ); // вперед левый
  analogWrite(ml_speed, pwm);   
  Serial.println("rig56");
}
void go_stop(int pwm) // стоп
{
  analogWrite(ml_speed, 0); // скорость стоп
  analogWrite(mr_speed, 0);
}