tag:blogger.com,1999:blog-390453114990638376.post7339320939774345269..comments2024-03-14T17:23:58.371+01:00Comments on danielealberti.it: Memorizzare un valore nella EEPROM di ArduinoDanielehttp://www.blogger.com/profile/09720964861202313121noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-390453114990638376.post-30770328689514378862018-08-02T11:42:04.280+02:002018-08-02T11:42:04.280+02:00Salve a voi tutti! Premetto che, sono un novello a...Salve a voi tutti! Premetto che, sono un novello apprendista per quanto concerne Arduino e non ho mai avuto a che fare con la programmazione nonostante la mia passione per l'elettronica ma sempre a livello hobbistico quindi da...praticone ovvero quelli che facciamo più danni...AHAHAH!!!!<br />Allora, la mia esigenza è questa. Devo fare girare due motori ovvero il primo motore controlla un oggetto e il secondo un'altro, nella fattispecie un roller e un condensatore, sono un radioamatore e la mia idea è quella di, una volta trovato l'accordo nelle varie bande, memorizzare la posizione dei due motorini e dopo tramite un commutatore rotativo selezionare la banda da leggere eventualmente su un display I2C e fare in modo così che si trovi l'accordo memorizzato. Questo è il mio problema...al momento...AHAHAH!!!<br />Che soluzione potrebbe esserci? Ribadisco....non conosco la programmazione e Arduino lo uso da qualche mese...."non parlate difficile che non vi capisco"...AHAHAH!!!<br />Ecco...dovreste accompagnarmi passo passo....a proposito, i motori non sono passo passo ma normalissimo motori a 12 V già ridotti.<br />Grazie anticipatemente <br />Mario Anonymoushttps://www.blogger.com/profile/10389599247156906317noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-69215206708285094632018-03-10T11:28:53.184+01:002018-03-10T11:28:53.184+01:00Grazie Daniele.
Ho rifatto il circuito, e i 3 puls...Grazie Daniele.<br />Ho rifatto il circuito, e i 3 pulsanti ci stanno... <br />Ma ho una domanda:<br /><br />Ho integrato (vedi sotto) al mio sketch il tuo. Ma ora come faccio a modificare la mia variabile (setpoint) entro i valori di temperatura 0-100?<br /><br />/*<br />Il programma misura la temperatura tramite sensori DS18B20 per regolare la rotazione dei due ventole da PC a 12V 0,25A, <br />per controllare la temperatura della birra in fermentazione usando un terzo DS18B20 con funzione PID<br />L'uscita del PID pilota un circuito H-bridge per le celle di Peltier<br />*/<br /><br />#include <br />#include // libreria di gestione del display lcd Grove I2C<br />#include // dichiarazione di utilizzo della libreria DallasTemperature<br />#include <br />#include <br /><br />/* Definizioni globali */<br /><br />// Il terminale data del sensore è connesso alla porta 4 di Arduino<br />#define ONE_WIRE_BUS 4<br /><br />// Imposta la comunicazione oneWire per comunicare<br />// con un dispositivo compatibile<br />OneWire oneWire(ONE_WIRE_BUS);<br /><br /><br />// Passaggio oneWire reference alla Dallas Temperature. <br />DallasTemperature sensor(&oneWire);<br /><br />double Setpoint, Input, Output;<br /> <br />int SNS_A = A0; // Legge corrente<br />int LPWM = 9; // H-bridge leg 1 ->LPWM<br />int enL = 8; // H-bridge enable pin 1 -> L_EN<br />int RPWM = 6; // H-bridge leg 2 ->RPWM<br />int enR = 7; // H-bridge enable pin 2 -> R_EN<br /><br /><br />//Inizializzazione del PID, impostazione a DIRECT (frigo), e dell'LCD<br />PID myPID(&Input, &Output, &Setpoint,2,5,1, REVERSE);<br />rgb_lcd lcd ;<br /><br />// Pulsanti<br /><br />const int salva = 2;<br />const int su = 12;<br />const int giu = 13;<br /><br />byte datoeeprom;<br />int statosu = 0;<br />int statogiu = 0;<br />int statosalva = 0;<br /><br /><br /><br />void setup() <br />{<br /> Setpoint = 18; //definizione del set point<br /> Serial.begin(9600);<br /> Serial.println("Temperatura PIDout Corrente\n");<br /> lcd.begin(16, 2);<br /> digitalWrite(4, HIGH); // turn on pull-up resistor<br /> <br />// Pulsanti<br />pinMode(salva, INPUT);<br />pinMode(su, INPUT);<br />pinMode(giu, INPUT);<br />digitalWrite(2, HIGH);<br />digitalWrite(12, HIGH);<br />digitalWrite(13, HIGH);<br />datoeeprom = EEPROM.read(1); //leggi il dato salvato nella eeprom nello slot 1<br /><br /> <br /> <br /> //turn the PID on<br /> myPID.SetMode(AUTOMATIC);<br /> <br /> // Start up the OneWire library<br /> sensor.begin();<br /> <br /> <br /> // Configurazione PIN direzione e freno H-bridge<br /> pinMode(LPWM, OUTPUT); <br /> pinMode(RPWM, OUTPUT); <br /> pinMode(enL, OUTPUT);<br /> pinMode(enR, OUTPUT);<br /> digitalWrite(enL, HIGH);<br /> digitalWrite(enR, HIGH);<br /> <br />}<br /><br />void loop() {<br /> sensor.requestTemperatures();<br /> // inizio loop PID <br /> double temp = sensor.getTempCByIndex(0); // legge il valore della temperatura e la memorizza nella var. temp.<br /><br /> Input = temp; //temperatura passata in ingresso a PID<br /> myPID.Compute(); <br /> <br /> digitalWrite(LPWM, LOW);<br /> digitalWrite(RPWM,Output); //PWM con segnale in uscita pari a uscita PID<br /> <br /> Serial.print( temp); // invia i valori al' LCD<br /> Serial.print("\t");<br /> Serial.print((Output/255*100));<br /> Serial.print("\t");<br /> Serial.print(digitalRead(SNS_A));<br /> Serial.print("\n");<br /><br /> lcd.setCursor(3,0);<br /> lcd.print("Temp:");<br /> lcd.print(sensor.getTempCByIndex(0));<br /><br /> <br /> lcd.setCursor(3,1);<br /> lcd.print("S.P.:");<br /> lcd.print(Setpoint);<br /><br />// fine loop PID<br /><br />// Loop per pulsanti <br />statosu = digitalRead (su);<br />if( statosu == LOW)<br />{datoeeprom++;} //incrementa il valore alla pressione del pulsante "su"<br /><br />statogiu = digitalRead (giu);<br />if( statogiu == LOW)<br />{datoeeprom--;} //decrementa il valore alla pressione del pulsante "giu"<br /><br />statosalva = digitalRead (salva);<br />if( statosalva == LOW)<br />EEPROM.write(1, datoeeprom); //salva il dato nello slot 1 della eeprom<br /><br />}Anonymoushttps://www.blogger.com/profile/14785551919014979716noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-84860299332908289072018-03-09T10:03:57.397+01:002018-03-09T10:03:57.397+01:00Ciao Filippo,
potresti usare la funzione Millis pe...Ciao Filippo,<br />potresti usare la funzione Millis per capire che "un dato tempo" sia trascorso.<br />Trovi un esempio qui:<br />http://www.danielealberti.it/2013/06/blink-con-millis-anziche-delay.html<br />Danielehttps://www.blogger.com/profile/09720964861202313121noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-3496212096493872042018-03-09T09:02:18.130+01:002018-03-09T09:02:18.130+01:00Ciao Daniele,
Io dovrei aumentare/diminuire un set...Ciao Daniele,<br />Io dovrei aumentare/diminuire un setpoint di un PID tramite due pulsanti, e visualizzare il valore su LCD I2C.<br />Nel mio progtto mi sono avanzati solo due pin digitali, quindi vorrei fare in modo che la variabile sia scritta in eeprom, non so, dopo un dato tempo.<br /><br />Mi potresti aiutare?<br />Grazie.<br />FilippoUnknownhttps://www.blogger.com/profile/10681666120709357252noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-49818627078630541282018-02-22T21:28:29.064+01:002018-02-22T21:28:29.064+01:00Ciao Samuele, se non ti serve particolare precisio...Ciao Samuele, se non ti serve particolare precisione puoi salvare tutti i valori che ti servono dividendoli prima per 10 (ad esempio per 1000 salvi 100).<br />In alternativa puoi convertire il valore in binario e spezzarlo su 2 byte, poi puoi ricomporlo con il comando "shiftando" i bit. (La seconda opzione è leggermente più macchinosa).<br />Spero di essere stato utile, ciao!Danielehttps://www.blogger.com/profile/09720964861202313121noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-7725601296967871692018-02-22T09:08:17.341+01:002018-02-22T09:08:17.341+01:00Salve Daniele ho un quesito da porti, ma se dovrei...Salve Daniele ho un quesito da porti, ma se dovrei memorizzare valori superiori a 255?? Come potrei fare? GRAZIE in anticipo!!Anonymoushttps://www.blogger.com/profile/16267043413096692321noreply@blogger.comtag:blogger.com,1999:blog-390453114990638376.post-2892677796375655072014-06-14T16:59:54.159+02:002014-06-14T16:59:54.159+02:00Mi sto appassionando perchè comincio a capire qual...Mi sto appassionando perchè comincio a capire qualche cosa, grazie a te Daniele!!!!!!!!!!LUCAhttps://www.blogger.com/profile/11491241129525014265noreply@blogger.com