Změna textu po stisku tlačítka

Odpovědět
Silverman
Příspěvky: 4
Registrován: 19 led 2018, 10:26
Reputation: 0

Změna textu po stisku tlačítka

Příspěvek od Silverman » 19 led 2018, 10:41

Dobrý den, chtěl bych poprosit o pomoc. Potřebuji "udělátko", které má 4 tlačítka a po stisku každého z tlačítek se zobrazí jiný text. Např.: tl.1 - Vaše odpověď je ANO, tl.2 - Vaše odpověď je NE atd. - Je možné toto udělat? Používám Arduino UNO a tento display: https://www.aliexpress.com/item/Blue-Di ... 67f5&tpp=1. Předem děkuji!

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Wojta » 19 led 2018, 11:13

Jistě, stačí použít pár knihoven a máte vystaráno (wire a LiquidCrystal)

Ukázka kódu pro práci s displejem je dokonce na té stránce co jste linknul. V popisu produktu. Mimo to se dá najít info o knihovnách na arduino.cc.

Teoreticky je tedy funkce programu něco jako
1. Čti tlačítka
2. Vyhodnoť tlačítka
3. Vypiš na displej

To celé pořád dokola.

Zkuste na to kouknout a pak můžem jít dál ;-) nevím jak na tom s programováním jste.

Axamith
Příspěvky: 530
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Změna textu po stisku tlačítka

Příspěvek od Axamith » 19 led 2018, 11:36

Když pomineme tu omáčku kolem, kterou zmínil Wojta (ovládání dipleje, ošetření tlačítek ...), tak základem budou podmínky.
Když je Tlačítko 1 sepnuté, vypiš na displej text ANO, když není Tlačítko 1 sepnuté, nevypisuj nic.
Dalšími podmínkami budete ovládat jiná tlačítka (vstupy) a posílat na displej potřebný text (výstup).
Složenými podmínkami lze ošetřit chování, když bude sepnuta kombinace více tlačítek.

Silverman
Příspěvky: 4
Registrován: 19 led 2018, 10:26
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Silverman » 23 led 2018, 20:12

Tak jsem se to pokusil dát dohromady, ale nefunguje mi výpis těch odpovědí. Tlačítka mám připojená na piny 2, 3, 4, 5, 6 proti GND. Zde je kód:

Kód: Vybrat vše

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);  
const int buttonOne = 2;  
const int buttonTwo = 3; 
const int buttonThree = 4;  
const int buttonFour = 5;
const int buttonFive = 6; 
int prevSwitchState = 0;  
int switchState = 0;  
int prevSwitchStateTwo = 0;  
int switchStateTwo = 0;  
void setup(){   
  pinMode(buttonOne, INPUT);  
  pinMode(buttonTwo, INPUT);
  pinMode(buttonThree, INPUT);
  pinMode(buttonFour, INPUT);
  pinMode(buttonFive, INPUT);
  lcd.begin();
  lcd.backlight();
  lcd.setCursor ( 7, 1 );  
  lcd.print("Vitejte");
  delay (3000);   
  lcd.setCursor(3, 1);  
  lcd.print("Toto je pouze");
  lcd.setCursor(6, 2);  
  lcd.print("test");  
  }  
void loop()  
{  
   lcd.setCursor(0,0);  
   switchState = digitalRead(buttonOne);  
   if (prevSwitchState != switchState)  
    {         
    if (buttonOne == HIGH)  
      {        
         lcd.print("Vase odpoved - ANO");         
      }    
    }     
 switchStateTwo = digitalRead(buttonTwo);  
  if (prevSwitchStateTwo != switchStateTwo )  
   {     
      if (buttonTwo== HIGH)  
      {          
         lcd.print("Vase odpoved - NE");         
      }   
prevSwitchStateTwo =  switchStateTwo;
   } 
     switchState = digitalRead(buttonThree);  
   if (prevSwitchState != switchState)  
    {         
    if (buttonOne == HIGH)  
      {        
         lcd.print("Vase odpoved - MOZNA");         
      }    
    }
      switchState = digitalRead(buttonFour);  
   if (prevSwitchState != switchState)  
    {         
    if (buttonOne == HIGH)  
      {        
         lcd.print("Vase odpoved - NEVIM");         
      }    
    } 
          switchState = digitalRead(buttonFive);  
   if (prevSwitchState != switchState)  
    {         
    if (buttonOne == HIGH)  
      {        
         lcd.print("Preskocit otazku");         
      }    
    }     
}  
Mohl bych poprosit o pomoc? Předem díky!!!

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Wojta » 24 led 2018, 07:12

