Независимый FADE 2х диодов
- Войдите на сайт для отправки комментариев
Пнд, 25/03/2019 - 21:38
Задача упрощенно- 2 кнопки, 2 светодиода.
При нажатии на кнопку светодиод плавно разграется до максимума, и горит пока нажата кнопка, при отпускании так же плавно гаснет.
Вторая кнопка и светодиод управляется так же.
По отдельности каждая кнопка/диод работает корректно.
А вот при изменении яркости одним диодом второй не реагирует, пока не достигнет макимальных значений яркости (0 или 255). Если первый горит на максимум/выключен - второй отрабатывает как надо.
Пытаюсь добиться того, чтобы второй отрабатывал корретно и независимо.
Спасибо.
#include <Button.h>
Button button1(3); // Connect your button between pin 2 and GND
Button button2(4); // Connect your button between pin 3 and GND
boolean butt_flag1 = 0;
boolean butt_flag2 = 0;
boolean butt1;
boolean butt2;
unsigned long last_press1;
unsigned long last_press2;
unsigned long f1;
unsigned long f11;
unsigned long f2;
unsigned long f22;
int led1 = 6;
int led2 = 10;
void setup() {
button1.begin();
button2.begin();
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
if (button1.pressed()) {
Serial.println("Button 1 pressed");
for (int i=0; i <= 255;){
if(millis() - f1 > 30){
f1 = millis();
analogWrite(led1, i);
i=i+5;
}
}
}
if (button1.released()){
Serial.println("Button 1 released");
for (int i=255; i >=0;){
if(millis() - f11 > 10){
f11 = millis();
analogWrite(led1, i);
i=i-5;
}
}
}
if (button2.pressed()){
Serial.println("Button 2 pressed");
for (int i=0; i <= 255;){
if(millis() - f2 > 30){
f2 = millis();
analogWrite(led2, i);
i=i+5;
}
}
last_press2 = millis();
}
if (button2.released()) {
Serial.println("Button 2 released");
for (int i=255; i >=0;){
if(millis() - f22 > 10){
f22 = millis();
analogWrite(led2, i);
i=i-5;
}
}
}}
Почему он должен реагировать?
корректно и независимо переписывать программу полностью, то есть отказ от циклов просто при нажатии кнопок переменные яркости увеличиваются до максимума при отжатых уменьшаются, переменных надо две )))
С божьими лупом и миллисом, повергнем супостатов.)))
С божьими лупом и миллисом, повергнем супостатов.)))
Неправославно это. Надо таймерами крутить да размахивать.
Неправославно это. Надо таймерами крутить да размахивать.
Вай, нэ умэю. Эл.нагрузку в корпус уберу, отлажу и за часики на ИН-1 возьмусь, там твои таймера меня уже в засаде ждут, баюс.))))
а я скоро выкладу проект AudioUIMeter на 1602. Там мне мои таймеры очень памогають.
Ты, за библиотеку? Не, это не спортивно, я их самих, цволочей, выдрессировать хочу. Так что жди, скоро обертки, от вискаса, выклянчивать начну.))))
а я скоро выкладу проект AudioUIMeter на 1602. Там мне мои таймеры очень памогають.
Что измеряешь?
я по аудио всё прикалываюсь. Конкретно этот метер пайдёт в Вега 50-У122
я по аудио всё прикалываюсь. Конкретно этот метер пайдёт в Вега 50-У122
Это я понял. Уровень звука на индикатор выводишь? Я как-то такое на ADS1115 делал, но с адресными светодиодами. Могу подкинуть - может интересное чего найдёшь.
точно!!! есть же ADS1115. Щас закажу. Хотелось бы сделать, канеш, логарифмический, он более правильный для индикатора, да у Ардуины АЦП не того полёта...
Спасибо. получилось вот так оптимизмровать - всё работает.
byte pwm_led1; byte pwm_led2; boolean btn1=0; boolean btn2=0; unsigned long f1; unsigned long f2; const int b1 = 3; //вход кнопки 1 const int b2 = 4; //вход кнопки 2 const int l1 = 6; // выход 1 диода const int l2 = 10; //выход 2 диода void setup() { pinMode(l1, OUTPUT); pinMode(l2, OUTPUT); pinMode(b1, INPUT_PULLUP); pinMode(b2, INPUT_PULLUP); } void loop(){ btn1 = !digitalRead(b1); btn2 = !digitalRead(b2); if(millis()-f1>=3){f1=millis(); if(btn1&&pwm_led1<255){pwm_led1++;} if(!btn1&&pwm_led1>0) {pwm_led1--;} } if(millis()-f2>=3){f2=millis(); if(btn2&&pwm_led2<255){pwm_led2++;} if(!btn2&&pwm_led2>0) {pwm_led2--;} } analogWrite(l1,pwm_led1); analogWrite(l2,pwm_led2); }точно!!! есть же ADS1115. Щас закажу. Хотелось бы сделать, канеш, логарифмический, он более правильный для индикатора, да у Ардуины АЦП не того полёта...
Дык табличные преобразования наше всё.