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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.