Presentazione più consiglio

salve!

Un nuovo possessore di Arduino si unisce a voi! Mi chiamo Giuseppe, Piacere!!
Lo posseggo da meno di una settimana, e già mi sono divertito parecchio a provare svariati esempi proposti, poi tagliuzzandoli, unendoli, modificandoli e un paio di robettine idiote le ho pure fatte da me solo!

adesso vorrei iniziare un progettino un po più utilizzabile e che richieda un po di impegno. sempre se riesco eh!

Nell'analizzare inizialmente cosa dovrebbe fare l'Arduino, mi sorge un dubbio. inizialmente il lavoro sarebbe, creare un'interrupt che risponda all'arrivo di un cambio di livello su un'ingresso digitale. Una volta avviato questo interrupt, all'interno dovrei piazzargli una funzione che rispedisca fuori il segnale (sempre digitale, singolo impulso alto) con un determinato ritardo in millisecondi, da prelevare da un'apposita tabella di valori.
ora, ho letto che il Delay() non funziona all'interno degli interrupt, perche usa la funzione Mills() per lavorare, cosa che và in contrasto con la natura dell'interrupt, che di natura interrompe il Main Loop!

come posso avere un qualcosa che applichi questo ritardo all'interno dell'interrupt senza dover ricorrere alla funzione Delay()??

vi ringrazio anticipatamente per l'aiuto! e mi scuso in anticipo se, da novellino, sparo boiate!

saluti!

Fai una cosa; nella funzine Interrupt memorizzi il valore dei Milli() in una variabile e metti una seconda variabile di stato a HIGH.
Nel loop controlli il valore della variabile di stato, prendi il ritardo dalla tabella e aspetti finche il tempo di inizio interrupt sommando il ritardo sia minore di Milli().
Considera anche il caso se l' interrupt ti capita prima della fine del ritardo.
Ciao Uwe

uhm, niente male come soluzione!

No, in teoria, ogni interrupt è distante abbastanza uno dall'altro per permettere lo svolgimento del ritardo assegnato!

ho letto pocanzi che il Delaymilliseconds() funziona sotto interrupt perche prende forza proprio dalle operazioni matematiche sui Mills(). Proverò entrambi i metodi!

Poi ho pure scoperto come creare un Timer facilmente usando i Mills(). Prima programmavo i PIC della Microchip, e li per stabilire un timer non era cosa così immediata!

spero di non tediarvi con domande idiote, ma sono all'inizio, sopportatemi!

esiste un modo per risalire al tempo impiegato dall'Arduino a compiere una riga di codice? così che possa calcolarmi i tempi delle varie operazioni che svolge per sottrarli ai ritardi che devo impostare!

grassie!

puoi farti stampare sulla seriale il valore di milli(). Per un controllo preciso devi prima stampare i valori senza la funzione in mezzo e poi con.
Per funzioni che sono veloci é utile ripeterle in un ciclo for.

Serial.print(millis());
Serial.print(millis());
per determinare il tempo di stampa

e poi
Serial.print(millis());
funzione();
Serial.print(millis());

Ciao Uwe

[Edit] dopo il suggerimento di Menniti ho corretto il codice Grazie a Menniti

Ciao Uwe, penso che tu volessi scrivere "Serial" nel tuo code.

menniti:
Ciao Uwe, penso che tu volessi scrivere "Serial" nel tuo code.

Dopo il Tuo aiuto ho corretto l' errore
Grazie
Ciao Uwe