0 Membros e 2 Visitantes estão a ver este tópico.
#include <Wire.h> // Para a EEPROM 24LC256, assim chamamos as bibliotecas i2c#define eeprom 0x50 // endereço da eeprom já shiftadovoid setup(void){ Wire.begin(); // Iniciar ligações i2c Serial.begin(9600); // Assim podemos ver qualquer coisa na consola serial unsigned int address = 0; //endereçamento a 2 bytes Serial.println("A escrever o melhor numero de sempre nos 10 primeiros bytes!"); for(address = 0; address<10; address++) writeEEPROM(eeprom, address, '3'); // Va pub a mim! Encher os 10 primeiros bytes com o número 3 Serial.println("Vamos ler se esta tudo ok, deves ver 33, 33, 33, 33... Vá 10x 33"); for(address = 0; address<10; address++) { Serial.print(readEEPROM(eeprom, address), HEX); Serial.print(", "); }}void loop(){}//-------Rotinas para EEPROMS i2c por Daniel Gonçalves a.k.a. Tr3s------// Podem usar estas rotinas à vontade para projectos particulares. // Para fins comerciais entrar em contacto com we_real_cool@hotmail.com// Partilhem com apenas com o meu concentimento. // Se virem este código noutro sitio sem ser [url=http://www.lusorobotica.com]www.lusorobotica.com[/url] avisem de imediato para we_real_cool@hotmail.com!void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) { Wire.beginTransmission(deviceaddress); Wire.send((int)(eeaddress >> 8)); // MSB Wire.send((int)(eeaddress & 0xFF)); // LSB Wire.send(data); Wire.endTransmission();}byte readEEPROM(int deviceaddress, unsigned int eeaddress ) { byte rdata = 0xFF; Wire.beginTransmission(deviceaddress); Wire.send((int)(eeaddress >> 8)); // MSB Wire.send((int)(eeaddress & 0xFF)); // LSB Wire.endTransmission(); Wire.requestFrom(deviceaddress,1); if (Wire.available()) rdata = Wire.receive(); return rdata;}// Por Daniel Gonçalves a.k.a. (t.c.p.) Tr3s, para [url=http://www.lusorobotica.com]www.lusorobotica.com[/url]
oh yeah!!! muito obrigado tr3s!!!! por acaso tenho aqui uma eprom da microchip...so nao sei qual é nunca a usei muito por isso nao sei bem o potencial disto...vou por um exemplo de uma coisita que tou a fazer...imagina que o arduino recebe um determinado dado por serie e eu quero que ele escreva esse dado num lcd (por exemplo do 3310) mas em forma de grafico.....se programar a eprom para os dados do grafico fico com mais espaço livre no arduino, certo?ps: acho que foi desta que queimei o meu arduino
Bastante interessante Só não percebi muito bem esta parte "Os pinos A0 a A2 servem para indicar o endereço da eeprom no bus i2c, se estiverem todos ligados a GND o endereço no Arduino é 0x50. Assim, conseguimos ter até 8 eeproms no mesmo bus fazendo 2Mbit de memória!" A verdade é que ainda não estive a ver muito bem a comunicação I2C, se calhar é por isso.