sâmbătă, 29 octombrie 2016

Afisaj TFT de 1,8" cu driver ST7735B


   De curand am intrat in posesia unui afisaj color cu diagonala de 1,8" (4,6cm) care este controlat de integratul ST7735B...
   Am gasit mai multe informatii, dar m-am oprit la cele de la:
Henry's bench - 1.8TFT V1.0 ST7736 Arduino Tutorial 1: Hello World
Tweaking4all - SainSmart 1.8″ TFT Arduino Color LCD Display
   Dupa descrierile prezentate pe net, se conecteaza simplu cu 3 sau 5 pini de date, alimentare la 5V (ca are stabilizator de tensiune pe placa), masa (gnd) si pinul de iluminare de fundal.
   Am conectat afisajul la o placa Arduino dupa indicatiile din sketch si am am avut surpriza sa constat ca ecranul e mai mult alb
 si doar daca scot masa se vede cat de cat imaginea, dar apar diverse linii, etc.
   Dupa ce am mai cautat pe net, am dat de diverse discutii in care se schimbau pini, intr-o discutie d epe forumul Arduino am gasit ca ar fi indicat sa folosesc pe pinii de date rezistente, cum e si la afisajul de Nokia 5110, schema mea de test fiind
   Am facut 2 filmulete in care se vede ca e corect acest mod de legare folosind libraria lui Bodmer TFT_ST7735 si un sketch derivat dintr-un exemplu de acolo, adica TFT_DigitalClock_ST7735_simplified.ino:
afisaj grafic cu ST7735B conectat la Arduino
ST7735B display with Arduino board
03.11.2016
   Schema de test completa este

vineri, 21 octombrie 2016

Masurare turatie cu senzor Hall si Arduino

   Am testat cateva sketch-uri de masurare a turatiei cu un senzor Hall si cu o placa Arduino, initial, folosindu-ma de informatiile de pe pagina oficiala Arduino si anume de materialul din articolul Reading Fan RPM 
in care se conecteaza un ventilator de procesor la alimentarea de 12V si iesirea senzorului Hall incorporat se conecteaza la 5V printr-o rezistenta de 10k, exact ca in articolul Reading PC Fan RPM with an Arduino
   Cu aceasta ocazie am facut is un filmulet, numit masurare turatie ventilator cu senzor Hall folosind Arduino
   Sketch-ul din articolul Reading Fan RPM afisa informatia doar in ecranul de moniorizare seriala, asa ca am cautat prin afisajele mele unul care se poate conecta repede, si primul gasut a fost un modul cu 8 cifre din 7 segmente fiecare controlate de un MAX7219, acesta se conecteaza simplu, cum am prezentat in articolul de AICI, schema de conectare fiind foarte simpla:
   Am combinat sketch-ul anterior cu cel pentru MAX7219 si mi-a iesit sketch-ul reading_RPM1.ino, cu care am facut filmuletul masurare turatie ventilator cu senzor Hall folosind Arduino (2)
   Am testat si varianta de sketch in care ce foloseste o intrare analogica, cum este prezentat pe site-ul oficial Arduino in materialul Tachometer adaptand sketch-ul de acolo cu partea de afisaj cu MAX7219, rezultandu-mi sketch-ul rpm_analoginput1.ino in care iesirea senzorului Hall este conectata la A0 (am pastrat rezistenta de 10k la 5V) si am facut filmuletul masurare turatie ventilator cu senzor Hall folosind Arduino (4) in care se vede modul de afisare:
   Dupa ce am mai cautat pe net, am consatat ca tot partea testata initial e mai precisa, deoarece foloseste "intreruperi" ale microcontrolerului ATmega.. nu intru in amanunte ca nu ma pasioneaza sa reinventez roata, dar am testat si un sketch al lui mare programator, Nick Gammon, de data asta fiind multumit de rezultate, in sensul ca variatia indicatiilor nu este mare ca in celelalte cazuri. pentru cei ce vor sa aprofundeze acest mod de citire, le recomand articolul Interrupts scris de Nick Gammom si articolul AttachInterrupt de pe site-ul oficial Arduino.
   Sketch-ul testat a fost gasit la www.mikrocontroller.net si a fost adaptat de mine pentru afisajul cu MAX7219, devenind RPM_intr_nick_gammon_1.ino si am facut 2 filmulete in care se vede ca unde motorul ventilatorului are turatii constante afisarea este ok: