Olá amigos!
Estou tentando fazer essa simples rotina de ler e escrever em uma EEPROM 24LC512 I / P,
mas sempre o valor retornado é 255. Eu já mudei de memória mas o resultado é o mesmo. Alguém sabe me dizer o que pode ser?
O código é esse abaixo:
#include "Wire.h"
#define EEPROM_I2C_ADDRESS 0x50
void setup()
{
Wire.begin();
Serial.begin(9600);
int address = 0;
byte val = 110;
writeAddress(address, val);
byte readVal = readAddress(address);
Serial.print("O valor retornado é: ");
Serial.println(readVal);
delay(10000);
}
void loop()
{
int address = 0;
byte val = 110;
writeAddress(address, val);
byte readVal = readAddress(address);
Serial.print("O valor retornado é: ");
Serial.println(readVal);
delay(1000);
}
void writeAddress(int address, byte val)
{
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((int)(address >> 8 )); // MSB
Wire.write((int)(address & 0xFF)); // LSB
Wire.write(val);
Wire.endTransmission();
delay(5);
}
byte readAddress(int address)
{
byte rData = 0xFF;
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((int)(address >> 8 )); // MSB
Wire.write((int)(address & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(EEPROM_I2C_ADDRESS, 1);
rData = Wire.read();
return rData;
}
Muito Obrigado!
Tags:
Oi 2CB, bom dia.
Primeiro uma recomendação que dou a todos amigos daqui.
Evite de colar code na área de texto. Anexe um arquivo com o code ou use o www.pastebin.com
Se você quiser pode remover o seu code postado e usar esta minha recomendação.
Depois, use o processo JACK para determinar o que é realmente seu problema.
Você tem certeza que o endereço está correto " EEPROM_I2C_ADDRESS 0x50 "?
Use este code para verificar isto. http://playground.arduino.cc/Main/I2cScanner
Com este code saberá o endereço correto e se a sua EEPROM se comunica corretamente com o arduino.
Rui
Obrigado Rui,
mas o resultado do código foi:
Scanning...
No I2C devices found
Acima está ligação
Oi 2CB, bom dia.
Você está usando os pinos A0 e A1 para comunicação I2C.
Estes pinos estariam corretos se a sua placa fosse um UNO.
Mas como você está usando um Leonardo, os pinos são outros.
São D2 e D3. Por isto voce recebe a msg "No I2C devices found".
Veja aqui os pinos de cada placa.
https://www.arduino.cc/en/Reference/Wire
Corrija e teste novamente com o I2Cscanner.
Se ainda assim tiver problema, coloque 2 resistores de 10k dos pinos de I2C para o +5V.
Pois estes pinos não tem resitor interno de pullup.
http://1.bp.blogspot.com/-4jsahEkSrpw/U0S3keOXfiI/AAAAAAAAETc/c9-F5...
Rui
Funcionou!!
Muito Obrigado Rui!!!
Oi 2CB, boa noite.
Por favor, acrescente a palavra RESOLVIDO antes do seu texto no titulo do tópico.
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por