Proste menu na wyświetlaczu LCD

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 13 cze 2019, 16:36

Witam serdecznie.
Aż boję się prosić o pomoc. Moja przygoda z arduino zaczęła się może tydzień temu, póki co jestem jeszcze bardzo zielony w temacie, a potrzebuje na tzw cito prosty program do obsługi menu na Arduino. Mam Arduino uno i wyświetlacz LCD z modułem LM1602
Założenie jest takie że w górnej linii wyświetlacza ma być nie zmienny napis- tytuł.
W dolnej lini po pojawię się stanu niskiego "0" na jednym z 6 pinów ma się pojawić informacja opisująca zajście. W przypadku gdyby pojawiło się kilka stanów niskich informacja miała by się cyklicznie zmieniać. Maksymalne 6.
Całość miała by działać do momentu powrotu stanów wysokich. A na LCD w dolnej linijce wyświetlany byłby napis np" wszystko ok"

Mam nadzieję że nie zmyjecie mi głowy.
Obiecuję że będę się starał sam ogarnąć temat, ale po pierwsze czas goni, po drugie mój wiek mocno ogranicza moją zdolność przyswajania wiedzy.

Może ktoś ma podobny projekt. Powinienem dać radę go ewentualnie przerobić.

Z góry dziękuję za pomoc
Ostatnio zmieniony 14 cze 2019, 07:47 przez Thomas102, łącznie zmieniany 1 raz.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 14 cze 2019, 05:00

co to znaczy stan niski na wejściach analogowych?
chodzi to stan logicznego 0?

Wysłane z mojego MI MAX przy użyciu Tapatalka

Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 14 cze 2019, 07:41

Tak , dokładnie tylko że na pinach cyfrowych. Już poprawiam.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1138
Rejestracja: 18 lis 2011, 02:18

Re: Proste menu na wyświetlaczu LCD

Post autor: Marhef » 14 cze 2019, 08:09

Thomas102 pisze:
13 cze 2019, 16:36
potrzebuje prosty program do obsługi menu na Arduino.
Na pewno chodzi Ci o menu? Bo mi opis wygląda na obsługę błędów/zdarzeń. W menu możesz coś wybierać, z Twojego opisu nie wynika taka możliwość.
Thomas102 pisze:
13 cze 2019, 16:36
Mam Arduino uno i wyświetlacz LCD z modułem LM1602
Wyświetlacz jest zgodny z HD44780?
Thomas102 pisze:
13 cze 2019, 16:36
Założenie jest takie że w górnej linii wyświetlacza ma być nie zmienny napis- tytuł.
To akurat proste, wykonuje się raz.
Thomas102 pisze:
13 cze 2019, 16:36
W dolnej lini po pojawię się stanu niskiego "0" na jednym z 6 pinów ma się pojawić informacja opisująca zajście.
Napis zmieści się na wyświetlaczu?
Thomas102 pisze:
13 cze 2019, 16:36
W przypadku gdyby pojawiło się kilka stanów niskich informacja miała by się cyklicznie zmieniać. Maksymalne 6.
Mają się wyświetlić w kolejności wystąpienia? Czy kolejność nie ma znaczenia? Co ile się zmieniać?
Thomas102 pisze:
13 cze 2019, 16:36
Całość miała by działać do momentu powrotu stanów wysokich. A na LCD w dolnej linijce wyświetlany byłby napis np" wszystko ok"
To też da się zrobić.
Thomas102 pisze:
13 cze 2019, 16:36
Mam nadzieję że nie zmyjecie mi głowy.
A za co mielibyśmy? Po to jest forum, żeby pomóc
Thomas102 pisze:
13 cze 2019, 16:36
Obiecuję że będę się starał sam ogarnąć temat
Obiecuję pomóc w miarę możliwości ;)
Thomas102 pisze:
13 cze 2019, 16:36
po pierwsze czas goni
jak wszystkich
Thomas102 pisze:
13 cze 2019, 16:36
po drugie mój wiek mocno ogranicza moją zdolność przyswajania wiedzy.
E tam. Że sparafrazuję: "starość to stan umysłu" :-P
Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 14 cze 2019, 10:26

