ARDUINO: ISO C запрещает сравнение указателя и целого числа [-fpermissive]

#c #pointers #arduino

Вопрос:

я получаю эту ошибку при запуске этого кода . Код должен запускать серводвигатель, когда я нажимаю кнопку.Он использует последовательные данные от модуля hc05 для запуска серводвигателя .Я не знаю c , поэтому больше ничего не могу добавить.Проблема заключается в переменной t в последовательном.Я думаю, что функция Read ().Спасибо вам за вашу помощь

 #include <Servo.h> 

Servo myservo;  // create servo object to control a servo
int pos = 0;  // variable to store the servo position
char t;
void setup() 
{
  myservo.attach(10);
  Serial.begin(9600);
  // attaches the servo on pin 10 to the servo object
     
}

void loop() 
{
  if(Serial.available()){
    t= Serial.read();
    Serial.println(t);
  }
  if(t=="O"){
    forward();
    delay(750);
    backward();
  }
  // sweeps from 0 degrees to 180 degrees
  //forward();
  //delay(1000);
  //backward();
  //delay(1000);
  // sweeps from 180 degrees to 0 degrees

}


void forward(){
    for(pos = 0; pos <= 90; pos  = 1) 
  {
    myservo.write(pos);
    delay(15);
  }
}
void backward(){
    for(pos = 90; pos>=0; pos-=1)
  {
    myservo.write(pos);
    delay(15);
  }
}
 

Комментарии:

1. «0» — это строковый литерал типа char[2], который распадается на символ*. Символы кодируются как «0» для нулевого символа или '' для нулевого терминатора или просто 0 для нулевого терминатора.

Ответ №1:

t=="O" Это неправильное условие. Двойные кавычки "" используются для представления строк (в стиле c), которые представляют собой последовательности символов, заканчивающиеся нулевым символом. Это массив, и он может быть преобразован в указатель на первый элемент.

Вы должны использовать одинарные кавычки '' для представления символьной константы типа t=='O' .

Комментарии:

1. Я попробую одну секунду

2. @adham здесь, поэтому принято выражать свою благодарность в форме одобрения/принятия ответа, а не комментариев «спасибо».

3. Должен ли я отключать модуль hc05 при загрузке