• 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
Zmiana trybów świecenia pasek RGB.
#6
Możesz przy użyciu przerwania jak i możesz zrobić pętlę z millis() a nie delay i w samej pętli odwołanie do podprogramu sprawdzania stanu przycisku co sam często stosuję .

na przykład
Kod:
long pm;
byte status_przycisk = 0;

void setup() {

  Serial.begin(9600);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(2, INPUT_PULLUP);
}

void loop() {

przycisk();

}

void dioda1(){

for (int x=0; x<255 ; x=x){
  przycisk();
  long cm = millis();
  if (cm - pm > 10){x=x+1;pm=cm;}
  analogWrite(10,x);
  if (x==255)dioda1();
   }
}

void dioda2(){

for (int y=0; y<255 ; y=y){
  przycisk();
  long cm = millis();
  if (cm - pm > 10){y=y+1;pm=cm;}
  analogWrite(11,y);
  if (y==255)dioda2();
   }
}

void dioda3(){

  for (int z=0; z<255 ; z=z){
  przycisk();
  long cm = millis();
  if (cm - pm > 10){z=z+1;pm=cm;}
  analogWrite(9,z);
  if (z==255)dioda3();
   }
}
  
void dioda4(){

  przycisk();
  analogWrite(9,0);
  analogWrite(10,0);
  analogWrite(11,0);
  dioda4();
  
}

void przycisk(){

if (digitalRead(2) == LOW){
  status_przycisk=status_przycisk+1;
  Serial.println(status_przycisk);
  delay(500);
  if ( status_przycisk == 1 )dioda1();
  if ( status_przycisk == 2 )dioda2();
  if ( status_przycisk == 3 )dioda3();
  if ( status_przycisk == 4 )dioda4();
  if ( status_przycisk > 8 )status_przycisk = 0;
}
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Zmiana trybów świecenia pasek RGB. - przez JasQ - 09-12-2016, 11:41

Skocz do:


Przeglądający: 2 gości