Witam, widzę światełko w tunelu :) ,dziękuje za zainteresowanie.

Odp 1.
Dokładnie tak , ma być to podgląd alarmów 30 - letniej centrali alarmowej, niestety specyfika pracy czujników nie pozwala na jej wymianę. alarmy są zgłaszane po prostu poprzez zapalenie żarówki 230 v . Informacja do arduino była by realizowana poprzez przekazniki z filtrem aby wyeliminować stany niepewne - drżenie styków. W sumie nie wiem czemu uparłem się na sterowanie stanem niskim, w końcu to obojętne ale z tym powinienem sobie poradzić

Odp 2.
Tak jest zgodny LCD 2X16 znaków.

Odp.3
To dobra wiadomość :)

Odp. 4
Niech spróbuje się nie zmieścić :) a poważnie co najwyżej użyje jakiś skrótów opisowych .

Odp. 5
Kolejność nie ma znaczenia, czas wyświetlania zupełnie dowolny tyle żeby dało się przeczytać np 5 s

Odp. 6
Kolejna dobra wiadomość :)

Odp. 7 ,8,9

Bo to jest tak, że jestem członkiem kilku różnych forów, W niektórych tematach czuje się lepiej w innych zupełnie kiepsko. Sam wiem że czasami dochodzenie do jakiejś wiedzy to miesiące i lata siedzenia w internecie i nad książkami i rozumiem tych, którzy wkurzają się na postawy roszczeniowe typu : mam pomysł a Wy musicie mi pomóc.
Dlatego bardzo dziękuję za zainteresowanie, kupiłem sobie już książkę  i kurs programowania arduino. I na prawdę się uczę ...:) ,ale to potrwa
Co do wieku .... a o czym rozmawiamy bo zapomniałem - taki żarcik

pozdrawiam
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 14 cze 2019, 16:19

Jeśli 230 V, to polecam coś takiego: https://www.gotronik.pl/8-kanalowy-modu ... -4090.html


Poza tym wydaje się że wystarczyłaby lista z diodą przy każdym alarmie, a ten moduł Ci je zapali =) albo lampki led na 230VAC

co to za centralka?


Wysłane z mojego MI MAX przy użyciu Tapatalka



Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 14 cze 2019, 17:07

No proszę. Nawet nie wiedziałem że takie coś istnieje. Jak najbardziej nadaje się. Centralka jest autorskim projektem 😂. A projektant zapewne jest straszy odemnie, choć to trudne 😀. Dlatego sobie wymyśliłem układ na Arduino żeby tchnąć w to odrobinę cyfryzacji.

Oczywiście jeśli polegnę - to zrobię tak jak mówisz. I tak rozwiąże problem z wiecznie przepalonymi żarówkami.
Póki co szukam jakiejś centrali na Arduino z minimum 6 wejściami sygnałowymi z czujników NC lub NO i wyświetlaczem informującym o tym który obwód został naruszony. W sumie już to by mi wystarczyło.
Pozdrawiam
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 14 cze 2019, 18:23

Lepiej byłoby spiąć to z espeasy i wysyłać do jakiegoś np. domoticz-a miałbyś wtedy dostęp do historii alarmów.

Wysłane z mojego MI MAX przy użyciu Tapatalka

Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 15 cze 2019, 07:26

Dziękuję za odpowiedź. Niestety dla mnie to nawet nie półka wyżej, to tak mniej więcej wysokość pawlacza 😀.

Chociaż muszę przyznać że sama idea jest bardzo kusząca. Problem polega na tym, że całość musi być elementarnie prosta w odbiorze. Ja tylko montuję i uruchamiam. Nadzór prowadzą osoby trzecie, a to już inna historia....