Problém bude v tomto

Kód: Vybrat vše

if (buttonOne == HIGH)  
      {        
         lcd.print("Vase odpoved - ANO");         
      }    
buttonOne se nebude nikdy rovnat HIGH, v hlavičce jste si takto pojmenoval proměnnou která ukládá číslo pinu že kterého čtěte. Tahle proměnná se tedy pořád rovná dvěma tak jak jste ji inicializoval. Můžete tam místo ní prdnout proměnnou switchState a nebo odečíst stav pinu znovu:

Kód: Vybrat vše

if (digitálně adresa(buttonOne) == HIGH)  
      {        
         lcd.print("Vase odpoved - ANO");         
      }    

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Wojta » 24 led 2018, 12:44

Za ten poslední kód se omlouvám, automatická oprava je napytel. Myslel jsem to takto:

Kód: Vybrat vše

if (digitalRead(buttonOne) == HIGH)  
      {        
         lcd.print("Vase odpoved - ANO");         
      }    

Silverman
Příspěvky: 4
Registrován: 19 led 2018, 10:26
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Silverman » 24 led 2018, 18:34

Omlouvám se, ale už jsem z toho celej blbej. Odpovědi ANO, NE vyskočí sami po zmizení "Vitejte". kód jsem upravil takto:

Kód: Vybrat vše

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

const int buttonOne = 2;
const int buttonTwo = 3;

int prevSwitchState = 0;
int switchState = 0;
int prevSwitchStateTwo = 0;
int switchStateTwo = 0;

void setup()
{
  pinMode(buttonOne, INPUT);
  pinMode(buttonTwo, INPUT);

  lcd.begin();
  lcd.backlight();
  lcd.setCursor ( 7, 1 );
  lcd.print("Vitejte");
  delay (3000);
  lcd.clear();
}

void loop()
{
  lcd.setCursor(0, 0);
  switchState = digitalRead(buttonOne);
  if (prevSwitchState != switchState)
  {
    if (digitalRead(buttonOne) == HIGH)
    {
      lcd.print("ANO");
    }
  }

  lcd.setCursor(0, 1);
  switchStateTwo = digitalRead(buttonTwo);
  if (prevSwitchStateTwo != switchStateTwo)
  {
    if (digitalRead(buttonTwo) == HIGH)
    {
      lcd.print("NE");
    }
  }
}

Silverman
Příspěvky: 4
Registrován: 19 led 2018, 10:26
Reputation: 0

Re: Změna textu po stisku tlačítka

Příspěvek od Silverman » 26 led 2018, 10:51

Problém vyřešen. Přikládám funkční kód, kdyby to náhodou někdy někdo potřeboval :)

Kód: Vybrat vše

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
 
 #define buttonone 2  
 #define buttontwo 3  
 #define buttonthree 4  
 int state = 1;  
 void setup()   
 {  
  Serial.begin(9600);  
  pinMode(buttonone, INPUT_PULLUP);  
  pinMode(buttontwo, INPUT_PULLUP);  
  pinMode(buttonthree, INPUT_PULLUP);
  
  lcd.begin();
  lcd.backlight();
  lcd.setCursor ( 7, 1 );
  lcd.print("WELCOME");
  delay (3000);
  lcd.clear();    
  
  digitalWrite(buttonone, 1);   
  digitalWrite(buttontwo, 1);   
  digitalWrite(buttonthree, 1);   
  delay(200);  
 }  
 void loop()   
 { 
  lcd.setCursor(0, 0); 
  state = digitalRead(buttonone);  
  if (state != 1) {  
    lcd.print("ANO");  
  }
  
  lcd.setCursor(0, 1);   
  state = digitalRead(buttontwo);  
  if (state != 1) {  
    lcd.print("NE");  
  }

  lcd.setCursor(0, 2);
  state = digitalRead(buttonthree);  
  if (state != 1) {  
    lcd.print("NEVIM");  
  }   
 }  


Děkuji za rady!

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů