fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 (editat) Este vorba despre modulul dc-dc din poza. Dar nu, nu cred ca este vina lui ... Am incarcat softul original al voltmetrului si, la fel, se blocheaza .... Ma dispera !!! Nu inteleg ce se intampla ... Oare displayul are o problema ??? Editat Februarie 11, 2024 de fratello Link spre comentariu
daniels Postat Februarie 11, 2024 Partajează Postat Februarie 11, 2024 Nu este o situatie similara, dar alimentam un ceas de la un modul (din ala care se pune pe placa de test). Ceasul se reseta la valorile initiale. De cand alimentez de la sursa de 12V prin intermediul unui CI 7805 nu mai am probleme. Link spre comentariu
zvonacfirst Postat Februarie 11, 2024 Partajează Postat Februarie 11, 2024 Sugestie: conecteaza NANO prin pinii ICSP la un programator USBASP si utilizeaza AVRDUDESS. In prima faza sunt curios daca detecteaza corect uC-ul de pe placa NANO. Apoi incercam sa scriem softul pe NANO stergand bootloaderul. Ulterior vom rescrie bootloaderul si softul tau. Vom vedea cum se comporta in cele doua situatii. Link spre comentariu
fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 1. Arduino il alimentez si eu prin 7805 (vezi schema in postul #1). 2.Voi incerca si cu AVRDUDESS 3.Am sters partea de termometru din softul "meu", am pastrat doar voltmetrul. Pana acum functioneaza OK (de vreo 1 ora) // doar voltmetru // Librarie grafica U8G2LIB !!! #include "U8g2lib.h" #include <SPI.h> #include <avr/wdt.h> U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); 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; void setup() { u8g2.begin(); pinMode(analogInput, INPUT); wdt_disable(); wdt_enable(WDTO_2S); // set watchdog to 2 secs } void loop(){ u8g2.clearBuffer(); // clear the internal memory // 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 ! } wdt_reset(); u8g2.setFont(u8g2_font_helvB24_tf); // select font if (vin>9.99) { u8g2.setCursor(20,25); } else { u8g2.setCursor(38,25); } u8g2.println(vin,1); //Prints the voltage u8g2.setCursor(84,25); u8g2.println(" V"); u8g2.updateDisplay(); } Link spre comentariu
fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 (editat) Nu reusesc nici cu Avrdudess... LE : Am reusit urmand acest tutorial : Prezenta condensatorului cred ca a facut diferenta. Editat Februarie 11, 2024 de fratello Link spre comentariu
fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 (editat) Rezumand, fiindca am amestecat rau lucrurile, imi cer iertare... 1.Am rezolvat cu rescrierea bootloaderului. Putem considera subiectul inchis. 2.Partea de voltmetru (scrisa de mine cu U8g2lib) functioneaza bine, nu s-a mai blocat Arduino. 3.Partea de termometru (scrisa de mine cu U8g2lib) cauzeaza blocarea Arduino !!! // Doar termometru // Librarie grafica U8G2LIB !!! #include "U8g2lib.h" #include <OneWire.h> #include <DallasTemperature.h> #include <SPI.h> #include <avr/wdt.h> #define ONE_WIRE_BUS 2 //Pin DS al senzorului DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress tempDeviceAddress; U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); double temp; void setup() { u8g2.begin(); sensors.begin(); sensors.setResolution(tempDeviceAddress, 12); wdt_disable(); wdt_enable(WDTO_2S); // set watchdog to 2 secs } void loop(){ u8g2.clearBuffer(); // clear the internal memory sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); if (tempC != DEVICE_DISCONNECTED_C) { temp=tempC; } else { temp= 99.9; //aici mesajul de eroare senzor !!!! } wdt_reset(); u8g2.setFont(u8g2_font_helvB24_tf); // select font u8g2.drawRFrame(0, 30, 128, 32, 10); // draws frame with rounded edges if ((temp<0)&& (abs(temp)<9.9)){ u8g2.setCursor(28,60); u8g2.println(temp,1); //Prints the temperature u8g2.drawCircle(87,40,4); u8g2.drawCircle(87,40,3); u8g2.println(" C "); } else if (temp<0) { u8g2.setCursor(10,60); } else if (temp>9.99){ u8g2.setCursor(20,60); } else{ u8g2.setCursor(38,60); } u8g2.println(temp,1); u8g2.drawCircle(88,40,4); u8g2.drawCircle(88,40,3); u8g2.println(" C"); u8g2.updateDisplay(); } Editat Februarie 11, 2024 de fratello Link spre comentariu
fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 Am apelat la ChatGPT care mi-a scris urmatorul cod : // Doar termometru - ChatGPT // Librarie grafica U8G2LIB !!! #include "U8g2lib.h" #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 // Poate fi modificat în funcție de cum este conectat senzorul DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); double temp; void setup() { // Inițializăm afișajul OLED u8g2.begin(); // Inițializăm comunicarea cu senzorul DS18B20 sensors.begin(); } void loop(){ sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); if (tempC != DEVICE_DISCONNECTED_C) { temp=tempC; } else { temp= 99.9; //aici mesajul de eroare senzor !!!! } u8g2.clearBuffer(); u8g2.setFont(u8g2_font_helvB24_tf); // select font u8g2.drawRFrame(0, 30, 128, 32, 10); // draws frame with rounded edges u8g2.setCursor(20,60); u8g2.println(temp,1); u8g2.drawCircle(88,40,4); u8g2.drawCircle(88,40,3); u8g2.println(" C"); u8g2.sendBuffer(); delay,50; } Din pacate .... acelasi comportament : dupa un timp se blocheaza functionarea. Nu se mai aprinde/clipeste ledul L si Arduino poate fi resetat din buton. Dar ce folos :( .... Link spre comentariu
nico_2010 Postat Februarie 11, 2024 Partajează Postat Februarie 11, 2024 A. Cum spuneammai devreme, dar vorbeam de unul singur: verifica fusebits. Trebuie sa arate asa: nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA nano.menu.cpu.atmega328.bootloader.extended_fuses=0x05 La tine nu arata asa! B. Altfel ai depasit, in functionare cantitatea de RAM si s-a dus de suflet. C. Schimba DS18B20 cu un alt senzor din acelasi tip, dar achizitionat din alta sursa decat de la chinezi si vezi daca face tot asa. Link spre comentariu
fratello Postat Februarie 11, 2024 Autor Partajează Postat Februarie 11, 2024 A. Cum verific ? Cu Avrdudess ? Exista si alta posibilitate ? B. Adica ? M-am gandit ca, la un moment dat, memoria "da pe afara", dar ce as putea face in acest sens ? C. Voi incerca cu unul fara capsula metalica. Multumesc mult ! Link spre comentariu
nico_2010 Postat Februarie 12, 2024 Partajează Postat Februarie 12, 2024 A. Da. B. La co plilare, Arduino IDE iti da un mesaj referitor la cantitatea de Flash si Ram ocupate. In functionare, s-ar putea ca memoria Ram (aia dinamica) sa se umple si atunci uC se blocheaza. Link spre comentariu
fratello Postat Februarie 12, 2024 Autor Partajează Postat Februarie 12, 2024 Multumesc ! Fiindca nu am nimic de pierdut, voi incerca o "marire de memorie" . Link spre comentariu
cristi7521 Postat Februarie 12, 2024 Partajează Postat Februarie 12, 2024 Nu trebuie adaugat un delay necesar senzorului sa faca conversia? Pentru o rezolutie de 12 biti este 750ms Link spre comentariu
fratello Postat Februarie 12, 2024 Autor Partajează Postat Februarie 12, 2024 Am neglijat asta, mea culpa. Adaug delay(1000). Probleme, intr-adevar, cu memoria ... Link spre comentariu
Bandi Szasz Postat Februarie 12, 2024 Partajează Postat Februarie 12, 2024 (editat) Acum 1 oră, fratello a spus: Multumesc ! Fiindca nu am nimic de pierdut, voi incerca o "marire de memorie" . N-am stat sincer sa ascult tot video dar din titlu reiese ca se face "marire" la flash, tu ai probleme cu DRAM nu Flash, la memoria flash ai ocupat doar 63% acolo n-ar fi o problema daca se ocupa chiar 100% pentru ca e memorie statica. La un programel atat de simplu n-ai ce sa faci, OLED are nevoie de multa memorie RAM, ar mai fi o solutie daca vrei sa afisezi doar numere, era o librarie foarte minimalista pt OLED fara fonturi, iconite, etc... doar de afisat numere parca si ocupa foarte putin. Editat Februarie 12, 2024 de Bandi Szasz Link spre comentariu
fratello Postat Februarie 12, 2024 Autor Partajează Postat Februarie 12, 2024 (editat) Multumesc ! Sa incerc asta ? https://github.com/greiman/SSD1306Ascii/tree/master LE : Credeti ca se poate porta (ușor) programul intreg (termometru si voltmetru) pe Wemos D1 Mini ? Merita efortul ? Editat Februarie 12, 2024 de fratello 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