Arduino ILI9341 TFT Display Pitanja - Printable Version +- DIY Electronic projects (https://forum.yu3ma.net) +-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52) +--- Forum: Atmel (https://forum.yu3ma.net/forumdisplay.php?fid=55) +--- Thread: Arduino ILI9341 TFT Display Pitanja (/showthread.php?tid=2008) |
RE: Arduino ILI9341 TFT Display Pitanja - me[R]a - 04-12-2019 Ja mislim da ide prvo RST pin na displayu na LOW dok se setuje pa onda na HIGH. Znaci moras pin sa Arduina (bez level siftera) sa 1k na RST pin displeja a jedan PullDown od 1k8 na GND. Taj divider 1k i 1k8 sa 5V treba da daju cca 3.3V RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-12-2019 Odlično....sada radi problem je bio taj divider, ima prvo LOW pa onda HIGH i tako ga drzi sada i radi kod paljenja...hvala YuMERA. RE: Arduino ILI9341 TFT Display Pitanja - me[R]a - 04-12-2019 Ovom kombinacijom taj pin Arduina ti je konstantno opterecen strujom od oko 2mA ako ti je to puno onda napravi divider sa 5k1 i 10k RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-12-2019 Code: // include library Navedeni gore kod treba da na LCD ispisuje brojku od 0 do npr 450 (to cu kasnije staviti MAX i MIN brojača tempSet). Rotary Encoder je spojeni na arduino pro mini na pinove 2 i 3 (A(INT0) i B(INT1)) i switch button na pin0. Zadatak je da kad se okreće lijevo enkoder da tempSet se smanjuje za 5 a kad se okreće desno da se povećava do 5 i ispisuje vrijednost na LCD-u. Kod mene se događa da kada idem polako okretat desno nekad trebam okrenuti dva puta, nekad jednom(dakle to je OK), nekad tri puta da se poveca varijabla za 5. Isto vrijedi i za lijevo samo tamo se smanjuje za 5, ali nekada se smanji za jedan okretaj(sto je OK), nekad za dva a nekad za tri. Radim preko FALLING edge što po googlu kazu da je najsigurniji način...no kod mene su bugovi... Čak mi se događa da mi se brojač kad lovi iz prvog okretaja polako povećava za 10 a trebao bi za 5....pa me zanima gdje griješim gore u kodu? Čitao sam google primjere i library ali očito sam nešto propustio.... RE: Arduino ILI9341 TFT Display Pitanja - me[R]a - 04-12-2019 Probaj ovo da zamenis : Code: // Rotary Encoder - increase/decrease temp by 5°C Sa ovim : Code: // Rotary Encoder - increase/decrease temp by 5°C I probaj taj attachInterrupt da vozis sa RISING RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Ako pricamo o ratacionim enkoderima (umesto potenciometra), ne "pravi opticki enkoder", oni su iskreno "igracke", ako od 100 razlicitih na trzistu nadjes 1 koji radi kako treba javi mi Oni previse problema imaju jer pocnu da im "krckaju" kontakti posle 3 dana upotrebe, signal je previse prljav i MCU to na razlicite nacine tumaci, hoce jedan korak da prutumaci kao vise, neke ce da preskoci i tako dalje ... Izmislili ljudi mnogo pismeniju stvar za to, bezkontaktni magnetni ugaoni enkoder sa razlicitim opcijama izlaza: https://ams.com/angle-position-on-axis Dakle jedan magnet koji je ustvari "dugme" i taj IC koji direktno salje poziciju (ne mora da se preracunavaju koraci) i to vam je to ... RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-13-2019 Stavio sam kod: Code: // Attach a CHANGE interrupt to PinB and execute the doEncoder function when this change occurs I ovaj: Code: // Rotary Encoder - increase/decrease temp by 5°C Ali isto se događa i postavljam video kada se jedan po jedan korak okreće udesno rotary enkoder, dakle nekad treba tri koraka da se okrene da bi registrirao jedan, a nekad se varijablja poveća za 10 a treba da je uvijek za 5. A i nekad se varijabla umjesto da se poveća za 5 ona smanji, a namjerno sam u video uratku išao samo desno da se to vidi (jer lijevo nema smisla da kompliciramo stvari, pa sada se fokusiramo samo na desno okretanje rotary enkodera). Također sam gornji kod sei() probao staviti iznad lcd.clear(); jer bi tako bilo logično ali je isto. Ima se još kakva ideja? https://streamable.com/x5fgg Inače kupio sam ove: https://www.ebay.com/itm/2Pcs-KY-040-Rotary-Encoder-Module-for-Arduino-AVR-PIC-Board-Hot/382553258460 Moguce da pošto su jeftini da su neprecizni? Ako da koje preporučujete da je rotary encoder na modulu, pa da narucim sa ebaya pošto bih htio solziti OLED Soldering Station, a vec sam zapeo sa nekvalitetnim rotary encoderom.... EDIT: Gledam baš ovaj: https://www.ebay.com/itm/DC-5V-360-Degree-Rotary-Encoder-Module-For-Arduino-Encoding-Module/163394525143 Kvalitetno mi izgleda jel bi bio OK? Ili me slika vara... RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Vara te slika, dok ne vidis osciloskopom signale i dok u interapt rutini ne stavis jedan togle za debug signal i vidis koliko je puta usao u interapt za taj jedan korak ne mozes tacno da sagledas sta se tu desava. Svaki mehanicki kontakt ima svoje poznate probleme, ovde se radi o vise kontakta koji moraju da budu jako dobro upareni i odradjeni da bi davali ciste signale koje MCU moze jako brzo da detektuje, u pitanju su MHz brzine kada se to lepo upotrebi, ali problem je i dalje mehanicki kontakt, mnogo brljavi, mora da se ozbiljno filtrira da bi to radilo nekako dobro, perfektno ne moze, ne moze ni na mom Rigol, bacio bih ga u kantu kad mi "prokliza" jedan od 15 enkodera takvih koje ima na sebi, svaki je sklon da po neki put prokliza, maaaa .... RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Resenje je STM32 i AMS magnetni rotacioni enkoder! Drugari, to da poterate, to je sam vrh mehatronike, dovoljno je jeftino da se igramo sa tim a dovoljno mocno da moze da upravlja servo motorom! Imaju bas aplikacije "zamena potenciometra", mnogo lepo odradjeno! https://ams.com/angle-position-on-axis RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-13-2019 Naravno ovo gore je profi, ali meni ne treba nešto takvo...ovo za filtraciju je odlična ideja, gledao sam na PCB rotary encodera veze i vidio da ima na sebi spojeno: A <=> 10k <=> +5V B <=> 10k <=> +5V SWITCH <=> +5V I gledam na netu sheme i vidim da je na svaku pullup otpornik dodan 100nF kondenzator, i ja dodam ovako: GND <=> 100nF <=> A <=> 10k <=> +5V GND <=> 100nF <=> B <=> 10k <=> +5V SWITCH <=> +5V I sada je točno na LCD-u povecanje ili smanjenje za 5, ovisno o tome dali lijevo i desno okrecem, znači na ovim jeftinim kineskim modulima su stavili samo 2x10k otpornike za pullup bez kondezatora i time nistu napravili filtraciju, zato je brljavilo signale....no filtracija očito nije kako treba...jer mi nakon nekog vremena na LCD-u se pojavljuju hyeroglifi (loša filtracija pa MCU brljavi)...dok bez tih filterskih kondenzatora nema hyeroglifa na LCD-u ali je netočno očitanje. Što predlažete za filtraciju? Tj kako da se to sad kako je donekle dovede do red, jer ne tražim ultra precizno očitavanje, nego samo da očita 1korak i poveca/smanji za 5 na LCD-u. RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 (04-13-2019, 09:13 AM)ronovar Wrote: Što predlažete za filtraciju? Pa STM32, on ima integrisane filtere i kvadraturni enkoder interfejs u sebi : ) Najozbiljnije, on ima tacno predvidjene registre gde se kaze koliko "clock" impulsta mora da bude aktivno stanje na 1. i 2. ulazu da bi inkrementovao ili dekrementovao interni brojac, dakle NEZAVISNO interni modul to sve obraduje, tvoj program samo procita trenutno stanje kad mu treba i za vise krugova imas samo da hendlujes jedan interapt ne preterano kritican i to je sve sto treba. To radi jako dobro na bilo kom enkoderu kada se lepo podesi, na optickom enkodeui to radi na par MHz bez jednog izgubljenog impulsa! RE: Arduino ILI9341 TFT Display Pitanja - gorankg - 04-13-2019 U doEncoder() funkciji samo treba da uvećavaš ili umanjuješ brojač. Ispis na LCD pomeri u loop. doEncoder je funkcija koja obrađuje prekid i treba da bude što kraća. Sve ostalo ide u loop. RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-13-2019 OK, imam doma samo ovaj: https://wiki.stm32duino.com/index.php?title=Maple_Mini Jel taj ima te integrirane filtere pa da probam na breadboardu... RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Da, to je STM32F103, on ima QEI na tajmer modulu. RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-13-2019 (04-13-2019, 09:28 AM)gorankg Wrote: U doEncoder() funkciji samo treba da uvećavaš ili umanjuješ brojač. Ispis na LCD pomeri u loop. Pomjerio sam ga u loop i sada je to OK sa delayem od 100ms da se vidi osvjezavanje brojaca, ali i dalje brljavi enkoder, i primjetio sam da sam sa tim 100nF sporio ocitanje enkodera i sada treba dva okretaja/stepa da se promjeni brojac...i pocne da brljavi...smanji sam sa 100nF na 10nF i sada nema brljavljenja ali je neprecizam...idem probam sa STM32 pa cemo vidjet dal ce se situacija poboljsati. RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Evo jedan konkretan programcic za Arduino i opticki enkoder, moze pomoci. PHP Code: /* RE: Arduino ILI9341 TFT Display Pitanja - gorankg - 04-13-2019 (04-13-2019, 09:58 AM)ronovar Wrote:(04-13-2019, 09:28 AM)gorankg Wrote: U doEncoder() funkciji samo treba da uvećavaš ili umanjuješ brojač. Ispis na LCD pomeri u loop. Osvežavanje radiš kad se nešto promeni. Nema potrebe stalno da zoveš LCD. RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 U Reference Manual-u RM0008 od stranice 392 imas opisano sve oko enkoder interfejsa, na stranici 407 imas registre i vrednosti za filtere. https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf RE: Arduino ILI9341 TFT Display Pitanja - ronovar - 04-13-2019 Stavio sam isti kod na STM32 preko Arduino IDE i isto problemi se javljaju...dakle nije do ATmega ni STM32..nego do nekvalitetnog enkodera. Tako da cu naruciti STEC12E08 i odlemiti sa ovog modula ovaj kineski enkoder zalemiti ovaj ALPS staviti na PCB 2komada 100nF SMD kondenzatora i to bude to. Tako da projekt ide na mirovanje dok ne stigne ALPS. I cijena mu je cca 8$ dok sam ja ova dva kineska enkodera dobio za $0.89 tako da vjerujem da je ALPS jako kvaliteta za ono sto mi treba. Do onde ce da stigne i OLED pa ce biti zamjenjen LCD sa njime. RE: Arduino ILI9341 TFT Display Pitanja - mikikg - 04-13-2019 Cek, kako isti code, ovaj code sto sam ja postavio koristi QEI, ti si sve radio softwerski, probaj QEI, to mora malo bolje da radi ... |