Póki co walczę... Staram się coś sensownego stworzyć.
Pozdrawiam wszystkich
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 15 cze 2019, 09:21

To nie takie trudne, espeasy to gotowiec na moduły z prockiem esp.
Domoticz gdzieś musi być zainstalowany lub jeśli jest dostep do wifi i internetu można spróbować wysyłać dane na zewnętrzny serwer.
Ogólnie możesz to na następnym etapie dodać, bo jedno nie przeczy drugiemu.

Tamten moduł na 230 V od razu załatwia ci sprawę drgania styków.

Najważniejsze jednak abyś zachował szczególna ostrożność przy modyfikacji tego systemu, to napięcie jest niebezpieczne dla życia i zdrowia.

Wysłane z mojego MI MAX przy użyciu Tapatalka

Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 15 cze 2019, 10:13

Mam przed sobą nockę w pracy. Poczytam, może czegoś się nauczę.
Z wykształcenia i zawodu jestem elektrykiem. Ale dzięki za troskę. Bezpieczne przede wszystkim
Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 16 cze 2019, 16:04

Witam, udało mi się stworzyć cos takiego:


#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

#define LCD_ADDR 0x27

#define BTN_BACK 8
#define BTN_NEXT 3
#define BTN_PREV 7
#define BTN_OK 5



typedef enum {
BACK, NEXT, PREV, OK, NONE
} ENUM_BUTTON;

LiquidCrystal_PCF8574 lcd(LCD_ADDR);

int currentMenuPos = 0;
int menuSize;
bool isInLowerLevel = false;
int tempVal;


void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setBacklight(255);

pinMode(BTN_NEXT, INPUT_PULLUP);
pinMode(BTN_PREV, INPUT_PULLUP);
pinMode(BTN_BACK, INPUT_PULLUP);
pinMode(BTN_OK, INPUT_PULLUP);

lcd.home();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Aktualne Alarmy");
lcd.setCursor(0,1);
lcd.print(" BRAK ");

}

void loop() {





if(!digitalRead(BTN_BACK)) lcd.print("Alarm nr.1");
lcd.setCursor(0,1);

if(!digitalRead(BTN_NEXT)) lcd.print("Alarm nr.2");
lcd.setCursor(0,1);

if(!digitalRead(BTN_PREV)) lcd.print("Alarm nr.3");
lcd.setCursor(0,1);

if(!digitalRead(BTN_OK)) lcd.print("Alarm nr.4");
lcd.setCursor(0,1);


}

Mocno posiłkowałem się internetem, ale działa

Problemy z którym sobie nie radzę :
Po zwolnieniu przycisku, menu nie wraca do napisu " BRAK"
Przy naciśnięciu dwóch lub więcej przycisków nazwy alarmów nakładają się .
Może ktoś podpowie ?

pozdrawiam
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 16 cze 2019, 21:30

sprobuj tak:

void loop() {
int ile =0;
if(!digitalRead(BTN_BACK)){
lcd.setCursor(0,1);
lcd.print("Alarm nr.1");
ile++;
delay(1200);
};

if(!digitalRead(BTN_NEXT)){
lcd.setCursor(0,1);
lcd.print("Alarm nr.2");
ile++;
delay(1200);
};

if(!digitalRead(BTN_PREV)){
lcd.setCursor(0,1);
lcd.print("Alarm nr.3");
ile++;
delay(1200);
};

if(!digitalRead(BTN_OK)){
lcd.setCursor(0,1);
lcd.print("Alarm nr.4");
ile++;
delay(1200);
};

if(ile ==0){
lcd.setCursor(0,1);
lcd.print(" BRAK ");
delay(1200);
} else {
ile =0
};

}

wklej to zamiast funkcji loop w programie

nie jest to. optynalnie napisany program jak bedziesz chcial to ci go troche przepisze ale wpierw dojdz do wersji ktora ci dziala

