fratello Postat Februarie 14 Autor Partajează Postat Februarie 14 Am epuizat toate variantele (si rabdarea). Invariabil se blocheaza Arduino cu displayul de 1.3", dupa un timp nedefinit. Nu mai am decat aceste solutii : -folosesc displayul mic (hm...) -incerc cu ESP32 ??? Dar asta inseamna sa o iau de la inceput, nu am mai folosit aceasta placa si imi e teama ca nu cumva, din cauza displayului, rezultatul final sa fie acelasi... Link spre comentariu
cristi7521 Postat Februarie 14 Partajează Postat Februarie 14 Folosesti acelasi program pentru ambele afisaje OLED? Daca da, e clar ca e din display. Poti incerca sa adaugi rezistentele pe liniile SCL si SDA ca in schema postata de tine la pagina 2, normal displayul le are incluse, dar e posibil ca una dintre ele sa nu fie lipita bine si nu face contact continuu ESP32 nu masoara foarte bine semnale analogice. Link spre comentariu
fratello Postat Februarie 14 Autor Partajează Postat Februarie 14 (editat) Multumesc. 1. Acum ma duc sa lipesc niste rezistente de pull-up (desi, daca sunt ok ca valoare si bine lipite, nu le cresc valoarea punand altele in serie )? 2.Da, am citit ca rezolutia ADC pe 12 biti la ESP32 este mai proasta ca rezolutia pe 10 biti la Arduino ... Ce noroc de bataie de cap am eu :(. LE : Nicio schimbare. Intepeneste afisarea, intepeneste si serial monitorul... Editat Februarie 14 de fratello Link spre comentariu
zvonacfirst Postat Februarie 14 Partajează Postat Februarie 14 @fratello, desi nu cred ca am timp sa testez pana in weekend, spune-mi te rog care este softul pe care il folosesti acum cu OLED de 1.3" si se blocheaza. Vreau sa incerc si eu montajul tau. Ar fi ok si o schema daca ai. Link spre comentariu
fratello Postat Februarie 14 Autor Partajează Postat Februarie 14 (editat) Toate versiunile de soft se blocheaza cu display de 1.3" Schema este in postul #1 Acum folosesc softul din postul #1, cu adaugirile lui Nico (pentru monitorizare pe serial a temperaturii). #include "U8glib.h" #include <OneWire.h> #include <DallasTemperature.h> #include <SPI.h> #define ONE_WIRE_BUS 2 // pin of DS senzor DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress tempDeviceAddress; //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // this is for SSD1306 U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // this is for SH1106 const int analogInput = 0; float vout = 0.0; float vin = 0.0; float R1 = 100000.0; // resistance of R1 (100K) float R2 = 10000.0; // resistance of R2 (10K) int value = 0; double temp; void setup() { Serial.begin(38400); pinMode(analogInput, INPUT); sensors.begin(); sensors.setResolution(tempDeviceAddress, 12); } void loop(){ // read the value at analog input value = analogRead(analogInput); vout = (value * 5.0) / 1024.0; vin = vout / (R2/(R1+R2)); if (vin<0.09) { vin=0.0;//statement to quash undesired reading ! } // read the temperature sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); if (tempC != DEVICE_DISCONNECTED_C) { temp=tempC; } else { temp= 99.9; //here error for no sensor !!!! } // prepare to display u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); Serial.println(tempC); delay(800); } //----------------------------------------------- void draw(void) { u8g.setFont(u8g_font_helvB24r); // select font // u8g.setFont(u8g_font_profont29r); // another font // u8g.setFont(u8g_font_fub20r); // idem // u8g.setFont(u8g_font_fur20r); // ibidem u8g.drawRFrame(0, 30, 128, 32, 10); // draw frame with rounded edges if (vin>9.99) { u8g.setPrintPos(20,25); } else { u8g.setPrintPos(38,25); } u8g.println(vin,1); //Print the voltage u8g.setPrintPos(84,25); u8g.println(" V"); if ((temp<0)&& (abs(temp)<9.9)){ u8g.setPrintPos(28,60); u8g.println(temp,1); //Print the temperature u8g.drawCircle(87,40,4); u8g.drawCircle(87,40,3); u8g.println(" C "); } else if (temp<0) { u8g.setPrintPos(10,60); } else if (temp>9.99){ u8g.setPrintPos(20,60); } else{ u8g.setPrintPos(38,60); } u8g.println(temp,1); //Print the temperature u8g.drawCircle(88,40,4); u8g.drawCircle(88,40,3); u8g.println(" C"); } Intre timp am primit si raspuns de la Olikraus Editat Februarie 14 de fratello Link spre comentariu
nico_2010 Postat Februarie 14 Partajează Postat Februarie 14 @fratello: posteaza o fotografie fata-verso cu afisorul buclucas. Are 4 sau 6 pini? Link spre comentariu
cimitavita Postat Februarie 15 Partajează Postat Februarie 15 Un display nu trebuie mai întâi inițializat? Dacă îi oprești alimentarea, fără inițializare cum mai pornește? Iar inițializarea de obicei se face o singură dată la începutul programului. Asta înseamnă că numai resetul microcontrolerului poate să inițializeze displayul. Programul a ieșit enorm de mare pentru un simplu voltmetru și un termometru. Încă un pic, și se ajunge la Windows Un microcontroler cu 2K de flash și 128 octeți SRAM ar fi fost mai mult decât suficient pentru un protocol 1-wire și un display grafic micuț. Link spre comentariu
fratello Postat Februarie 15 Autor Partajează Postat Februarie 15 Of...Am crezut ca s-a rezolvat, prin adaugarea rezistentelor de pull-up...L-am pornit aseara, pe la ora 7 ; la 2 inca functiona. Dar dimineata era intepenit :( ; a functionat deci cateva ore. Urmatorul display il voi primi mai la primavara (comandat pe Ali, acum e sarbatoare la ei). @Nico : are 4 pini, voi posta dupa-amiaza poze cu el, dar este exact acesta (de aici l-am luat). @Antemir : displayul nu are pin reset (doar SCK si SDA). @Cimitavita : ai dreptate ; am si o versiune muuult mai mica (in topic mai in urma), dar vreau eu musai cu aceste cifre mari, frumoase Va multumesc tuturor pentru implicare si suport ! O zi frumoasa ! Link spre comentariu
nico_2010 Postat Februarie 15 Partajează Postat Februarie 15 Masoara valoarea rezistentei R3 si vezi daca are valoarea de 10k. Mi se pare ciudat marcajul. Daca are alta valoare, inlocuieste-o cu una de 10k si verifica din nou functionarea Link spre comentariu
cristi7521 Postat Februarie 15 Partajează Postat Februarie 15 01C inseamna 10k https://cdn-reichelt.de/documents/datenblatt/A900/RESISTORMARKINGCODES060351(2).pdf Link spre comentariu
kinderu56 Postat Februarie 15 Partajează Postat Februarie 15 codu la r3 este 01C si este de 10k Link spre comentariu
nico_2010 Postat Februarie 15 Partajează Postat Februarie 15 @fratello: masoara te rog curentul absorbit de afisor. Mersi pt informatia referitoare la rezistenta Link spre comentariu
fratello Postat Februarie 15 Autor Partajează Postat Februarie 15 Consum 9-11 mA. Link spre comentariu
fratello Postat Februarie 16 Autor Partajează Postat Februarie 16 (editat) Update : -am mutat alimentarea displayului, de la 3v3 de pe placa Arduino, direct la 5v din sursa cu 7805 -am pus rezistente de pull-up de 10k direct pe pinii displayului -am programat, din nou, cu codul postat putin mai sus Montajul a functionat, fara sa se mai blocheze, de aseara, de la orele 19, pana dimineata, la ora 7 (cand am oprit alimentarea). Voi relua testele in acest weekend. Multumesc pentru implicare si suport ! Sa aveti o zi placuta ! Editat Februarie 16 de fratello Link spre comentariu
zvonacfirst Postat Februarie 16 Partajează Postat Februarie 16 De aceea este bine sa postezi o schema completa. Poate ca ai fi rezolvat mai repede. 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