Код (C++): #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; int led = 11; // Номер Pin к которому подключен диод int res =results.value; int brightness =0; // Переменная в которой хранится уровень яркости (От 0 до 254) void setup() { pinMode(led, OUTPUT); // Порт 11 (led) будет работать как Выход. Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if ( irrecv.decode( &results )) { // если данные пришли Serial.println( results.value); // печатаем данные irrecv.resume(); } if (res==16748655) { brightness += 5; } // Делаем проверку, если вход под номером 9 (buttonPlus) имеет состояние 5 В. Увеличиваем значение переменной яркости на 5 единиц. if (res==16754775) { brightness -= 5; } // Делаем проверку, если вход под номером 10 (buttonMinus) имеет состояние 5 В. Уменьшаем значение переменной яркости на 5 единиц. brightness = constrain(brightness, 0, 254); // Эта функция контролирует, что бы переменная brightness не стала больше 254 и меньше 0, если значение вылазит за границу то функция 0 или 254 analogWrite(led, brightness); // Устанавливаем состояние яркости для светодиода } яркость почему-то не изменяется ПОМОГИТЕ ПОЖАЛУЙСТА, скажите что не так. Ошибок не выдаёт.
lol, отредактируйте сообщение - для вставки кода используйте кнопку Код. Из того, что могу увидеть в неформатированном коде - вызов irrecv.resume() должн быть в конце скетча, вместо delay(250)
Попробуйте Код (C++): #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; int led = 11; // Номер Pin к которому подключен диод int brightness =0; // Переменная в которой хранится уровень яркости (От 0 до 254) void setup() { pinMode(led, OUTPUT); // Порт 11 (led) будет работать как Выход. Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if ( irrecv.decode( &results )) { // если данные пришли Serial.println( results.value); // печатаем данные if (results.value==16748655) { brightness += 5;} // Увеличиваем значение переменной яркости на 5 единиц. if (results.value==16754775) { brightness -= 5;} // Уменьшаем значение переменной яркости на 5 единиц. brightness = constrain(brightness, 0, 254); // Эта функция контролирует, что бы переменная brightness не стала больше 254 и меньше 0, если значение вылазит за границу то функция 0 или 254 analogWrite(led, brightness); // Устанавливаем состояние яркости для светодиода irrecv.resume();} //Готовим машину состояний к приему следующего кода }
А так? Код (C++): #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; int led = 11; // Номер Pin к которому подключен диод int brightness =0; // Переменная в которой хранится уровень яркости (От 0 до 254) void setup() { pinMode(led, OUTPUT); // Порт 11 (led) будет работать как Выход. Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if ( irrecv.decode( &results )) { // если данные пришли Serial.println( results.value); // печатаем данные if (results.value==16748655) { brightness += 5;} // Увеличиваем значение переменной яркости на 5 единиц. else if (results.value==16754775) { brightness -= 5;} // Уменьшаем значение переменной яркости на 5 единиц. //brightness = constrain(brightness, 0, 254); //пока без /* Эта функция контролирует, что бы переменная brightness не стала больше 254 и меньше 0, если значение вылазит за границу то функция 0 или 254*/ analogWrite(led, brightness); Serial.println(brightness); // Устанавливаем состояние яркости для светодиода irrecv.resume(); // Готовим машину состояний к приему следующего кода } }
Скетч заливали последний (после редактировния)? К вас в скетче была целочисленная переменная int res =results.value, а должно быть unsigned long value; // Decoded value [max 32-bits] Поэтому не работало.
Еще может быть проблема с контактом. Диод рабочий, воткнут правильно, в бредборде контакта может и не быть из-за ослабляющихся "пружинок"?
IRremote использует таймер который также используется функцией аналогВрайт. либо меняй в библиотеки таймер, либо используй другой выход с PWM