Prima di passare a una programmazione più complessa, dobbiamo imparare a programmare le subroutine in
Arduino che è in realtà in programmazione nel linguaggio C ora le subroutine in C sono chiamate funzioni
e le abbiamo già utilizzate ma non come subroutine se ricorderete il nostro nuda lo schizzo minimo deve avere un minimo di
due funzioni di configurazione e loop e, proprio come le subroutine e altri linguaggi di programmazione, le funzioni verranno eseguite
in sequenza o possiamo chiamare una funzione da qualsiasi punto all'interno del programma.
Infatti nella prossima lezione chiameremo le funzioni da un altro programma completamente diverso.
Quindi facciamo una funzione.
Per prima cosa ha bisogno di un
tipo di ritorno che è stato quel vuoto parola.
Ho detto che quando abbiamo iniziato ad arduino e poi il nome della funzione, questo è il nome
che userete per chiamare questa subroutine.
Quindi non può avere spazi.
Deve essere composto da numeri di lettere o il carattere di sottolineatura e non può avere un numero come primo carattere.
È anche case sensitive.
Ovviamente la parola non può essere un'istruzione o una parola prestabilita come alta.
Gli stessi problemi con le variabili di denominazione saranno schiaffi su due parentesi.
Torneremo su questo in un secondo.
E infine tutto all'interno della funzione stessa è chiuso tra due parentesi.
Si noti che non vi è alcun punto e virgola dopo la dichiarazione della funzione.
Quindi ricostruirò il mio schizzo Dance Dance con le funzioni.
Ora il mio
schizzo originale era davvero lungo a causa di tutti i passaggi della danza.
Siamo in una serie di istruzioni.
Ora dividiamo i miei passi di danza in funzioni separate e poi chiamiamo quelle funzioni dalla
funzione di loop.
Ora la mia prima mossa di danza è semplicemente un passo avanti.
Quindi chiamo la mia funzione con quel nome un passo avanti.
Copio quella mossa
completa con i miei tempi precedenti nella funzione Farò
una
seconda funzione chiamata step back
e copiare la mossa per quella dalla
mia Dance Dance Party Dal mio ballo Dance Party a quella funzione quindi ora ho due funzioni su cui chiamare ho intenzione di copiare e incollare
la configurazione dallo schizzo dance
Dance Dance originale
e ora siamo pronti per partire.
Quindi, nella funzione loop, chiamerò ora le mie subroutine le mie funzioni come ho bisogno di loro.
Inizierò la mia routine di ballo facendo quattro movimenti avanti e indietro per non chiamare una funzione.
Digito semplicemente il nome
della funzione, due parentesi non contengono ancora nulla.
Tutto torneremo su questo in un secondo e un punto e virgola.
Così ho chiamato il passo avanti e poi ho fatto un passo indietro.
Funziona
e poi lo faccio
altre tre volte.
Tutto ciò che il robot farà è andare avanti e indietro in avanti e indietro, sperare in tempo con la musica. In
questo caso ho intenzione di lanciare un ritardo
di un secondo solo così possiamo vedere la fine delle mosse prima che ritorni di nuovo all'inizio.
Ricorda che questa funzione del loop scorre continuamente.
Quindi, poiché ho tutte le funzioni dopo la funzione loop, il programma non andrà mai oltre la fine della
funzione loop.
Tornerà all'infinito all'inizio del ciclo.
Funzione
quando flash il robot con
questo schizzo il robot inizierà la sua sequenza di quattro movimenti in avanti all'indietro.
Metti in pausa un secondo e poi esegui nuovamente i movimenti.
Sta chiamando questi movimenti per funzioni di subroutine.
Se aggiungo altre funzioni come il punto CDO
che ruotava sul posto o rimescola indietro a sinistra oa destra.
Posso costruire una sequenza di danza complessa semplicemente richiamando tutte le funzioni in sequenza di movimento
dal ciclo.
Funziona
rende davvero facile cambiare la routine di ballo e salva tutto un sacco di codice perché in passato ogni
volta che volevo fare un passo avanti avrei dovuto inserire tutte queste righe di codice.
Ho appena sostituito pagine di codice con un paio di chiamate e una copia di ciascuna mossa in una funzione.
Ora potrei impostare anche alcune variabili globali per conoscere i ritardi di temporizzazione
e quindi posso cambiare i tempi dell'intera sequenza di danza modificando un paio di variabili globali o anche
una variabile globale del tempo di battito nella musica.
Chiedi alle subroutine di eseguire alcuni calcoli matematici per calcolare i ritardi necessari durante il movimento
o le pause tra i movimenti in base al tempo di battimento.
Posso quindi farlo ballare più accuratamente al ritmo di musica diversa semplicemente cambiando
una variabile globale all'inizio dello schizzo.
Ora nessuna di queste funzioni ha inviato o restituito alcuna informazione e quindi tutte le funzioni e le chiamate di funzione avevano
queste parentesi vuote, ma siamo in grado sia
di inviare informazioni a una funzione sia di ottenere informazioni indietro quando la funzione ritorna.
Questo è quello che usiamo queste parentesi perché prima di tutto inviamo alcune informazioni a una funzione, invieremo una funzione
nulla, quindi invieremo le informazioni alla funzione.
Ma la funzione non invierà nulla in modo
da rendere la funzione come prima.
Solo tu metti i nomi delle variabili all'interno delle parentesi separate da virgole e spazi.
Se c'è più di un esempio in poche brevi lezioni impareremo come utilizzare
il nostro schermo TFT.
Schermo LCD TFT in modo da dipingere effettivamente ogni singolo pixel sullo schermo fornendo una coordinata X e Y per il
pixel specifico che si desidera dipingere e quindi il colore che si desidera dipingere quel pixel.
È una serie di istruzioni per inviare quel colore sul bus di comunicazione, quindi scriveremo
una funzione per svolgere questo compito chiameremo la nostra funzione void paint pixel.
E tra parentesi inseriremo le variabili x y e spaziate a colori e separate da virgola.
E devi dichiarare il tipo di variabile che si tratti di un intero o di un altro tipo.
Ne parleremo più in dettaglio nella lezione di matematica e microprocessori.
Così ora ho messo tutte le mie istruzioni all'interno delle parentesi su cosa fare con queste variabili.
Ora spero che tu abbia capito cosa sto dicendo qui perché le istruzioni per dipingere sullo schermo
TFT sono piuttosto complicate da capire.
Quindi non voglio confonderti.
Quindi immagina che tra le parentesi ci sia una serie di istruzioni qui.
Va bene.
Mettere l'indirizzo X su strobe bus.
La linea giusta mette l'indirizzo sul flash del bus a destra.
Line ha inserito il valore del colore sullo strobe del bus.
La
linea retta per sapere che ora ho la funzione impostata,
chiamo semplicemente quella funzione
da un'altra parte come la funzione loop e quando la chiamo fornisco i valori per le tre variabili in
ordine e separati da virgole in modo che le variabili all'interno le parentesi sono chiamate argomenti.
Quindi questa chiamata dirà alla funzione di dipingere l'ottavo pixel dal lato sinistro sull'asse x.
Il quarto pixel dall'alto verso il basso sull'asse y e dipingeremo quel pixel con il colore A E doppio qualunque sia
il colore.
Quindi inviamo i dati alla funzione quando li abbiamo chiamati.
Ma quando la funzione termina il suo compito, torna da dove viene e non porta nulla in
cambio.
Lo schizzo continua proprio lì, proprio dove avevo lasciato.
Quindi, supponiamo di voler inviare informazioni dalla funzione, la funzione esegue alcuni calcoli e restituisce
il risultato al suo ritorno.
Quando costruisci la funzione non è più una funzione di vuoto perché restituisce qualcosa che devi specificare di
cosa restituisce riportando un numero intero in virgola mobile.
Quindi restituiamo un numero intero.
Basta che sia semplice.
Quindi iniziamo con l'I. UN..
Quindi il nome della funzione e se avete argomenti, vengono messi tra parentesi come al solito.
Ora per semplificare non userò alcun argomento.
Non stiamo inviando alcuno dei dati alla funzione.
Abbiamo quindi la funzione stessa tra le parentesi graffe.
Ora in questo caso userò una lettura analogica e poi eseguirò alcuni calcoli matematici.
Quindi diciamo che uno zero è collegato a un terzo Mr per leggere la temperatura.
No perché le letture analogiche restituiscono semplicemente un numero che rappresenta la tensione sul pin nel pin 0.
Dobbiamo convertire quella tensione in una temperatura, quindi calibrando le letture analogiche ho
capito che per convertire il numero analogico che ho letto in gradi Celsius.
Ho dovuto usare questa formula
ora perché posso eseguire il mio arduino su 5 volt o tre virgola tre volt.
Fornisco la dichiarazione della tensione di alimentazione altrove nello schizzo, quindi
qui è dove chiamo la subroutine.
È molto poco appariscente, ma è così.
Ho appena detto di chiamare la subroutine della calcolatrice temporanea che salta alla funzione nella mia funzione
eseguirà il calcolo e ritorna da
dove proviene con il valore che ho calcolato.
In questo caso, creo la variabile C temp valida, quindi quando chiamo la funzione la funzione
esegue il calcolo.
Ma si noti che lo schizzo non riconosce la variabile stessa solo il suo valore.
Ho assegnato una temperatura di nome variabile diversa.
Ora l'ho fatto deliberatamente in modo da poter vedere come lo schizzo gestisce le variabili che
passa tra le funzioni.
L'ho praticamente detto.
Chiama la funzione calcolatrice temporanea e qualunque numero ti dia.
Mettilo nella variabile di temperatura, così ha fatto anche se la variabile stessa è stata chiamata C temp nella funzione
solo per farti confondere le cose.
Si.
Quindi ricorda che i computer si occupano solo di numeri.
Non si cura del nome della variabile che si preoccupa di ciò che il numero
è contenuto in quella variabile e quel numero è ciò che viene trasmesso alla variabile che ho assegnato che era la temperatura.
Invia quindi una stampa seriale al monitor seriale mettendo la
stampa delle parole la temperatura corrente e quindi l'avviso di temperatura calcolato Ho usato la variabile di temperatura per la stampa seriale.
Se avessi usato C temp in
loro avrei ricevuto un errore perché non ho dichiarato la variabile C temp nell'ambito del ciclo.
È stato dichiarato nell'ambito della calcolatrice temporanea, così come andiamo avanti, ci immergiamo nelle librerie e useremo
tutte queste funzioni molto.
Nel frattempo, perché non costruisci uno schizzo di danza per esercitarti a scrivere e usando funzioni come quelle
che mi piacciono, faccio solo una serie di mosse di danza con ogni mossa in cui ogni mossa ha una sua funzione.
Quindi chiama semplicemente le funzioni una alla volta per costruire la tua routine di danza.
Guarda tu stesso quanto lavoro e quanto codice ti salva.