Witam!
Mam klawiaturę matrycową 4x4, ledy neopixel i arduino uno, wykombinowałem sobie że za pomocą tej klawiatury będę uruchamiał różne tryby świecenia tych ledów, doszedłem do czegoś takiego, problem leży w tym że gdy uruchomię tryb 2 odtwarza się on cały czas i nie da się go zmienić, moje pytanie brzmi jak zmienić ten kod żeby po wciśnięciu przycisku 1 bądź jakiegokolwiek innego jeśli będzie tam przypisany tryb, ten tryb się zmienił?
P.S Chciałbym tylko nadmienić że dopiero zacząłem się bawić tym arduino i niezbyt też ogarniam programowanie.
#include <Adafruit_NeoPixel.h>
#include <Keypad.h>
#define PIN 13
#define numpixels 4
char buffer[67];
const byte wiersze = 4;
const byte kolumny = 4;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numpixels, PIN, NEO_GRB + NEO_KHZ800);
char klawiatura[wiersze][kolumny] = {
{'1','5','9','C'},
{'2','6','0','D'},
{'3','7','A','#'},
{'4','8','B','*'}
};
int delayval = 50;
byte wierszePiny[wiersze] = {9,8,7,6};
byte kolumnyPiny[kolumny] = {5,4,3,2};
Keypad kpd = Keypad( makeKeymap(klawiatura), wierszePiny, kolumnyPiny, wiersze, kolumny );
void setup() {
Serial.begin(9600);
strip.begin();
strip.setBrightness(88);
strip.show();
kpd.setDebounceTime(150);
}
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(50);
}
}
void loop(){
char przycisk = kpd.getKey();
Serial.println(przycisk);
switch (przycisk){
case '1':
for(int i=0;i<numpixels;i++){
strip.setPixelColor(i, strip.Color(255,255,255));
strip.show();
delay(delayval);
}
break;
case '2':
if (przycisk = 2){
while(przycisk == 2){
colorWipe(strip.Color(255, 70, 0), 50);
colorWipe(strip.Color(102,0,204), 50);
colorWipe(strip.Color(188,90,25), 50);
colorWipe(strip.Color(77,127,99), 50);
colorWipe(strip.Color(0,255,128), 50);
colorWipe(strip.Color(204,102,0), 50);
char przycisk = kpd.getKey();
}
}
break;
}
}