Salve, mi chiamo Claudio
mi sto avventurando nel mondo di Arduino, ho delle vecchie reminiscenze di Basic che usavo per gestire gli I/O dell porta parallela del PC.
Sto testando uno Sketch per colloquiare con la EEPROM esterna e funziona e ora lo andrò ad integrare nello Sketch di gestione dello stepper per memorizzare il senso di rotazione qualora dovesse mancare l'alimentazione, avrei bisogno dei seguenti chiarimenti:
1° Se sostituisco la 24C256 con una 24C64, il valore "0" viene letto come "255"
Ho visto che l'indirizzo delle EEprom fino alla 1024 ( con A1,A2,A3 a 0) è sempre lo stesso, ossia 80 o 0x50.
2° Se scrivo "0" leggo "0", se scrivo "1" leggo "1", ma se scrivo "2", leggo "7", il formato del dato che scrivo, deve essere scritto con qualche prefisso davanti ?
Allego lo Sketch
Grazie
#include<U+202C> <Wire.h>
byte num;
int EppAdr = 80;
void setup()
{
Wire.begin();
Serial.begin(9600);
// set the 24C256 eeprom address to 0
Wire.beginTransmission(EppAdr);
Wire.write(0); // address low byte
// Wire.write(0); // address high byte
Wire.endTransmission();
// read 1 byte, from address 0
// MI SERVE SAPERE ALL'AVVIO DEL PROGRAMMA CHE VALORE C'è NELLA MEMORIA ALL'INDIRIZZO "0"
Wire.requestFrom(EppAdr, 1);
while(Wire.available())
{
num = Wire.read();
}
}
void loop()
{
// write "1" to 24C256 eeprom at address zero
Wire.beginTransmission(EppAdr);
Wire.write(0); // address low byte
// Wire.write(0); // address high byte
Wire.write(1); // any more send starts writing
Wire.endTransmission();
// read 1 byte, from address 0
Wire.requestFrom(EppAdr, 1);
while(Wire.available()) {
num = Wire.read();
}
Serial.print("num = ");
Serial.println(num, DEC);
delay(500);
// write "0" to 24C256 eeprom at address zero
Wire.beginTransmission(EppAdr);
Wire.write(0); // address low byte
// Wire.write(0); // address high byte
Wire.write(0); // any more send starts writing
Wire.endTransmission();
// read 1 byte, from address 0
Wire.requestFrom(EppAdr, 1);
while(Wire.available()) {
num = Wire.read();
}
Serial.print("num = ");
Serial.println(num, DEC);
// next time loop runs, it should retrieve the
// same number it wrote last time... even if you
// shut off the power
delay(500);