Skocz do zawartości

Przełaczanie stanów przyciskami


bardgang

Pomocna odpowiedź

Cześć, chciałem z arduino wybudować komputer jednak natrafiłem na pewien problem a mianowicie program miał działać tak:

jeśli naciśniesz przycisk 1 niech wykona się jakaś czynność, jeśli naciśniesz przycisk 2 niech także wykona się jakaś czynność

Lecz nie do końca tak to działa ponieważ żeby wykonała się czynność przypisana do przycisku 2 trzeba najpierw nacisnąć przycisk 1

a to nie to co chcę osiągnąć. Chcę by guziki były niezależne od siebie i żeby nie trzeba było naciskać ich po kolei by wykonała się czynność.

A to mój kod:

#include <Wire.h>   // standardowa biblioteka Arduino
#include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27
#include <Keypad.h> //biblioteka od klawiatury
#define klawiatura (5,4,3,2) && (6,7,8,9) && (28,26,24,22) && (30,32,34,36)
#define reset (38)
#define F1 (40)                                         
#define F2 (42)
byte k=0;                                            //PROBLEM
byte x=0;                                       //Z GUZIKAMI NA 
const byte ROWS1 = 4; // ile wierszy          //SAMYM DOLE
const byte COLS1 = 4; //ile kolumn

const byte ROWS2 = 4; // ile wierszy
const byte COLS2 = 4; //ile kolumn
 
byte rowPins1[ROWS1] = {5, 4, 3, 2}; //piny wierszy
byte colPins1[COLS1] = {6, 7, 8, 9}; //piny kolum

byte rowPins2[ROWS2] = {28, 26, 24, 22}; //piny wierszy
byte colPins2[COLS2] = {30, 32, 34, 36}; //piny kolum7
 
 
char keys1[ROWS1][COLS1] = { //mapowanie klawiatury
  {'a','b','c',' '},
  {'d','e','f','.'},
  {'g','h','i','{'},
  {'j','k','l',','},
};
char keys2[ROWS2][COLS2] = { //mapowanie klawiatury
  {'m','n','o','/'},
  {'p','r','s',' '},
  {'t','u','w',' '},
  {'y','z','x',' '},
};


 
Keypad klawiatura1 = Keypad( makeKeymap(keys1), rowPins1, colPins1, ROWS1, COLS1 ); //inicjalizacja klawiatury
Keypad klawiatura2 = Keypad( makeKeymap(keys2), rowPins2, colPins2, ROWS2, COLS2 ); //inicjalizacja klawiatury 

void setup(){

  pinMode(44,OUTPUT);
  pinMode(40,INPUT_PULLUP);
  pinMode(38,INPUT_PULLUP);
  digitalWrite(44,LOW);



  Serial.begin(9600);
    lcd.begin(20,4);   // Inicjalizacja LCD 20x4
      lcd.backlight(); // zalaczenie podwietl'B'enia
      lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna) 
      lcd.print("users:/bardgang >");
}
void loop(){
    char klawisz1 = klawiatura1.getKey();
     char klawisz2 = klawiatura2.getKey();
if(klawisz1){
    Serial.print(klawisz1);
      lcd.print(klawisz1);

            if (klawisz1 == '{') {
           lcd.setCursor (0,1);
          
              lcd.print (";>");
            }
                 if (klawisz1 == ',') {
           lcd.setCursor (0,2);
              lcd.print (";>");

                 }
 
}
 if (klawisz1,2){                                                                                                                                                    
 if (k==0 &&klawisz1 == 'c') { 
  k++;
 } else if (k==1 && klawisz1 == 'l') {
  k++;
  }else if (k==2 && klawisz1 == 'e') { 
  k++;
  }else if(k==3 && klawisz1 =='a'){
  k++;
  }else if(k==4 && klawisz2 =='r'){
   
 k=0;      
lcd.clear();
lcd.print("users:/bardgang >");  
}
}
if(klawisz2){
    Serial.print(klawisz2);
      lcd.print(klawisz2);}            

 if (klawisz1,2){                                                                                                                                                    
 if (k==0 &&klawisz2 == 'r') { 
  k++;
 } else if (k==1 && klawisz1 == 'e') {
  k++;
  }else if (k==2 && klawisz2 == 's') { 
  k++;
  }else if(k==3 && klawisz1 =='e'){
  k++;
  }else if(k==4 && klawisz2 =='t'){ 
 k=0; 
 lcd.clear();
 lcd.print("dlugi reset"); 
 lcd.setCursor (0,1);
 lcd.print("czy napewno?");
 lcd.setCursor (0,2);
 lcd.print("F1=tak F2=nie");
 delay(1000);
while (digitalRead(40)==HIGH) {}
digitalWrite (44, HIGH);
lcd.clear();
lcd.setCursor (0,1);
lcd.print("rozpoczynanie resetu");
lcd.setCursor(8,2);
lcd.print(".");
delay(100);
lcd.setCursor(9,2);
lcd.print(".");
delay(200);
lcd.setCursor(10,2);
lcd.print(".");
delay(400);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("resetowanie");
delay(100);
lcd.setCursor(12,1);
lcd.print(".");
delay(200);
lcd.setCursor(13,1);
lcd.print(".");
delay("100");
lcd.setCursor(14,1);
lcd.print(".");
delay(300);
lcd.setCursor(6,2);
lcd.print("-");
delay(200);
lcd.setCursor(7,2);
lcd.print("-");
delay(500);
lcd.setCursor(8,2);
lcd.print("-");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("resetowanie");
delay(100);
lcd.setCursor(12,1);
lcd.print(".");
delay(200);
lcd.setCursor(13,1);
lcd.print(".");
delay(400);
lcd.setCursor(14,1);
lcd.print(".");
delay(100);
lcd.setCursor(6,2);
lcd.print("0");
delay(100);
lcd.setCursor(6,2);
lcd.print("1");
delay(100);
lcd.setCursor(6,2);
lcd.print("4");
delay(200);
lcd.setCursor(6,2);
lcd.print("15");
delay(100);
lcd.setCursor(6,2);
lcd.print("23");
delay(400);
lcd.setCursor(6,2);
lcd.print("87");
delay(700);
lcd.setCursor(6,2);
lcd.print("98");
delay(100);
lcd.setCursor(6,2);
lcd.print("99");
delay(900);
lcd.setCursor(6,2);
lcd.print("100");
delay(200);
lcd.setCursor(3,3);
lcd.print("pomyslnie zakonczono");
lcd.clear();
lcd.setCursor(0,0);
delay(400);
lcd.print("users:/bardgang >"); 
  }
 }

 if (klawisz1,2){                                                                                                                                                    
 if (x==0 &&klawisz1 == 'g') { 
  x++;
 } else if (x==1 && klawisz1 == 'a') {
  x++;
  }else if (x==2 && klawisz2 == 'm') { 
  x++;
  }else if(x==3 && klawisz1 =='e'){
 x=0; 
 lcd.clear();
delay(1000);// I TU SIĘ ZACZYNA PROBLEM Z GUZIKAMI
     while (digitalRead(40)==HIGH){}
        lcd.print("elo elo");

        while (digitalRead(38)==HIGH){}
        lcd.print("dziala");
        


        
  }
}
}

 

Edytowano przez bardgang
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.