Se afișează postările cu eticheta SPI. Afișați toate postările
Se afișează postările cu eticheta SPI. Afișați toate postările

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

joi, 7 iulie 2016

Potentiometrul digital dublu MCP4261

   In articolul anterior am conectat un potentiometru digital simplu MCP41010 la o placa Arduino Mega, de data asta am conectat un potentiometru dublu digital MCP4261-502E/P care se comanda tot prin protocolul SPI, cursorul are 256 trepte din valoarea potentiometrului (8 biti).
   Pe net am gasit articolul Arduino - Using digital potentiometers part 2 (MCP4251), care m-a ajutat sa testez pe al meu.
   Fiind dublu, capsula este mai mare:
semnificatia pinilor fiind:
   Schema mea de test este urmatoarea:
iar sketch-ul folosit este MCP4261_mega_lcd1602_i2c_test.ino.
si am testat niste cazuri particulare:
- ambele potentiometre au cursoarele la minim:
- primul potentiometru are cursorul la minim, la doilea la maxim:
- ambele potentiometre au cursoeale (aproape) la maxim:
- primul potentiometru are cursorul la maxim, al doilea la minim:
apoi am pus sa "numere" ambele, putand aparea mici "erori":
   Am facut si 2 filmulete:
- potentiometru digital dublu MCP4261 cu Arduino Mega 
- MCP4261 digital dual potentiometer with Arduino Mega
   Am facut mici modificari in sketch, devenind MCP4261_mega_lcd1602_i2c_test2.ino si, astfel, am comenzi simultane sau diferite pentriu fiecare potentiometru, dupa cum se vede in ceel 2 filmulete:
- potentiometru digital dublu MCP4261 cu Arduino Mega (2)
- MCP4261 digital dual potentiometer with Arduino Mega (2)

Potentiometrul digital MCP41xxx

   Deoarece am gasit un modul radio cu TEA5767 pe care l-am conectat cu o placa Arduino, am constat ca ar fi util si un sistem de reglaj digital al volumului, asa ca am zis sa testez intai un potentiometru digital MCP41010 care are 10 kohmi, care se controleaza prin interfata SPI si are 256 trepte ca valoare (0...255).
   Am gasit cateva informatii utile pe net, dar m-am oprit la 2 dintre ele:
- Single/Dual digital Potentiometer (MCP41xxx, MCP42xxx) de pe site-ul www.arduino-projekte.de/
- MCP41010 Digital Potentiometer Arduino User Manual de pe site-ul Henry’s Bench
   Eu am avut libera o placa Arduino Mega, asa ca am adaptat sketch-ul gasit in cel de-al doilea articol, punand si un afisaj alfanumeric 1602 cu interfata i2c, sketch-ul folosit de mine fiind MCP41xxx_lcd1602_i2c_test.ino.
   Schema de test este:

  La primele teste, din cauza unui breadboard de calitate slaba, la trimiterea comenzii de 0, aveam o valoare foarte mare a ternsiunii pe divizorul rezistiv, in loc de cativa mV, aveam cca 580mV.
  Am facut repede 2 filmulete:
- test potentiometru digital MCP41010 si Arduino Mega
- test with MCP41010 digital potentiometer and Arduino Mega
   Initial, nu am realizat ca e ceva in neregula, stiind ca exista o rezistenta interna, dar dupa citirea  fisei tehnice am intels ca rezistenta minima are valoarea tipica de cca 52 ohmi sau in caz extrem 100 ohmi.
   Am refacut legaturile si am obtinut urmatoarele valori, cand potentiometrul este alimentat la 5V:
- treapta 0:
- treapta 255:
   Am conectat pinul potentiometrului la tensiunea de 3,3V, obtinand in acest caz:
- treapta 0:
- treapta 255:
   Se pot comanda mai multe potentiometre de genul asta, prin conectarea pinilor SI, respectiv SCK la pinii SPI corepsunzatori, iar pinii CS la pini diferiti, deoarece potentiometrul schimba valoarea doar daca pinul CS este la masa...
   Am refacut testele si am 2 noi filmulete...
- test potentiometru digital MCP41010 si Arduino Mega (2)
- test with MCP41010 digital potentiometer and Arduino Mega (2)