0 голосов
void loop()
{

  if (Serial.available() > 0) { // если порт доступен
    incoming_symbol = Serial.read(); // считываем с порта данные
    if (incoming_symbol == '1') {
     digitalWrite(13, HIGH); //зажигаем светодиод индицирующий первую передачу
     digitalWrite(12, LOW);
     digitalWrite(11, LOW);
     int j = 85;
     int p = 85;
     Serial.println(j);
     Serial.println(p);
      }

.......

  switch(incoming_symbol) {
     case '0': // если приходит "0" стоп
          zero();
          break;
      case '6': // если приходит "6" движимся в право
          six();
          break;
      case '8': // если приходит "8" движимся в лево
          eight();
          break;    
      case '5': // если приходит "5" то движимся вперед
          five();
          break;   

.......

void  five()
  {
//digitalWrite(8, HIGH); // оба вперед
  motorsDrive(j, p);
  delay(100);
  }

.......

// Функция управления моторами
void motorsDrive(int M1Speed, int M2Speed) {
  if (M1Speed > 0) {
    digitalWrite(pinM1Direction, HIGH);
  } else {
    digitalWrite(pinM1Direction, LOW);
  }
 
  if (M2Speed > 0) {
    digitalWrite(pinM2Direction, HIGH);
  } else {
    digitalWrite(pinM2Direction, LOW);
  }
  analogWrite(pinM1Speed, abs(M1Speed));
  analogWrite(pinM2Speed, abs(M2Speed));
}

это часть скеча

если вместо j и p стоят числа то моторчики вращаются с переменными никак не работает.

Подскажите в чем ошибка пожалуйста.
(4 баллов) 2 3
Пожалуйста вставьте код с помощью специальный кнопки <>.

1 Ответ

0 голосов
Попробуйте передать значения в функцию motorsDrive по ссылке. Это конечно костыль и не решает проблем но может помочь.
(6 баллов) 1 2
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...