Включение/выключение света с регулировкой яркости (Помогите добавить каналы)
- Войдите на сайт для отправки комментариев
Ср, 07/10/2015 - 13:13
Всем доброго времени суток. На просторах инета нашёл скетч включения/выключения света с регулировкй яркости, но он управлялся с пульта. Немного подправил для управления с кнопки. Работает. Теперь нужно сделать несколько каналов, что-бы каждая кнопка, управляла своим светом. Управлять буду светодиодным освещением. Сам пытался, но не получается. Я только начал изучать ардуино. Кое что выходит, но не всё...
Сам код
int ledPin = 10; // Выход ШИМ на диммер
int powerPin = 9; // Вход с кнопки
uint8_t pwmLevel = 255;
boolean pwmStat = false;
boolean pwmInc = true;
uint32_t ms, ms1 = 0;
boolean press_flag = false;
uint16_t press_cnt = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(powerPin, INPUT);
}
void loop()
{
ms = millis();
// Получаем сигнал от кнопки
if (digitalRead(powerPin) == HIGH) {
press_flag = true;
}
if ( ( ms - ms1 ) > 200 || ms < ms1 ) {
// Если нажата клавиша
if ( press_flag ) {
press_cnt++;
// Если лампа включена
if ( pwmStat ) {
// Инвертируем флаг уменьшения/увеличения
if ( press_cnt == 5 ) {
pwmInc = !pwmInc;
}//pres_cnt = 0
// Изменям значение диммера
else if ( press_cnt > 5 ) {
if ( pwmInc ) {
if ( pwmLevel < 239 )pwmLevel += 16;
else pwmLevel = 255;
}//pwmInc
else {
if ( pwmLevel > 50 )pwmLevel -= 16;
else pwmLevel = 34;
}// else pwmInc
}
Serial.print("Mode=");
Serial.print(pwmInc);
Serial.print(" level=");
Serial.print(pwmLevel);
Serial.print(" count=");
Serial.println(press_cnt);
analogWrite(ledPin, pwmLevel);
}
}
else {
// Короткое (менее 1 сек) нажатие клавиши
if ( press_cnt > 0 && press_cnt < 5 ) {
// Включение/отключение лампы
pwmStat = !pwmStat;
if ( pwmStat ) {
digitalWrite(powerPin, HIGH);
analogWrite(ledPin, pwmLevel);
}
else {
analogWrite(ledPin, 0);
digitalWrite(powerPin, LOW);
}
Serial.print("Press=");
Serial.print(pwmStat);
Serial.print(" level=");
Serial.print(pwmLevel);
Serial.print(" count=");
Serial.println(press_cnt);
}
press_cnt = 0;
}
ms1 = ms;
press_flag = false;
}
}
Ещё хочется что-бы одна дополнительная кнопка гасила всё что включено. И что-бы свет включался и выключался плавно.
Но основное что-бы было хотя-бы три канала.
В разделе "Предлагаю работу" нужно начинать с суммы денег.
Вопрос решён. Тему можно закрывать.