Написал скрипт для зажигания лампочки с пульта. Код (Text): #include <IRremote.h> #define RIGHT_IR FFC23D; #define LEFT_IR FF02FD; int RIGHT = 47; int LEFT = 46; int ir_code = 0; int RECV_PIN = 44; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { pinMode (RIGHT, OUTPUT); pinMode (LEFT, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { ir_code = results.value; if (ir_code == RIGHT_IR) { digitalWrite(RIGHT, HIGH); } else { digitalWrite(RIGHT, LOW); } } } При компиляции выдаёт: sketch_jan24a.ino: In function 'void loop()': sketch_jan24a:27: error: 'FFC23D' was not declared in this scope sketch_jan24a:27: error: expected `)' before ';' token sketch_jan24a:27: error: expected primary-expression before ')' token sketch_jan24a:27: error: expected `;' before ')' token sketch_jan24a:31: error: expected `}' before 'else' sketch_jan24a.ino: At global scope: sketch_jan24a:36: error: expected declaration before '}' token Где ошибся, и что поменять на что?
почитайте про типы данных тут: http://arduino.cc/en/Reference/HomePage int (integer) - это целое число от -32,768 до 32,767. вы пытаетесь его сравнивать с FFC23D - предположу, что это тоже число, но в шестнадцатиричной системе счисления. надо это как-то причесать
Компилятор в процессе сборки у вас просто подставляет в код вместо RIGHT_IR набор символов FFC23D В итоге для компилятора ваше условие: if (ir_code == RIGHT_IR) Выглядит как если бы вы его написали так: if (ir_code == FFC23D) И он рассматривает FFC23D как переменную которая разумеется не определена о чем он вам и говорит: sketch_jan24a:27: error: 'FFC23D' was not declared in this scope Я не знаком с библиотекой ИК, так что если честно не знаю что это за магические символы FFC23D, если это шестнадцатеричное число тогда записать надо было так: #define RIGHT_IR 0xFFC23D #define LEFT_IR 0xFF02FD
Первая ошибка исправлена. Теперь sketch_jan25a.ino: In function 'void loop()': sketch_jan25a:27: error: expected `)' before ';' token sketch_jan25a:27: error: expected primary-expression before ')' token sketch_jan25a:27: error: expected `;' before ')' token sketch_jan25a:31: error: expected `}' before 'else' sketch_jan25a.ino: At global scope: sketch_jan25a:36: error: expected declaration before '}' token Ставил, где только можно скобки, точки ничего. Можно ли отредактировать код?
Если я правильно подсчитал строки в коде (в выдаче есть номер строки с ошибкой), то в 27-й строке мешается символ "точка с запятой". Отсюда вопрос на засыпку. В определениях #define точки с запятой в конце 3-й и 4-й строк остались? Если да, то их надо убрать, поскольку они также подставляются вместе с константой вместо заданных имен.
Отлично! Ошибок нет, но лампочка не хочет гореть.Светодиод минусом подключен к минуcу, а плюсом к пину 47 через резистор, в чём проблема?
надо ещё добавить irrecv.resume(); вот так: void loop() { if (irrecv.decode(&results)) { ... irrecv.resume(); // Receive the next value } } у меня встречный вопрос к сообществу. irsend по умолчанию шлёт всё на D13, хотя во вводной инфе написано, что должен слать на D3 (у меня Yun, если что). как явно указать пин, на который слать?
Код (Text): [quote="swell{d}, post: 18966, member: 3879"]надо ещё добавить irrecv.resume(); вот так: void loop() { if (irrecv.decode(&results)) { ... irrecv.resume(); // Receive the next value } } у меня встречный вопрос к сообществу. irsend по умолчанию шлёт всё на D13, хотя во вводной инфе написано, что должен слать на D3 (у меня Yun, если что). как явно указать пин, на который слать?[/quote] #include <IRremote.h> #define RIGHT_IR 0xFFC23D #define LEFT_IR 0xFF02FD int RIGHT = 47; int LEFT = 46; int ir_code = 0; int RECV_PIN = 44; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { pinMode (RIGHT, OUTPUT); pinMode (LEFT, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { ir_code = results.value; if (ir_code == RIGHT_IR) { digitalWrite(RIGHT, HIGH); } irrecv.resume(); } } Ничего не происходит. В чём проблема? (else стёр специально, чтобы светодиод не вырубался.) Если нужно, кину фото схемы.