ciao a tutti. Ho realizzato un termometro con schermo lcd dove con due pulsanti si puo impostare un valore il quale mi abilita un'uscita. Avevo necessita di salvare questo dato sulla eeprom interna. Funziona tutto pero come ho fatto il programma mi va a scrivere sempre sulla spessa posizione quindi tra 10000 pressioni dei pulsanti la mia eeprom muore. =(
So come scrivere in "diverse posizioni" ma come faccio a richiamarle dopo un reset? spero di essermi spiegato bene.
Grazie mille.
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h> //include la libreria per il funzionamento dell'lcd
LiquidCrystal_I2C lcd(0x27,16,2);
int CpuMax; // soglia allrme
int CpuPiu;// aumenta valore
int CpuMeno;// diminuisce valore
float tempCpu; //dichiarazione di variabile
float tempVga; //dichiarazione di variabile
int tempPin1 = 0; //inizializzazione del pin di Arduino
int tempPin2 = 1; //inizializzazione del pin di Arduino
int posizione = 0; // posizione EEprom
int valore = 0; // valore EEprom
void setup() {
lcd.init(); // initialize the lcd
lcd.backlight();
pinMode(6,OUTPUT);
pinMode(2,INPUT);// CpuPiu
pinMode(3,INPUT); // CpuMeno
valore= EEPROM.read(posizione); //lettura eeprom
}void loop() {
lcd.setCursor(0, 0); // setta il cursore sulla prima riga al primo carattere
lcd.print("cpu "); // stampa della prima riga sull'lcd
tempCpu = analogRead(tempPin1); //lettura valore del sensore
tempCpu = (5* tempCpu*100)/1024 ; //conversione del dato analogico in temperatura
lcd.print(tempCpu); // stampa la temperatura
lcd.print( (char) 223 ); //stampa il pallino//
lcd.setCursor(12, 0);// setta il cursore sulla prima riga al 12 carattere
lcd.print("T");// stampa della prima riga sull'lcd
lcd.print(valore);// stampa della prima riga sull'lcd
lcd.print( (char) 223 );
lcd.setCursor(0, 1); // setta il cursore sulla seconda riga al primo carattere
lcd.print("Vga "); // stampa della seconda riga sull'lcd
tempVga = analogRead(tempPin2);//lettura valore del sensore
tempVga = (5 * tempVga * 100)/1024;//conversione del dato analogico in temperatura
lcd.print(tempVga); // stampa la temperatura
lcd.print( (char) 223 );
delay(2000);
if (tempCpu > CpuMax)
{
digitalWrite(6, HIGH); // abilita peltier}
if (tempCpu < CpuMax-2)
{
digitalWrite(6, LOW); // disabilita peltier}
CpuPiu=digitalRead(2);
if (CpuPiu==HIGH)
{
CpuMax=CpuMax+1;
valore=valore+1;
EEPROM.write(posizione,valore); // scrittura eeprom}
CpuMeno=digitalRead(3);
if (CpuMeno==HIGH)
{
CpuMax=CpuMax-1;
valore=valore-1;
EEPROM.write(posizione,valore); // scrittura eeprom}
}