catalin004 Postat Noiembrie 29, 2017 Partajează Postat Noiembrie 29, 2017 (editat) Salut. Astazi mi-am montat display-ul 4x20 si vreau sa ma apuc de modificari ale paginilor, meniului etc...problema este ca am incercat sa fac ceva simplu, adica 2 pagini si la a doua imi afisaza numai hieroglife....pe prima este ok...postez mai jos codul... #include "LCD_config.h" #include "hww.h" void page1(){ LCD_Out(1, 1, " 3 Phase Invertory "); LCD_Out(2, 1, " Speed: PWM: "); LCD_Out(3, 1, " Uout: "); LCD_Out(4, 1, " Iout: "); } void page2(){ LCD_Out(1, 1, " Parameters "); LCD_Out(2, 1, " I1= U1= "); LCD_Out(3, 1, " I2= U2= "); LCD_Out(4, 1, " I3= U3= "); } void main() { static unsigned int stare_buton = 1; Button_dir = INPUT; LCD_Init(); LCD_Cmd(_LCD_CURSOR_OFF); LCD_Cmd(_LCD_CLEAR); LCD_Out(2, 1, " Program "); LCD_Out(3, 1, " pagini meniu "); for(;;){ if(!Button){ delay_ms(200); if(!Button && stare_buton == 1) { stare_buton = 0; page1(); } } if(!Button){ delay_ms(200); if(!Button && stare_buton == 0) { stare_buton = 1; page2(); } } }} Editat Noiembrie 29, 2017 de catalin004 Link spre comentariu
Elison Postat Noiembrie 29, 2017 Partajează Postat Noiembrie 29, 2017 (editat) Daca puneai si o poza, era mult mai bine pentru cei care ar putea sa-ti dea un sfat. Cand scrii un text pe un display si apoi doresti sa modifici acel text cu altul, mai intai trebuie sa gasesti o metoda sa stergi ce ai scris prima data si apoi sa scrii pe un ecran curat. La scoala, daca tabla de scris este plina, prima data se sterge tabla si apoi se scrie pe ea. La tine acea curatare se intampla doar o singura data. Editat Noiembrie 29, 2017 de Elison Link spre comentariu
catalin004 Postat Noiembrie 29, 2017 Autor Partajează Postat Noiembrie 29, 2017 Am incercat si cu CLEAR la fiecare pagina...si imi apar alte hieroglife.... Link spre comentariu
catalin004 Postat Noiembrie 29, 2017 Autor Partajează Postat Noiembrie 29, 2017 Intr-un switch case se pot declara flag-uri de care se poate tine cont mai tarziu in program? Multumesc Link spre comentariu
Vizitator Postat Decembrie 2, 2017 Partajează Postat Decembrie 2, 2017 Poti incerca asa. Din buton selectezi menu = x; ( x = 0 sau 2 ); switch (menu) { case 0: LCD.Cmd(_LCD_CLEAR); menu = 1; break; case 1: page1(); break; case 2: LCD.Cmd(_LCD_CLEAR); menu = 3; break; case 3: page2(); break; . . . } Link spre comentariu
mars01 Postat Decembrie 2, 2017 Partajează Postat Decembrie 2, 2017 Am incercat si cu CLEAR la fiecare pagina...si imi apar alte hieroglife.... Asigura-te ca tot timpul tiparesti 16 caractere pe linie, adica maxim. Daca ai caractere utile mai putine de 16, atunci adauga spatii (space). In acest fel numai ai nevoie sa stergi ecranul, o operatie care ia destul timp, incat face ca afisarea sa fie suparatoare (ezitanta). Link spre comentariu
catalin004 Postat Decembrie 3, 2017 Autor Partajează Postat Decembrie 3, 2017 Salut...Mars am 20 caractere ...4x20 displayul. Am facut exact ce ai zis tu cu spatiu in loc de clear ca am obsrvat ca merge greu...meniul am reusit sa il fac insa acum ma chinui cu selectia...trebuie facut un alt switch case care sa plimbe o sagetuta > problema este ca la schimbarea meniului nu apare sagetuta la primul rand...apare dupa ce apas pe buton... Ar mai fi o problema la selectie...cand apas enter sa zicem sau ok sa imi intre in meniul selectat...adica un flag separat in switchuri care sa depinda doar de selectia respectiva adica if(ok apasat & option 1 selectat) then ( afiseaza option 1 items) Link spre comentariu
Vizitator Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 ... adica if(ok apasat & option 1 selectat) then ( afiseaza option 1 items) Numai din if-uri si switch-uri: meniu, submeniuri,...https://www.youtube.com/watch?v=SMK4kkf7jmM, cu Arduino Mega. Se poate adapta si pentru LCD 4x20 cu PIC. Link spre comentariu
GeoMar Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 Numai din if-uri si switch-uri: meniu, submeniuri,...https://www.youtube.com/watch?v=SMK4kkf7jmM, cu Arduino Mega. Se poate adapta si pentru LCD 4x20 cu PIC. Foarte frumos @va_cristi, felicitari. Link spre comentariu
catalin004 Postat Decembrie 3, 2017 Autor Partajează Postat Decembrie 3, 2017 Frumos...nu am ce sa zic...insa ma asteptam si la cod....nu am glcd inca....deabia am ajuns la meniuri.... Link spre comentariu
mars01 Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 (editat) Cristi, tu ai facut design-ul la icon-uri? Mie partea aceasta mi se pare cea mai scarboasa ... Colegii mei care fac aplicatii PC primesc design-ul de la cei de la marketing si apoi se apuca sa deseneze pixeli Tu cum ai facut? Iar partea de UI mi se pare cea mai laborioasa intr-un software. Partea de "handling" din spate nu este atat de dificila. Practic ai un contor care este incrementat / decrementat functie de apasarea unei taste / rotirea unui encoder. Treci rapid prin bucla respectiva si faci afisarea pe LCD numai daca difera contorul de cel din trecerea precedenta prin bucla. Aceasta pentru a face afisarea rapida. Eu as fi folosit in loc de un Arduino Mega un blue-pill cu STM32F103C8T6 sau daca chiar vrei ceva gen MEGA (nevoie de pini multi) atunci un Arduino DUE. In felul acesta ti se misca si tie meniurile mai omeneste fara lag-ul acela de afisare. LE: daca se doreste folosirea unui PIC atunci probabil ca trebuie minim un PIC din familia PIC32. Editat Decembrie 3, 2017 de mars01 Link spre comentariu
Bandi Szasz Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 (editat) Pentru aplicatii cu meniu mai complex (grafic) mi se par display-urile Nextion foarte tari. Am unu-l de 7" (sunt si modele mult mai mici 4.3", 5") si se misca foarte bine. Are un IDE pentru design unde incarci iconite facute cu photoshop sau alte tool-uri de imagini, le aranjezi cum vrei si incepi sa adaugi hotsopuri pentru touch. Cand se apasa un hotsop display-ul trimite prin UART id-ul butonului si poti apoi sa trimiti valori noi pentru campuri de text,etc... Sunt putin mai costisitoare decat un GLCD dar te scapa de multa munca la design prin IDE care e un fell de drag-n-drop cu elemente standard: camp text, imagini, introducere text / numere, scroll, progress bar, etc.. Editat Decembrie 3, 2017 de Bandi Szasz 1 Link spre comentariu
mars01 Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 Mai ramane de vazut cat de rapide sunt. Am cumparat si eu unul putin mai devreme (merci pentru pont), am facut comanda pentru versiunea de 3.5" pentru ca am vazut ca are procesor de 108MHz spre desosebire de cele cu dimensiuni mai mici care au procesor la 48MHz. Link spre comentariu
Vizitator Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 (editat) Cristi, tu ai facut design-ul la icon-uri? Mie partea aceasta mi se pare cea mai scarboasa ... Colegii mei care fac aplicatii PC primesc design-ul de la cei de la marketing si apoi se apuca sa deseneze pixeli Tu cum ai facut? Salut mars01! Da eu am facut iconurile. Am invatat singur, si acuma mi se par simple. As fi vrut sa deschid un topic, cu tema aceasta, cum sa realizam iconite pt diferite display-uri. Dar am facut o pauza pe acest forum din cauza unuia dintre forumisti. Pe blogul meu era o postare, cum se realizeaza iconite, dar am sters tot de pe blog, youtube. Dar o sa revin pe forum, "ca imi este dor". Cand faci ceva teste cu display-ul, deschide un topic, poate ma prind si eu, ca, chiar am de facut un proiect pt apartament. Sa nu uitam ca suntem pe sectiunea PIC-uri . Editat Decembrie 3, 2017 de Vizitator Link spre comentariu
Bandi Szasz Postat Decembrie 3, 2017 Partajează Postat Decembrie 3, 2017 Sunt destul de rapide, uite aici ce am reusit sa fac eu pana acuma cu al meu. Momentan e doar strict display-ul fara montajul din spate pe care inca nu am avut timp sa-l termin, o sa fie un master RS485 care o sa comunice cu alte montaje slave prin casa. https://www.youtube.com/watch?v=LNrzKi-iN6U On topic: La display-uri LCD 16X2 eu de obicei am o variabila char care retine ultimul buton apasat ( o structura if else care verifica fiecare buton in parte daca e apasat), dupa care trec acea variabila in "switch" si in functie de butonul apasat ori se fac mici operatii iar daca e nevoie de cod mai lung (5+ linii cod) apelez o functie, la sfarsit resetez variabila la 0 si se ia ciclul de la capat. Singura problema cu metoda aste e ca nu detecteaza apasari simultane, unde am avut nevoie am verificat in structura if prima data combinatii de butoane si in caz ca a fost gasit unu-l atunci am setat variabila char cu un numar mai mare de exemplu pronind de la 100 pt prima combinatie 101 pentru a doua etc.. 1 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum