Arduino if утверждение всегда верно

Я создаю программу для моего мега Arduino с моторным щитом L293D и модулем Bluetooth на контакте rx для моего автомобильного проекта arduino rc.

    #include <AFMotor.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10,11); // RX, TX

AF_DCMotor motor1(3); 
AF_DCMotor motor2(4); 

char intra = '0';
void setup()  
{
  // set the data rate for the SoftwareSerial port
  motor1.setSpeed(200);
  mySerial.begin(9600);
}

void loop() // run over and over
{
    if(mySerial.available()>0) {
      intra = mySerial.read();
      mySerial.write(intra);
    }
   if(intra == '1'){
    up();
    }

}

void up(){

  motor1.run(FORWARD);

}

Таким образом, проблема в основном заключается в том, что оператор if выполняется, даже если переменная "intra = 0". Таким образом, в результате двигатель на определенном порту всегда вращается.

Кроме того, rx1,tx1 или rx2,tx2 или rx3,tx3 ни один из них не отвечает, когда я использую

Serial1.begin(9600);
Serial1.read();

или так далее.... он все еще читает из rx0,tx0, т.е. выводов 1 и 0.

1 ответ

Ваш код имеет строку (в оригинальном вопросе до того, как он был изменен)

if(intra = 1) {

Это всегда займет истинную ветвь. Эту ошибку легко упустить из-за проблемы с кодом C. Правильное выражение, которое вы хотели:

if(intra == 1) {

Обратите внимание на два знака равенства. Один знак равенства - это присвоение. Два знака равенства - это тест на равенство.

Простой способ предотвратить этот трудно видимый сбой состоит в том, чтобы привыкнуть печатать так:

if(1 == intra) {

Если один день по ошибке вы вводите:

if(1 = intra) {

вы получите ошибку компилятора.

Второй метод обнаружения этого типа ошибки - включить предупреждения компилятора. Выберите пункт меню Файл> Настройки. В диалоге о середине внизу есть выпадающий список "Предупреждения компилятора". Выберите все".

Компилятор предупредит вас об этой строке:

_yourfilename_.ino:41:11: warning: suggest parentheses around assignment 
used as truth value [-Wparentheses]
if(intra = 1) {
Другие вопросы по тегам