10-11-2018, 20:54
Cześć Wam
Mam układ który po naciśnieciu przycisku ma mi rozjaśniać diodę do maksymalnej wartości i ma na maksie pozostać, po ponownym wciśnieciu przycisku ma się ściemnić do zera i na takiej wartości pozostać. Problem polega na tym że gdy wcisnę przycisk to dioda się rozjaśnia do maksimum i przeskakuje do zera aby ponownie się rozjaśnić (zapętla się), jeżeli nacisnę ponownie przycisk to dioda się ściemnia do zera ale po chwili znowu ma maksymalną wartość i powtarza ściemnienie i tak bez końca, a mi chodzi o podtrzymanie minimum lub maksimum zależnie od tego czy przycisk bistabilny jest wciśnięty czy nie.
Co mogę zrobić aby osiągnąć chciany efekt?
Dziękuje i pozdrawiam.
Mam układ który po naciśnieciu przycisku ma mi rozjaśniać diodę do maksymalnej wartości i ma na maksie pozostać, po ponownym wciśnieciu przycisku ma się ściemnić do zera i na takiej wartości pozostać. Problem polega na tym że gdy wcisnę przycisk to dioda się rozjaśnia do maksimum i przeskakuje do zera aby ponownie się rozjaśnić (zapętla się), jeżeli nacisnę ponownie przycisk to dioda się ściemnia do zera ale po chwili znowu ma maksymalną wartość i powtarza ściemnienie i tak bez końca, a mi chodzi o podtrzymanie minimum lub maksimum zależnie od tego czy przycisk bistabilny jest wciśnięty czy nie.
Co mogę zrobić aby osiągnąć chciany efekt?
Dziękuje i pozdrawiam.
Kod:
int led = 9; // do ktorego pinu pwm podlaczona jest dioda
int jasnosc = 0; // wartosc poczatkowa jasnosci
int wypelnienie = 5; // co ile punktow zwieksza sie wypelnienie
int swieci = 255; //lampka swieci maksymalnym swiatlem
int stanPrzycisku = 0;
void setup() {
// pin 9 diody jako wyjscie
pinMode(led, OUTPUT);
pinMode(2, INPUT_PULLUP);
}
void loop() {
stanPrzycisku = digitalRead(2);
if (stanPrzycisku == LOW) { //jesli stan przycisku jest wysoki to
analogWrite(led, jasnosc); // wejscie pwm jest deklarowane na pin leda o okreslonej jasnosci rownej 0
jasnosc = jasnosc + wypelnienie; //jasnosc jest zwiekszana o okreslona zmienna
}
else { //jesli warunek nie jest spelniony to:
analogWrite(led, jasnosc); // wejscie pwm deklarowane na pin led o jasnosci rownej 0
jasnosc = jasnosc - wypelnienie; //zmniejszenie jasnosci o zadana zmienna
}
delay(100); //odstep 100 ms aby byl widoczny efekt pwm
}