RGB светодиод

Тема в разделе "Arduino & Shields", создана пользователем rrrrr_meow, 21 май 2018.

  1. rrrrr_meow

    rrrrr_meow Нуб

    Нужна помощь в написании скетча. Схема простая rgb светодиод и одна кнопка. Нажимаем кнопку светодиод начинает переливаться разными цветами, я не могу разобраться, как сделать так, чтобы при отпускании кнопки сохранялся выбранный цвет.
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Флаги?
     
  3. Daniil

    Daniil Гуру

    я бы через while или if делал бы.
    пока/если кнопка нажата перебирать цвета
    кнопка не нажата, ничего не делать
     
    Последнее редактирование: 22 май 2018
  4. ostrov

    ostrov Гуру

    Просто перестает переливаться.
     
  5. rrrrr_meow

    rrrrr_meow Нуб

    допустим через while кнопка нажата происходит смена цвета
    Код (C++):
    void loop() {
        // гасим красный, параллельно разжигаем зеленый
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[0], i/dim );
            analogWrite( rgbPins[1], (255-i)/dim );
            delay(10);
        }
        // гасим зеленый, параллельно разжигаем синий
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[1], i/dim );
            analogWrite( rgbPins[2], (255-i)/dim );
            delay(10);
        }
        // гасим синий, параллельно разжигаем красный
        for(int i=255; i>=0; i--){
            analogWrite( rgbPins[2], i/dim );
            analogWrite( rgbPins[0], (255-i)/dim );
            delay(10);
        }
    но цвет не сохраняется, а происходит цикл и цвет возвращается в первоначальное состояние и как будет выглядеть "кнопка не нажата - ничего не делать"
     
  6. parovoZZ

    parovoZZ Гуру

    Заведи глобальную либо структуру с тремя цветами по байту на каждый цвет. Ну или массив из трех ячеек по байту. И заполняй их данными.
     
  7. Daniil

    Daniil Гуру

    Значит под while не должно быть цикла, цвет должен можно расчитать исходя из предыдущего цвета