Как использовать IRsend со строкой или преобразовать символ из serial в uint32_t?
Я пытаюсь управлять своим arduino с помощью raspberry pi с помощью python вместо C ++ (чего я не знаю). Я нашел код, чтобы взять строку из serial и распечатать ее, но вместо этого я хотел бы использовать IRsend для использования кода. К сожалению, я получаю сообщение об ошибке недопустимого преобразования из 'char *' в 'uint32_t {он же long unsigned int}' [-fpermissive]. Я знаю, что это, должно быть, невероятно глупый вопрос, но есть ли функция int() для uint32_t для arduino C ++? что я мог бы установить blah=uint32_t(buf), а затем использовать мой irsend.sendNEC(buf, 32)? Если это не слишком очевидно, я не знаю C ++, и мой python не очень хорош.
#include <IRremote.h>
char buf[80];
int readline(int readch, char *buffer, int len) {
static int pos = 0;
int rpos;
if (readch > 0) {
switch (readch) {
case '\r': // Игнорировать CR
break;
case '\n': // Возврат в новую строку
rpos = pos;
pos = 0; // Сбросить указатель положения, готовый к следующему разу
return rpos;
default:
if (pos < len-1) {
buffer[pos++] = readch;
buffer[pos] = 0;
}
}
}
return 0;
}
void setup() {
Serial.begin(115200);
}
IRsend irsend;
void loop() {
if (readline(Serial.read(), buf, 80) > 0) {
Serial.print("You entered: >");
Serial.print(buf);
Serial.println("<");
irsend.sendNEC(buf, 32);
}
}
Ошибка:
/home/pi/Desktop/sendIRfromserial2addingir/sendIRfromserial2addingir.ino: 39:27: warning: invalid conversion from 'char*' to 'uint32_t {aka long unsigned int}' [-fpermissive]
irsend.sendNEC(buf, 32);
^
В файле, включенном из
/home/pi/Desktop/sendIRfromserial2addingir/sendIRfromserial2addingir.ino:1:0:
/home/pi/Arduino/libraries/IRremote/src/IRremote.h:444:10: note: initializing argument 1 of 'void IRsend::sendNEC(uint32_t, uint8_t, bool)'
void sendNEC(uint32_t data, uint8_t nbits, bool repeat = false);
^~~~~~~`
@Johnny Derpp, 👍0
1 ответ
Лучший ответ:
Вместо того , чтобы
irsend.sendNEC(buf, 32);
приведите его к типу int32 без знака:
irsend.sendNEC((uint32_t) buf, 32);
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
- Как работать с аналоговыми контактами в цикле?
- Какие есть другие IDE для Arduino?
- Как использовать переменные и функции в нескольких файлах .ino
- Разница между void setup() и void setup(void)
- Будет ли .ino-скетч ардуино компилироваться непосредственно на GCC-AVR?
Это работает! Большое вам спасибо! Печально, сколько времени я потратил на поиски ответа. Я думаю, что это слишком простой вопрос, чтобы его задавали раньше., @Johnny Derpp
Может быть, но это нормально... Добро пожаловать в любом случае, в следующий раз также используйте ctrl-k для выравнивания вашего кода, и я советую прочитать книгу о C / C ++, это очень поможет вам в использовании Arduino. Удачи вам в вашем проекте., @Michel Keijzers