Apenas mais uma brincadeirinha de menino crescido. Escrever e ler na memória EEPROM via interface I2C. Seguem alguns materiais adicionais.

//CI 24LC02B - Memória EEPROM de 2KBit Comunicação Serial I2C
//Mestre é o Arduino UNO
//Escravo é a memória EEPROM CI 24LC02B
//Autor: Ismael Lopes da Silva

#include <Wire.h> //Biblioteca padrão da IDE Arduino

void setup()
  {
    Serial.begin(9600);
    Wire.begin();
    char vDadoEscrita[] = "EEPROM CI 24LC02B. Teste de escrita e leitura. Escrita e leitura por Byte.";  //String que será escrita na EEPROM 24LC02B
   
    for (int i=0; i < sizeof(vDadoEscrita); i++) //Imprimir na serial uma amostra do que será escrito na EEPROM
    {
      Serial.print(vDadoEscrita[i]);
    }

    Serial.println();
   
    for (int i=0; i < sizeof(vDadoEscrita); i++) //Mestre transmite comandos, endereços e dados de escrita para o escravo
    {
      Wire.beginTransmission(0x50); //Mestre transmite comando de partida (start) com o Byte de Controle de acesso a EEPROM 0x01010000 = 0x50
      Wire.write(i); //Transmite Byte que é o dado de endereço
      Wire.write(vDadoEscrita[i]); //Transmite o Byte que é o dado de escrita, cada caracter da String
      Wire.endTransmission(); //Transmite o comando de parada (stop)
      delayMicroseconds(6000); //Aguarda o tempo de escrita que é aproximadamente 3ms, portanto, por garantia o dobro do tempo tipico
    }
   
    Serial.println("EEPROM foi escrita...");

    for (int i=0; i < sizeof(vDadoEscrita); i++) //Mestre solicita dados do escravo, que são dados escrito na EEPROM
    {
      Wire.beginTransmission(0x51); //Mestre transmite comando de partida (start) com o Byte de Controle de acesso a EEPROM 0x01010001 = 0x51
      Wire.write(i); //Transmite Byte que é o dado de endereço de leitura da EEPROM
      Wire.endTransmission(); //Transmite o comando de parada (stop) e aguardará o envio do dado Byte da EEPROM
      Wire.requestFrom(0x51,1,true); //Comando para fazer leitura de um Byte
      if (Wire.available()) Serial.print((char)Wire.read()); //Lê o dados da EEPROM e imprime na serial
    }
    Serial.println();
    Serial.println("EEPROM foi lida...");
  }

void loop()
  {

  }

Exibições: 1289

Anexos

Responder esta

Respostas a este tópico

da uma olhada nesse aqui link

Wadeck, boa tarde.

Os códigos são bem parecidos, salvo as diferenças de hardware. Obrigado pela atenção e gostei por ter compartilhado. Um abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço