Vizitator Postat Martie 3, 2018 Partajează Postat Martie 3, 2018 Salut! A folosit cineva o memorie externa EEPROM, pt extinderea librariei? De exemplu: Am un Arduino NANO, si vreau sa incarc in memoria externa, EEPROM I2C, anumite caractere, texte,... pt a fi afisate pe un display (LCD2004, OLED,...). S-au, vreau sa am unele pagini de meniu, care acestea nu trebuie sa stea in NANO. De fapt nu este loc. Am cautat pe net, dar nu am gasit un exemplu concret: cum incarc EEPROM-ul de exemplu!!! Exista o libraie EEPROMex library, dar nu am inteles mai nimic. Am si Arduino Mega, dar nu imi incape in cutiuta montajului. Daca nu gasesc, o solutie ar fi cu STM32n. Dar cu acesta, nu am lucrat deloc. P.S.: Doar pentru cei care au experimentat, sau care cunosc. Link spre comentariu
Vizitator Postat Martie 3, 2018 Partajează Postat Martie 3, 2018 memoria aia eeprom i2c, este asa...universala sau are si ea un nume ? Link spre comentariu
Vizitator Postat Martie 3, 2018 Partajează Postat Martie 3, 2018 (editat) Imi cer scuze, am uitat sa mentionez si memoria care vreau sa o folosesc (desi, avem dreptul sa reeditam oricand vrem, dar nui frumos): 24LC32,...24LC256, 24LC512, sau din seria 93LCxx. Editat Martie 3, 2018 de Vizitator Link spre comentariu
deejay2k1 Postat Martie 3, 2018 Partajează Postat Martie 3, 2018 ceea ce vrei tu sa faci are 2 ramuri: partea "simpla" e sa citesti eeprom-ul #include <Wire.h> #include <extEEPROM.h> #define memAddr 0x50 #define pageSize 32 #define refreshPeriod 1000 const uint32_t totalKBytes = 32; //for read and write test functions extEEPROM eep(kbits_32, 1, 32); //device size, number of devices, page size uint8_t eepData[pageSize]; void eeReadPage(int pageNo) { uint32_t addr = (uint32_t)pageNo * pageSize; eep.read(addr, eepData, pageSize); } void eeWritePage(int pageNo) { uint32_t addr = (uint32_t)pageNo * pageSize; eep.write(addr, eepData, pageSize); } char* getMsgText(int cardinal) { eeReadPage(cardinal); return (char*)eepData; } void setMsgText(int cardinal, String newMessage) { int i = 0; while ((i < pageSize - 1) && (newMessage[i] != 0x00)) { eepData[i] = newMessage[i]; i++; } while (i < pageSize) { eepData[i] = 0x00; i++; } eeWritePage(cardinal); } void setup() { Serial.begin(9600); uint8_t eepStatus = eep.begin();//eep.twiClock400kHz); //go fast! if (eepStatus) { Serial.print(F("extEEPROM.begin() failed, status = ")); Serial.println(eepStatus); } } void loop() { unsigned long ticksNow = millis(); static long ticks = 0; if (ticksNow > (ticks + refreshPeriod)) { ticks = ticksNow; Serial.println(getMsgText(0)); } } de scris in eeprom, ori folosesti functiile din sketch, //setMsgText(int cardinal, String newMessage); setMsgText(0, "Hello World!"); ori il scrii altfel (extern) Link spre comentariu
nico_2010 Postat Martie 4, 2018 Partajează Postat Martie 4, 2018 Poti folosi ceea ce a scris userul deejay2k1, insa tine cont de faptul ca, functie de aplicatie, vei intampina probleme (ti se va bloca programul). STM32 nu are EEPROM si daca vei folosi stm32arduino vei ajunge foarte repede la limita memoriei flash (depinde de librariile folosite). Link spre comentariu
Vizitator Postat Martie 4, 2018 Partajează Postat Martie 4, 2018 (editat) Da, se pare un pic cam complicat. Proiectul pe care vreau sa il fac, este un releu de timp multifunctional dar cu 4 relee, nu cum sunt acestea Deocamdata proiectul este demo https://www.youtube.com/watch?v=15fQBlMZ8Yk. Am vrut sa am mai multe functii, numarator invers (cum este in fisierul video), numarator ore de functionare pompe, si inversarea acestora dupa n ore de functionare pentru intalatiile hidrofor cu mai multe pompe, comutarea alternativa a doua motoare pe un singur convertizor de frecventa (schema realizata cu relee de timp pt delay accelerare/decelerare motor, care este functionala si a costat destul de mult, fata de un releu de timp realizat cu arduino),.. Cred ca pana la urma, ca sa nu ma complic, o sa fac programul doar pentru aplicatia curenta, si o sa am doar librarii pe care o sa le atasez in cod, in functie de aplicatie. Asa cred ca o sa scap de probleme - blocare microcontroler sau display -, meniu complex,... Am vrut sa folosesc memoria EEPROM I2C pentru a avea librariile cu functii a releului de timp, si ele sa fie accesate in functie de setarile utilizatorului. Daca fac releul de timp dedicat "aplicatiei", releul nu mai poate fi refolosit decat pentru acel scop sau mod de utilizare. Multumesc mult de ajutor deejay2k1 si nico_2010. Editat Martie 4, 2018 de Vizitator 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