Wysłane z mojego MI MAX przy użyciu Tapatalka




Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 17 cze 2019, 08:07

Witam , działa !!!
Dzięki bardzo !!!
O ile wszystko w programie jest jasne, o tyle nie rozumiem funkcji "ile" znaczy się ... widzę jak działa, ale nie wiem jak :)
Jeśli mogę o coś jeszcze spytać ?

Nie ukrywam że się posiłkowałem różnymi programami z netu .
Zastanawiam się czy mógłbym dołożyć więcej wejść, chociaż we wszystkich przykładach jakie widziałem, do nawigowania po menu używane były tylko 4 przyciski, a ograniczenie wynikało z

pinMode(BTN_NEXT,
pinMode(BTN_PREV,
pinMode(BTN_BACK,
pinMode(BTN_Ok

Czy mogę zdeklarować dowolny pin np: ( oczywiście cyfrowy )
#define BTN_REV 6
A potem użyć go w programie ?
Jeszcze raz bardzo dziękuje . No teraz to dopiero widzę ile jeszcze muszę się nauczyć :)

pozdrawiam
Awatar użytkownika
Marhef
Złota rączka
Posty: 1138
Rejestracja: 18 lis 2011, 02:18

Re: Proste menu na wyświetlaczu LCD

Post autor: Marhef » 17 cze 2019, 08:36

Thomas102 pisze:
17 cze 2019, 08:07
O ile wszystko w programie jest jasne, o tyle nie rozumiem funkcji "ile" znaczy się ... widzę jak działa, ale nie wiem jak :)
Ile to nie funkcja tylko zmienna. Sprawdza, czy jest konieczność wyświetlenia alarmu.
Thomas102 pisze:
17 cze 2019, 08:07
Czy mogę zdeklarować dowolny pin np: ( oczywiście cyfrowy )
#define BTN_REV 6
A potem użyć go w programie ?
Możesz. W dokładnie taki sam sposób, jak są zrobione pozostałe
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 17 cze 2019, 08:45

zmienna ile służy do zliczania ile było alarmów wykrytych, jeśli nie wykryto alarmów ile ma wartość 0 i wtedy pokazujemy info ze brak alarmów

ile++ zwiększa wartość zmiennej ile o 1

co do większej ilości alarmów da się jak najbardziej ale wygodniej byłoby zoptymalizować program aby wygodnie dodawać nowe alarmy
możesz tez kopiować fragment od ostatniego alarmu i zmieniać mu pin :)


Wysłane z mojego MI MAX przy użyciu Tapatalka

Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 17 cze 2019, 09:05

Super , dziękuję bardzo .
Nie wiem czy warto wrzucać sketch na forum dla potomnych :)
Chociaż dzięki Waszej pomocy powstał bardzo uniwersalny i mega prosty projekt monitujący cokolwiek:)
Spróbuje jeszcze dołożyć buzer, aż kusi żeby zastosować większy LCD i dorzucić np. temperaturę otoczenia i choćby zegarek

Dzięki raz jeszcze
uzi18
Majsterkowicz
Posty: 88
Rejestracja: 10 maja 2018, 05:06

Re: Proste menu na wyświetlaczu LCD

Post autor: uzi18 » 17 cze 2019, 09:09

Jeśli zabraknie ci pinów, to kup konwerter lcd na i2c za kilka złotych, wymaga tylko 2 pionów.

Zostaw na forum może się komuś przyda.

Do obslugi buzzera najlepiej użyć moduł buzzera aktywnego (z generatorem).

Wysłane z mojego MI MAX przy użyciu Tapatalka


Thomas102
Młodszy majsterkowicz
Posty: 11
Rejestracja: 13 cze 2019, 16:16

Re: Proste menu na wyświetlaczu LCD

Post autor: Thomas102 » 17 cze 2019, 09:46

Właśnie taki mam na i2c 😀
Pozdrawiam
ODPOWIEDZ

Strony partnerskie: