Gettoniera lavatrice

buongiorno ragazzi sono dedo990 un giovanotto italiano che al momento si trova nei
monti Austrici dove tra un probleminio di elettronica e un po di meccanica e carrozzeria mi cimento ad aggiustare dei bus.
Vi annuncio gia da ora sono anche nuovo alla programmazione di Arduino, in realta sono proprio nuovo alla programmazione in generale, se escludiamo quell attivita di programmare la mia giornata, sinceramente mi sentivo bravissimo a copiare e incollare fin quando non son incappato i qualche problemino problemino.
in poche parole il codice che vi incollerò mi impalla Arduino se lo stesso rimane inattivo per due o tre ore, solo resettandolo tutto riprende col pulsante “reset” riprende a funzionare.
ecco il mio SUPERCODICE:

float valoremoneta      = 0.00;
float momentocorrente   = 0;
float momentoprecedente = 0;
byte nuovamoneta        = 0; // semaforo che indica l'arrivo di una nuova moneta

//***  routine di gestione di ogni impulso proveninete dalla gettoniera - manages each pulse from coin selector

void nuovoimpulso()
{
  momentoprecedente = millis ();
 valoremoneta = valoremoneta + 0.1;       // ogni impulso vale 10 cent - each pulse values 10 cents
  nuovamoneta = 1;                          // indica che e' arrivata una nuova moneta - flag to sign a new coin
}

void setup()
{ digitalWrite(10, HIGH); //inizializza l'uscita a livello alto
  pinMode(10, OUTPUT);
 
  Serial.begin(9600);
  attachInterrupt(0, nuovoimpulso, RISING);  // gestione dell'interrupt: se arriva un impulso sul pin 2 si attiva la routine "nuovoimpulso"
  
  pinMode(4, OUTPUT); // relè
  digitalWrite(4, HIGH);
}
int c = 0;
//
void loop()
{
  digitalWrite(10, LOW);
  momentocorrente = millis ();
   digitalWrite(4, LOW);
 if  (valoremoneta == 0.5) // Se e' arrivata una nuova moneta e sono trascorsi  almeno 300 millisecondi dall'ultimo impulso - If a new coin has arrived and has passed at least 300 milliseconds from the last pulse*/
  {
    nuovamoneta = 0;              // azzera il segnale di nuova moneta  - unflag new coin signal
    Serial.print("moneta da: ");  //coin
    Serial.print(valoremoneta);
    Serial.println (" euro");
    digitalWrite(4,HIGH);
    valoremoneta = 0;
    delay(3000);
   digitalWrite(10, HIGH);
   delay(3000);
   asm volatile (" jmp 0");
    }
    c++;
    delay (100);
    //porta l'uscita a livello basso per resettare la scheda

GRazie mille RAgazzi
Buon lavorio

Buongiorno e benvenuto :slight_smile: ,

essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO

… poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita che si trova in basso del tuo post) e racchiudere il codice all’interno dei tag CODE.

In pratica, devi selezionare il tuo codice e poi usare il bottone </> per metterlo nell’apposita area dedicata al codice. Grazie.

Guglielmo

[i]P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nessuno ti risponderà, quindi ti consiglio di fare il tutto al più presto. :wink:

P.P.S: Inoltre il codice va formattato correttamente … nell’IDE lo prendi ed usi i tasti CTRL T che ti sistema il codice e poi lo metti nel tuo primo post già formattato. [/i]

Buonasera Guglielmo , spero di non aver infranto ancora troppo il regolamento…
Sei stato gentilissimo
A presto

… nessun problema, ma manca ancora la presentazione nell’apposito thread   :wink:

Guglielmo