• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterownik RGB
#3
Jak nie znasz lepszego podejścia do przycisków niż delay to poznaj bibliotekę bounce2: https://github.com/thomasfredericks/Bounce2 , poznaj millis w kursie na Forbot (nie zrozumiesz jak nie przejdziesz całego kursu, nawet tych elementów, które pozornie nie są Ci teraz potrzebne, bo każdy odsłania nieco niezbędnej teorii):  https://forbot.pl/blog/kursy.
Wciśnięcie przycisku trawa kilka ms, sprawdzenie i wykonanie poleceń kilka us. Może to zrobić tysiące razy przy jednym maźnięciu paluchem po przycisku. I żeby tego uniknąć używanie delay jest jak włożenie patyka w szprychy - jest fe. Bez zrozumienia kursu i poznania bibliotek będziesz wymyślał  koło na nowo kręcąc się w kółko.
Można też zrobić tak, że po pierwszym wykryciu wciśnięcia przycisku wszystkie inne są ignorowane, choć program pracuje bez blokowania pętli (przykład z millis()):
Kod:
const int buzzer=13;
const int button=2;
boolean stanbuzzera=0;

void setup() {
// put your setup code here, to run once:
pinMode(buzzer,OUTPUT);
pinMode(button,INPUT_PULLUP);

}

void loop() {
// put your main code here, to run repeatedly:
if(!digitalRead(2)||stanbuzzera)  dzwiek(500,10,buzzer);
 


}

void dzwiek(uint16_t dlugosc, uint16_t pikniec, uint16_t pin) //(dlugosc piku, ile pikniec, na ktory pin)
{
static uint16_t aktualnyPik=0;
static boolean stanpoprzedni=0;
static uint32_t lasttime=0;
uint32_t currenttime=millis();
// na razie zakladam 5 pikniec co 1000ms
if(currenttime-lasttime>=(uint32_t)dlugosc)
{
lasttime=currenttime;
if( aktualnyPik++ <(pikniec*2))//mnozymy *2 by pikniec bylo 10, nie zmian stanu
{
  digitalWrite(pin,!digitalRead(pin));
  stanbuzzera=1;
}
else
{
 aktualnyPik=0;
 stanbuzzera=0;
}

}

}
Chyba że użyjesz gdzie delay, to przestanie działać.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
Sterownik RGB - przez HeksoN - 09-12-2018, 08:03
RE: Sterownik RGB - przez es2 - 09-12-2018, 13:13
RE: Sterownik RGB - przez kaczakat - 09-12-2018, 16:37

Skocz do:


Przeglądający: 1 gości