Změna textu po stisku tlačítka
Změna textu po stisku tlačítka
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!
Re: Změna textu po stisku tlačítka
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.
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.
Re: Změna textu po stisku tlačítka
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.
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.
Re: Změna textu po stisku tlačítka
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:
Mohl bych poprosit o pomoc? Předem díky!!!
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");
}
}
}
Re: Změna textu po stisku tlačítka
Problém bude v tomto
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 (buttonOne == HIGH)
{
lcd.print("Vase odpoved - ANO");
}
Kód: Vybrat vše
if (digitálně adresa(buttonOne) == HIGH)
{
lcd.print("Vase odpoved - ANO");
}
Re: Změna textu po stisku tlačítka
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");
}
Re: Změna textu po stisku tlačítka
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");
}
}
}
Re: Změna textu po stisku tlačítka
Problém vyřešen. Přikládám funkční kód, kdyby to náhodou někdy někdo potřeboval
Děkuji za rady!
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!
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti