Pulsante Incrementa/Pulsante Decrementa Variabile

Buongiorno! Ho appena acquistato Arduino 2009, premetto che sono poco esperto. Dovrei realizzare il seguente progetto: Premendo il pulsante (Incrementa) la variabile analogica PWM si incrementa, Premendo il pulsante (Decrementa)la variabile decrementa. Premetto che la variabile deve restare memorizzata anche togliendo e dando tensione ad Arduino. Ringrazio tutti

ciao, benvenuto. potresti iniziare dando un'occhiata qui: http://www.arduino.cc/playground/Main/InterfacingWithHardware#Switches http://www.arduino.cc/en/Reference/EEPROM

Grazie brainbooster Ho trovato questo, con qualche modifica dovrebbe funzionare Achille

http://www.andrewfrueh.com/electronics/?pageContent=fade_LED_with_button.htm

Ciao! brainbooster scusa se rompo Come di accennavo ho fatto la modifica, funziona!! L'unico problema non riesco a memorizzare il valore della variabile quando spengo e accendo Arduino. Come posso fare ? Grazie

segui il secondo link del mio primo post

mamorizzi la variabile nel primo bite di memoria della epoor e quando accendi vai a leggerlo nel setup

Grazie, funziona! Achille

ma se togli la corrente la e2prom non si cancella?

Ciao,Milionario Ho fatto le prove troppo in fretta, togliendo alimentazione si cancella. Per il momento ho deciso di sospendere il progetto, è troppo complicato per le mie capacità. Penso di utilizzare un PLC della Siemens programmato in AWL ,è un linguaggio che uso normalmente per lavoro. Achille

Penso di utilizzare un PLC della Siemens programmato in AWL

:'(

@milionario: http://it.wikipedia.org/wiki/EEPROM ... chi cerca ... ;)

ma non si cancella, hai sbagliato il programma.... dai posta il codice che lo vediamo insieme

ma non abbandonare arduino :'( :'(

le EEPROM lo so che non si cancellano quando togli corrente volevo sapere se lo faceva quella interna ad arduino http://arduino.cc/en/Reference/EEPROM lo dice anche qui

The microcontroller on the Arduino board has 512 bytes of EEPROM: memory whose values are kept when the board is turned off (like a tiny hard drive). This library enables you to read and write those bytes.

niente ero un attimo incerto grazie per la risposta e avermi fatto cercare!!! ;D

Buongiorno! a tutti
Ho deciso di non abbandonare Arduino, ho seguito il link http://www.arduino.cc/en/Reference/EEPROM ma non ho capito in che punto lo devo inserire e come fare.

Per i pulsanti Incrementa e Decrementa è tutto OK, ho modificato
http://www.andrewfrueh.com/electronics/?pageContent=fade_LED_with_button.htm

Questo è quello modificato
/*
The circuit:

  • LED attached from digital pin 9 to ground.
  • Button with one leg connected to digital pin 8 and ground through a 10k resistor, while the other leg is connected to source voltage.
  • Button with one leg connected to digital pin 7 and ground through a 10k resistor, while the other leg is connected to source voltage.

*/

// You can change the settings here
// >>
// fadeTimerFreq is the clock speed in milliseconds, lower numbers are faster
const int fadeTimerFreq = 20;
// fadeTime is the total time it will take to complete the ease (in milliseconds)
const int fadeTime = 3000;
// <<

// additional variable for the timer
int currentTime, fadeTimerLast;

// these constant variables store the pin numbers
const int ledPin = 9;
const int buttonPin = 8; //Incrementa
const int decrisePin = 7; //Decrementa
const int fadeRange = 254;

// the amount to step the fade; must be between 1 and the fadeRange
const float fadeStep = (float(fadeTimerFreq) / (fadeTime)) * fadeRange;

int buttonValue, fadeTarget, fadeValueTweened;
float fadeValue;

void setup() {
// initialize the serial port; needed for debugging below
Serial.begin(9600);
// initialize the LED pin
pinMode(ledPin, OUTPUT);
// initialize the input pin
pinMode(buttonPin, INPUT);
pinMode(decrisePin, INPUT); //Prova
}

void loop() {

// for all timers
currentTime = millis();

// checks to see if the number of milliseconds has passed
if ( abs(currentTime - fadeTimerLast) >= fadeTimerFreq) {
fadeTimerLast = currentTime;

// read the value from the input incrementa Pin 8
buttonValue = digitalRead(buttonPin);
// step the fading
if(buttonValue == 1){
// if the button is pressed, increase the fade
fadeValue = fadeValue + fadeStep;
}
// read the value from the input decrementa Pin 7
buttonValue = digitalRead(decrisePin); //Prova
// if the button is pressed, decrease the fade
if(buttonValue == 1){
fadeValue = fadeValue - fadeStep;
}

// constrain the fadeValue so it can’t go off toward infinity
fadeValue = constrain(fadeValue, 0, fadeRange);

// get the tweened value – i.e. the smooth value
fadeValueTweened = Quad_easeInOut(fadeValue, 0, fadeRange);
// use the tweened value to set the brightness of the LED
analogWrite(ledPin, fadeValueTweened);
// print the values to the serial port for debugging
Serial.print(buttonValue);
Serial.print(", ");
Serial.println(fadeValue);
}
}

// Quad easing thanks to Robert Penner
// variables used are type “float” so that you can throw smaller numbers at it and it will still work well
float Quad_easeInOut(float t, float fixedScaleStart, float fixedScaleEnd){
//float b = 0, c = 1, d = 1;
float b = fixedScaleStart;
float c = fixedScaleEnd - fixedScaleStart;
float d = fixedScaleEnd;
if ((t/=d/2) < 1) return c/2tt + b;
return -c/2 * ((–t)*(t-2) - 1) + b;
}

PS.: Purtroppo non sono molto esperto ma sto imparando!

la lettura del dato la puoi fare nel setup, la scrittura nel loop

Grazie! Milionario Oggi sono impegnato, questa sera provo. Mi puoi postare qualche esempio, sono alle prime armi

allora innanzitutto apri gli esempi della libreia che torvi già nell’ide
poi studialo bene( è commentto facile facile)

quindi implementi i pezzi che servono nel programma

leggi nel setup scrivi alla fine del loop il dato che ti serve nella eeprom

non è difficile dai prova e posta quello che ricavi

Mi puoi postare qualche esempio, sono alle prime armi

ARA fai il bravo, con un pochino di buona volontà guardando le pagine principali del sito trovi decine di esempi che possono esserti di aiuto: http://arduino.cc/en/Tutorial/HomePage

Se dovessimo postare esempi a tutti quelli che lo chiedono questo forum morirebbe in due giorni...

E poi, non vuoi dare un pochino di soddisfazione a chi ha preparato la tantissima documentazione ufficiale di www.arduino.cc ??? ::)

Pensa che lo hanno fatto e lo fanno "a gratis"! ;)

kokiua, hai perfettamente ragione sono pigro, in futuro farò come dici