#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 при загрузке