Mentre passiamo all'utilizzo del display Hitachi e il nostro display touchscreen LCD a colori avrà
bisogno di un rapido corso rapido sugli array e gli array di variabili stringa sono semplicemente una variabile con molte parti.
Ad esempio questo è un array il nome della variabile è la mia mappa e ci sono otto parti nell'array
chiamato elementi.
Ho caricato l'array con otto diversi elementi all'interno delle parentesi graffe tutte separate da virgole.
Una volta dichiarato l'array posso scrivere o leggere uno qualsiasi degli elementi.
Ora gli elementi sono semplicemente numerati in sequenza ma il primo elemento è Element Zero.
È molto importante, come vedrai tra un secondo.
Quindi per leggere il primo elemento verrà caricato in un'altra variabile come questa, la variabile coords dello
schermo ora equivale a trentatre negativi perché accede al primo elemento nell'elemento array 0.
Le matrici sono indicizzate 0 perché se riesci a immaginare cosa sta facendo il compilatore
in background quando dichiari l'array, designa una sequenza di posizioni di memoria RAM in cui memorizzare l'array che la
posizione di memoria potrebbe trovarsi ovunque prenderà il primo blocco disponibile di memoria
abbastanza grande da contenere l'array e memorizzerà quell'indirizzo per la variabile.
Ora quando accede a quel blocco di RAM il numero di indice è in realtà un offset il compilatore ottiene l'indirizzo
della prima posizione di memoria e quindi X accede alle diverse posizioni di memoria
nell'array aggiungendo un offset al primo indirizzo.
Quindi, per accedere al primo slot di memoria del gruppo, la memoria RAM verrà spostata per indirizzo di zero, nessun
offset per accedere al secondo slot di memoria aggiungerà un offset di uno all'indirizzo di base per accedere al terzo slot
di memoria aggiungerà un offset di due ecc. . Se dovessimo leggere il quinto elemento, aggiungeremmo un
offset per questo e i coordini dello schermo ora sarebbero uguali a 16 negativi perché questo è il
numero memorizzato nel quinto elemento dell'array che potrei anche scrivere su qualsiasi elemento in qualsiasi momento usando
l'array nome della variabile e un numero indice questo è il numero ventiquattro nel terzo slot dell'array il terzo
slot ha un indice di due.
Ora, quando si dichiara un array, il compilatore deve sapere quanta memoria mettere da parte.
Esistono diversi modi per farlo, tutti validi nel primo esempio.
Non ho designato il numero di posizioni di memoria necessarie.
Quindi presuppone che i valori tra parentesi graffe siano tutti gli elementi che dovranno memorizzare.
Quindi conta quanti elementi ci sono e mette da parte quante posizioni di memoria nel secondo esempio
impostiamo la dimensione dell'array.
Ma come dichiarare qualsiasi altra variabile, non è necessario fornire i numeri da mettere
in memoria, ma è necessario indicare alla dimensione quale dimensione creare l'array.
Non è possibile lasciare vuote le dimensioni dell'array e non includere alcun valore di elemento perché non conosce
le dimensioni necessarie per creare l'array.
È necessario fornire almeno l'uno o l'altro perché deve trovare un blocco di memoria abbastanza grande
in cui archiviare l'array in modo simile nel terzo esempio, è possibile visualizzare 18 posizioni di memoria designate
ma fornire solo valori per i primi quattro elementi.
Anche questo va bene.
Gli abbiamo detto quante posizioni di memoria mettere da parte e supponiamo che in seguito
riempiremo gli altri elementi.
Un'ultima cosa molto importante prima di andare avanti.
È molto importante non tentare di indicizzare al di fuori dell'array.
Ad esempio, se dichiariamo questo array, imposta gli array in memoria.
Uno due tre quattro cinque ma ora provo a leggere la mia mappa con cinque distorsioni.
Ho appena fatto l'errore comune di dimenticare semplicemente che l'indice inizia da zero.
Quando ho tentato di leggere l'ultima posizione di memoria nell'array, ora sto leggendo all'esterno dell'array perché sto tentando
di leggere il sesto elemento in un array a cinque elementi, quindi se ricorderete come funziona il
computer come funziona il compilatore.
Quando ho dichiarato l'array ha messo da parte un po 'di memoria RAM per l'array.
Ora non ho idea di dove si trovi quel blocco di memoria.
Né tu né il compilatore, finché non lo compila.
È semplicemente trovare un po 'di memoria disponibile che è abbastanza grande da contenere l'array e lo designa.
Quindi ora quando gli chiedo di leggere la mia mappa 5 aggiunge un offset di 5 e va semplicemente a leggere quella posizione di memoria.
Non hai idea di quale sia la posizione di memoria, ma stai per
scoprire cosa c'è perché leggerà e renderà il mio numero quel valore ora sarà completamente casuale.
Ancora peggio è se provo a scrivere di nuovo fuori dall'array, non hai idea di dove
sia archiviato l'arduino.
Pertanto, quando si dimentica che l'array è indicizzato 0 e si tenta di scrivere all'esterno dell'array, non è
stato appena scritto un valore in una posizione di memoria completamente casuale sull'Arduino.
Potrebbe essere un registro innocuo.
Potrebbe essere un registro critico come una delle righe del tuo programma, il tuo programma è archiviato nella
memoria a destra.
Quindi hai semplicemente cancellato il tuo programma dall'interno perché hai appena scritto casualmente casualità nel mezzo
del tuo programma.
Questo è particolarmente vero se si scrive molto al di fuori dell'array perché l'indice è solo
un offset.
Quindi se ho un array delle dimensioni di 5 ma provo a scrivere su quell'array con un indice di
circa trecentoventitre, allora sta scrivendo dei numeri su quello.
Chi diavolo sa dove sull'Arduino.
Potresti impostare tutti i tipi di registri strani come i registri della velocità di clock.
Chissà.
OK ora che abbiamo un handle sugli array, entriamo in quelle che sono chiamate variabili String.
In realtà li stiamo già usando, ma non li abbiamo spiegati o concentrati su di loro.
Un computer capisce solo i numeri giusti.
Ma comunichiamo utilizzando sia numeri che lettere.
O forse i geroglifici egiziani.
Se ti piacciono cose del genere, a prescindere comunichiamo usando molto più di soli 10 numeri.
Se stai comunicando in cantonese, stai usando qualcosa come 37 colpi diversi e verso l'alto di
circa duecento radicali, quindi i computer semplicemente non ci capiscono e non possono capirci.
Questo diventerà più significativo quando entreremo nell'intelligenza artificiale.
Nel corso 5 perché un computer si occupa solo di numeri.
Questo è tutto.
Quindi, come mai un computer svolge funzioni di intelligenza artificiale che potrebbero essere assolutamente spaventose e
il loro potere come il riconoscimento vocale al testo.
Cercare le parole chiave nelle tue conversazioni e passare quelle informazioni all'NSA in modo da poter
essere messo nella lista dei terroristi senza che il computer
capisca nemmeno il linguaggio umano, non è paranoia se ti stanno davvero guardando.
Quindi come fa l'intelligenza artificiale a farlo.
Oh, questo è un mistero per un altro giorno.
L'enfasi in questo momento è che i nostri computer non comunicano con lettere una variabile stringa è
solo una variabile che contiene caratteri.
Ad esempio, abbiamo sempre usato stringhe.
Quando abbiamo inviato un comando di stampa alla stampa seriale del monitor seriale questa è una variabile di stringa, la variabile
di stringa è quelle lettere che compongono quella frase.
In realtà è tecnicamente un array.
È una matrice di caratteri con ogni carattere tra virgolette che costituisce un elemento nella matrice.
Ora il computer non conosce i loro personaggi.
In effetti li converte in numeri in modo da poterli gestire.
In quale tipo di numeri li converte.
Beh, ASCII ovviamente.
Ricorda che i nostri fantasiosi campionati vedono l'arte ASCII per inviare una serie di caratteri al nostro display Hitoshi.
Trasmetteremmo le singole lettere in codici ASCII che era un no inviare quel numero al
display e il display avrebbe interpretato cosa fare del codice ASCII e come visualizzare ciò che
volevamo sullo schermo.
Nel caso dell'Arduino Ida e qualche brava persona ha già codificato l'intera carta ASCII nell'I.
D. e.
Guarda tutto il lavoro che ti hanno salvato ora per inviare SMS al nostro schermo Hitachi.
Lo scriviamo tra virgolette.
Il programma arduino si converte in ASCII lo invia alla schermata allegata e voilà apparirà proprio come lo
abbiamo digitato.
Quella chiazza di petrolio o cosa.
Quindi le variabili stringa di solito devono essere dichiarate come qualsiasi altra variabile.
E proprio come qualsiasi altra variabile non è necessario caricarlo con un valore quando lo si dichiara.
Ma puoi caricarlo se lo desideri.
Quindi va così.
Quindi devo prima dire al compilatore che tipo di variabile è.
È un tipo di carattere, quindi il carattere indica che si tratta di caratteri.
Quindi il nome della
variabile e quindi assegna un valore alla variabile.
Ora solo per confondere le cose c'è un oggetto stringa.
Ha una S maiuscola che è molto simile e fa molte delle stesse cose che fa un array di caratteri, ma
lo fa a scapito di più memoria.
Non lo useremo perché la prima cosa che devi capire è che
gli array di caratteri consumano già un accumulo di memoria e l'oggetto stringa prende ancora di più da qui in poi.
Ogni volta che mi riferivo a un array di stringhe mi riferisco a un personaggio.
In questo momento è un array.
Ognuno di quei caratteri nell'array consuma una posizione di memoria e alla fine c'è un carattere nascosto
chiamato un carattere no che indica la fine della stringa.
Quindi ciascuno di quei personaggi, inclusi gli spazi tra le parole, consumano ciascuno una posizione
di memoria, quindi questa semplice breve affermazione ha quarantasei caratteri e spazi e un carattere nascosto, quindi consuma quarantasette
byte di memoria.
Non suona molto, ma considerando che hai solo duemila byte di memoria per
iniziare con quella piccola stringa che ha appena consumato quasi il due percento e mezzo dell'intero RAM disponibile.
Supponiamo quindi che tu stia utilizzando il tuo display Hitachi per interagire con l'utente.
Se un messaggio semplice e breve consuma in media 40 byte di memoria, 50 messaggi di testo
che approvano lo schizzo consumerebbero tutti i ram disponibili su Arduino.
Non c'è spazio per altre variabili.
Non c'è spazio per la stampa sul monitor seriale perché utilizza variabili stringa ecc.
In effetti, se dai un'occhiata a un esempio di Conor Toohey No, vai agli esempi di file SD e informazioni sulla scheda.
Questo è uno schizzo che verifica semplicemente una scheda di memoria SD inserita nell'Arduino attraverso uno scudo del lettore
di schede SD.
Dò una rapida occhiata
allo schizzo, non c'è molto che ci sia.
Ma guarda tutte le variabili di stringa in questo piccolo schizzo che consuma un enorme milleduecentoquarantotto byte più della metà della RAM totale
disponibile perché gli array di caratteri sono array che puoi sia leggere che
scrivere elementi specifici all'interno dell'array esattamente come faresti tu a qualsiasi altro
array.
È solo che devi tenere a mente che hai a che fare con una variabile stringa.
Una stranezza con il linguaggio di programmazione C su cui sappiamo si basa è che se hai un singolo
carattere devi metterlo tra virgolette singole.
Se hai più caratteri devi metterlo tra virgolette doppie, quindi se memorizziamo un carattere nella variabile della mia
frase in questo modo cambierebbe
le lettere minuscole nella somma delle parole in lettere maiuscole che lo slot 8 nota perché sono avendo a
che fare solo con il singolo personaggio, ce l'ho tra virgolette singole, lo so.
Non guardarmi
Non ho fatto le regole.
Onestamente non ho idea del perché l'hanno fatto in questo modo.
Come in molte aree di questi corsi, ti sto semplicemente introducendo a questi concetti in modo da poterli
usare.
C'è così tanto da manipolare le stringhe.
Potrei fare diverse lezioni proprio su questo, ma puoi approfondire questo argomento se sei interessato.
Non entrerò nei dettagli perché non ne abbiamo bisogno per quello che faremo in questi corsi.