помогите со скетчем

Тема в разделе "Флудилка", создана пользователем lol, 19 дек 2018.

  1. lol

    lol Нерд

    Код (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);    // Устанавливаем состояние яркости для светодиода
       
                         
    }












     
    яркость почему-то не изменяется
    ПОМОГИТЕ ПОЖАЛУЙСТА, скажите что не так.
    Ошибок не выдаёт.
     
    Последнее редактирование: 19 дек 2018
  2. ZAZ-965

    ZAZ-965 Гуру

    lol, отредактируйте сообщение - для вставки кода используйте кнопку Код. Из того, что могу увидеть в неформатированном коде - вызов irrecv.resume() должн быть в конце скетча, вместо delay(250)
     
  3. Airbus

    Airbus Радиохулиган Модератор

  4. ZAZ-965

    ZAZ-965 Гуру

    Попробуйте
    Код (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();}  //Готовим машину состояний к приему следующего кода
    }
     
    Последнее редактирование: 19 дек 2018
  5. lol

    lol Нерд

    не работает , ну ладно придётся смириться
     
  6. ZAZ-965

    ZAZ-965 Гуру

    В мониторе порта какие коды отображаются?
     
  7. lol

    lol Нерд

    да то что прописано в коде
     
  8. Airbus

    Airbus Радиохулиган Модератор

    А так?
    Код (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(); // Готовим машину состояний к приему следующего кода
          }
    }
     
  9. ZAZ-965

    ZAZ-965 Гуру

    Скетч заливали последний (после редактировния)? К вас в скетче была целочисленная переменная int res =results.value, а должно быть unsigned long value; // Decoded value [max 32-bits] Поэтому не работало.
     
    Daniil нравится это.
  10. Daniil

    Daniil Гуру

    Еще может быть проблема с контактом.
    Диод рабочий, воткнут правильно, в бредборде контакта может и не быть из-за ослабляющихся "пружинок"?
     
  11. lol

    lol Нерд

    в com порте brightness стало изменяться, но светодиод не включается
     
  12. lol

    lol Нерд

    исключено
     
  13. lol

    lol Нерд

    скетч залил от AIROBUS'а
     
  14. lol

    lol Нерд

    в com порте пишет 16 и всё тормозит
     
  15. ZAZ-965

    ZAZ-965 Гуру

    @lol, попробуйте перенести светодиод на другой пин, например 9 или 10, поддерживающий PWM.
     
    Airbus нравится это.
  16. lol

    lol Нерд

    ОГРОМНОЕ СПАСИБО всё заработало
     
  17. IRremote использует таймер который также используется функцией аналогВрайт.
    либо меняй в библиотеки таймер, либо используй другой выход с PWM