Stránka 1 z 1
Změna textu po stisku tlačítka
Napsal: 19 led 2018, 10:41
od Silverman
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
Napsal: 19 led 2018, 11:13
od Wojta
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.
Re: Změna textu po stisku tlačítka
Napsal: 19 led 2018, 11:36
od Axamith
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.
Re: Změna textu po stisku tlačítka
Napsal: 23 led 2018, 20:12
od Silverman
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!!!
Re: Změna textu po stisku tlačítka
Napsal: 24 led 2018, 07:12
od Wojta
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");
}
Re: Změna textu po stisku tlačítka
Napsal: 24 led 2018, 12:44
od Wojta
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
Napsal: 24 led 2018, 18:34
od Silverman
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
Napsal: 26 led 2018, 10:51
od Silverman
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!