Go Down

Topic: due lm35 comandano un servomotore (Read 884 times) previous topic - next topic

Patrick_M

... ancora più semplice dall'IDE Arduino..

1) premere Ctrl + T (per formattare il tutto) oppure dal menu strumenti scegliere formattazione automatica

2) premere Ctrl+maiuscolo + C oppure dal menu modifica selezionare copia per il forum

nel post di risposta fasr Ctrl + V o click con tasto destro e scegliere incolla e i tag ci sono già :)
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

Cantatore74


Cantatore74

Di solito, al fine di non ripetere la scrittura di parti di codice già definite, si usa scrivere il codice da ripetere all'interno di una funzione richiamabile più volte a piacere nel loop, da dentro un'altra funzione oppure sia nell'uno che nell'altro caso contemporaneamente. Non ha importanza quante volte chiami la funzione e dove lo fai. Se vuoi che il comando che hai dato perduri fra una chiamata della funzione e l'altra, nella funzione puoi dichiarare di tipo "static" la variabile che memorizza il comando che fornisci alla tua uscita. In questo modo, ad ogni chiamata della funzione, la variabile "static" manterrà il valore che aveva assunto nella chiamata precedente e di conseguenza anche la tua uscita il cui stato è funzione di tale variabile.
Salve, per usare questo comando c'è un programmino? Non mi è molto chiaro. Avevo fatto delle prove ma credo di incasinarmi, non trovo degli esempi per i riferimenti.

Cantatore74

Nel frattempo vorrei chiedere quando si carica uno sketch su Arduino questo rimane in memoria, ma quando si applicano delle modifiche cambiando resistenze ecc. e collego il cavo usb per caricare un nuovo sketch, questo crea dei cortocircuiti? Perchè avendo in memoria il vecchio sketch dà segnali in modo sbagliato al nuovo progetto giusto? Come si resetta Arduino?

Patrick_M

#19
Jun 22, 2018, 09:13 pm Last Edit: Jun 22, 2018, 09:14 pm by Patrick_M
come dice il buon Guglielmo (ovviamente non solo lui :D )
gli carichi il buon vecchio blink (che trovi negli esempi) così lo rimetti com'era quando l'hai comprato ;)
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)


gpb01

Sarebbe che apri gli esempi dell'IDE, prendi il Blink (che è quello che viene caricato quando Arduino ti viene venduto) e ci carichi quello.

Guglielmo
Search is Your friend ... or I am Your enemy !

Cantatore74

Ecco finalmente trovato. Grazie.
Non ho ancora potuto risolvere il problema di ricopiare le parti di comando quando cambio il menù, spero che i troppi comandi non mi occupino troppa memoria ad arduino mega.

krypton18

#23
Jun 24, 2018, 11:44 pm Last Edit: Jun 24, 2018, 11:56 pm by krypton18
Salve, per usare questo comando c'è un programmino? Non mi è molto chiaro. Avevo fatto delle prove ma credo di incasinarmi, non trovo degli esempi per i riferimenti.
Esempio di come usare una variabile static in un generico programma per PC:
(con piccole modifiche funziona anche su Arduino)

Code: [Select]

#include <stdio.h>

int funzione(int); /*dichiarazione di funzione (o prototipo)*/

  int main(void)
  {

int ingresso, uscita;
 
  while(1) { //ciclo infinito


ingresso = rand(); //assegno valore casuale alla variabile ingresso

printf("Valore attuale variabile di ingresso: %i \n", ingresso);

uscita = funzione(ingresso) - 1; //assegno ad uscita il risultato della funzione decrementato di 1


printf("Valore attuale variabile di uscita (ingresso - 1): %i \n\n", uscita);

getch(); //premi ENTER per continuare l'esecuzione del programa

}
    return 0;
}

int funzione (int var_in) /* definizione della funzione */
{
static int var_stat = 0;

int var_non_stat = 0;

printf("Valore precedente salvato nella variabile statica var_stat: %i \n", var_stat);

printf("Valore della variabile non statica var_non_stat: %i \n", var_non_stat);

var_stat = var_in;

var_non_stat = var_non_stat;

return var_in;

}


E' un programma del tutto senza senso fatto per PC, serve solo per farti capire come si comporta una variabile static dentro una funzione. La funzione replica in uscita il suo parametro di ingresso, non effettua alcuna elaborazione. Quindi se avessi scritto "uscita = ingresso - 1;" il risultato dell'output sarebbe stato il medesimo. Lo ripeto, è un programma campato per aria in 5 minuti a scopo didattico.

Questo è come si presenta l'output del programma:

Quote
Valore attuale variabile di ingresso: 41
Valore precedente salvato nella variabile statica var_stat: 0
Valore della variabile non statica var_non_stat: 0
Valore attuale variabile di uscita (ingresso - 1): 40

Valore attuale variabile di ingresso: 18467
Valore precedente salvato nella variabile statica var_stat: 41
Valore della variabile non statica var_non_stat: 0
Valore attuale variabile di uscita (ingresso - 1): 18466

Valore attuale variabile di ingresso: 6334
Valore precedente salvato nella variabile statica var_stat: 18467
Valore della variabile non statica var_non_stat: 0
Valore attuale variabile di uscita (ingresso - 1): 6333

Valore attuale variabile di ingresso: 26500
Valore precedente salvato nella variabile statica var_stat: 6334
Valore della variabile non statica var_non_stat: 0
Valore attuale variabile di uscita (ingresso - 1): 26499
Come puoi notare la variabile statica, prima di essere sovrascritta, mantiene il valore che le era stato assegnato ad ogni precedente chiamata.

Go Up