управление яркостью светодиода двумя кнопками

bek735
Offline
Зарегистрирован: 17.05.2014

Подскажите, пожалуйста, как управлять яркостью светодиода с помощью двух кнопок

Diemon
Offline
Зарегистрирован: 18.11.2011
int redled = 10;    // assign LED to pin 10
  int button2 = 2;    // assign pushbutton 2 to pin 2
  int button3 = 3;    // assign pushbutton 3 to pin 3
  
  
  int button2State = 0;    // variable for reading the pushbuttons
  int button3State = 0;
  int fadered = 0;    // LED set to be off to start
  
 
  void setup () {
    pinMode(button2, INPUT);    //initialize pushbutton pins as input:
    pinMode(button3, INPUT);
  }
      
  void loop() {
     
    int button2State = digitalRead(button2);    //check button states
    int button3State = digitalRead(button3);
    
    if(button2State == HIGH && fadered <=250) { // if button is pressed increase brightness by 5
      fadered = fadered + 5;    // as long as brightness isn't greater then 250
      analogWrite(redled, fadered);    // lights LED at current brightness level
    
    }
        
    if (button3State == HIGH && fadered >=5) {    // if button is pressed decrease brightness by 5
      fadered = fadered - 5;    // as long as brightness isn't less then 5
      analogWrite(redled, fadered);    // lights LED at current brightness level
    
    }
   }

http://forum.arduino.cc/index.php/topic,42998.0.html

 

P.S. вообще разленились...

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Я бы ещё делей добавил хотябы на 100-200 мс

pan-electric
Offline
Зарегистрирован: 15.05.2014

Diemon я залил в мою ардуино уно прогру, но ано не регулирует а просто on-off работает. Можешь подсказать я совсем новичок в этом.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Как уже правильно сказали, нужно после 31 строки добавить задержку, например, delay(200), чтобы не мгновенно менялась яркость, а помедленней. Потом можно подобрать задержку более правильную.

Или еще, тупая математика:

1. Весь диапазон 250 (для простоты)
2. Шаг 5
3. Значит всего изменений яркости будет 250/5=50
4. Если нужно увеличить яркость от 0 до максимума за 2 секунды, нужно выполнить 50/2=25 шагов в секунду.
5. 25 шагов в секунду, это 1/25 = 40мс, вот такую задержку и нужно добавить в конце loop (после 31 строки)
6. Значит добавляем delay(40)
7. Обратная проверка, 40ms * 50 = 2000ms = 2c

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А тут как всегда царить позитивная атмосфера.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Боюсь, что и такого объяснения будет недостаточно. Впрочем, не боюсь, нет так нет

 

pan-electric
Offline
Зарегистрирован: 15.05.2014

спасибо за отклик. я заранее сказал " совсем новичок " . есть большая страсть научиться хоть в малость познать программировать. На заводе где работаю программирую PLC но там совсем по другому IL или LD

pan-electric
Offline
Зарегистрирован: 15.05.2014

Большое спасибо kisoft понял и установил задержку, теперь работает отлично.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Да и без задержки должно было работать, просто нажимаешь кнопку + яркость сразу на макс, нажимаешь - сразу офф.

pan-electric
Offline
Зарегистрирован: 15.05.2014

да именно так работала HWman.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Не, просто надо было очень быстро отпускать кнопку! :)

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Советую Вам разобраться как работает этот код, это самая основа.
https://www.youtube.com/watch?v=bO_jN0Lpz3Q&list=PLfDmj22jP9S759DT250VVz...

pan-electric
Offline
Зарегистрирован: 15.05.2014

ну столько быстро наверно энкодер надо было поставить.

pan-electric
Offline
Зарегистрирован: 15.05.2014

Искрении благодарен вам kisoft и HWman.

pan-electric
Offline
Зарегистрирован: 15.05.2014

Diemon и тебе тоже за изначальную программу

Diemon
Offline
Зарегистрирован: 18.11.2011

, а вы какие PLC программируете? 

Посмотрите: http://habrahabr.ru/post/218377/

pan-electric
Offline
Зарегистрирован: 15.05.2014

Diemon большое спасибо за очень важный совет. Я когда начинал то с SIEMENS И TELEMECHANIQUE но ихняя цена была очень не притягательная и к тому же по характеристике отставали от LSIS или бывшего LG. Так и остановился на LSIS и первый PLC мною установленный уже как 16 лет спустя отважно и без всяких сбоев работает и к тому же не сказал бы хорошей среде. Кто прочтёт пусть не подумает это как реклама или что нибудь в этом роде я просто объяснился.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Здравствуйте, а не подскажите это для какой схемы? Для управления симистором?

bwn
Offline
Зарегистрирован: 25.08.2014

Mestniy96 пишет:

Здравствуйте, а не подскажите это для какой схемы? Для управления симистором?

А где вы там симистор увидели?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

bwn я просто не могу понять чем управляется яркость... Шимом что-ли?

bwn
Offline
Зарегистрирован: 25.08.2014

Им, животворящим.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

bwn Спасибо огромное! Будите в наших краях - с меня шоколадка)))

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Тесть мне нужно плюс диода подключить к 10 ноге ардуино, а минус диода на gnd? и все?

 

bwn
Offline
Зарегистрирован: 25.08.2014

Mestniy96 пишет:

Тесть мне нужно плюс диода подключить к 10 ноге ардуино, а минус диода на gnd? и все?

 

+ Резистор >=220 Ом

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Спасибо огромное...

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

ничего не сработало!(((

Кнопку 2 я плюсом подключил к +5.

                 минусом на землю и во 2-ой пин ардуино.

Кнопку 3 по томуже принцыпу только на 3-й пин.

Светодиод: минус светодиода я соединил резистором с gnd платы.

                  плюс светодиода я подключил к пин 10 на плате ардуино.

Правильно ли я все сделал или где-то касанул?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Кнопка 2 работает как плавное угасание светодиода, а кнопка 3 как вкл/выкл(при  нажатии выключает, при отпускании включает).

bwn
Offline
Зарегистрирован: 25.08.2014

Mestniy96 пишет:

Кнопка 2 работает как плавное угасание светодиода, а кнопка 3 как вкл/выкл(при  нажатии выключает, при отпускании включает).

Вы топик весь читали, задержки поставили? И почитайте, как кнопки правильно подключать "Работа с кнопками ......."

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Задержку после loop поставил, а где эта работа с кнопками?

bwn
Offline
Зарегистрирован: 25.08.2014

Господь с вами, задержки после analogWrite()

Кнопки

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Спасибо за помощь. Лохонулся: забыл вставить подтягивающие ризисторы. А такую вещь можно на галогенка осуществить(1,5 Кватт).

bwn
Offline
Зарегистрирован: 25.08.2014

Mestniy96 пишет:

А такую вещь можно на галогенка осуществить(1,5 Кватт).

А здесь уже симисторы и не ШИМ.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Я просто сообразить не могу, по какому принцыпу на симистор подается определенное количество импульсов, т.е., как эти импулсы расчитать и вписать в ардуинчик в правильном порядке.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Как это програмно должно выглядеть? Интернет облазил нашел только бинарник по этой теме и больше ничего.

bwn
Offline
Зарегистрирован: 25.08.2014

Наберите "Диммер на Ардуино", сайт что то вроде "ciber-place" там есть и схема и библиотека.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Ок нашел. Спасибо большое. Простите за потраченое Вами время на мои глупые вопросы. Успехов...