09-12-2016, 11:41
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
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
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji