WEBVTT

00:01.870 --> 00:05.650
Nel tuo kit hai una tastiera a membrana.

00:05.740 --> 00:13.470
Ora la maggior parte delle tastiere che si includono, inclusa la tastiera per il computer, sono una matrice.

00:13.510 --> 00:15.940
Ora cosa intendo per Matrix.

00:15.940 --> 00:21.370
Bene, diamo un'occhiata al cablaggio interno della tastiera.

00:21.460 --> 00:23.080
Ne ho strappato uno aperto qui.

00:24.620 --> 00:28.980
Quindi puoi vedere all'interno non farlo perché rovina la tastiera.

00:29.730 --> 00:33.300
Diciamo che premo questo tasto qui.

00:34.110 --> 00:37.320
Collega questo cavo a questo cavo.

00:37.430 --> 00:45.000
Se premo questo pulsante e questo cavo viene collegato a questo filo è morto o se premo questo

00:45.810 --> 00:49.510
pulsante questo cavo è collegato a questo cavo.

00:49.630 --> 00:59.560
Quindi, come puoi vedere, è una matrice di righe e colonne collegate premendo i pulsanti.

00:59.560 --> 01:03.950
Ora costruendo una matrice di pulsanti riduce il numero di fili necessari.

01:03.970 --> 01:11.160
Questa è una tastiera a 20 tasti, ma possiamo leggere tutti e 20 i pulsanti usando solo nove fili.

01:12.520 --> 01:14.930
Quindi, come leggiamo le tastiere a matrice.

01:14.950 --> 01:19.760
Bene vediamo che l'utente ha premuto questo pulsante proprio qui il nove.

01:19.930 --> 01:22.760
Quindi fondamentalmente scansioniamo la tastiera.

01:22.990 --> 01:29.760
Inviamo una nota alta su una delle colonne o le righe utilizzano tutte le colonne.

01:29.890 --> 01:39.190
Quindi invia una nota alta alla prima chiamata all'interno della scansione delle righe una per una alla ricerca del massimo

01:39.190 --> 01:42.070
da trasmettere su una delle righe.

01:42.100 --> 01:50.980
Non c'è nessun limite, quindi impostiamo la colonna bassa e mettiamo un high nella colonna successiva e scansioniamo le righe.

01:50.980 --> 01:52.420
Ancora una volta non c'è nessun alto ovunque.

01:52.420 --> 01:58.020
Quindi li impostiamo come bassi e impostiamo il prossimo alto.

01:58.570 --> 02:08.620
Mentre scansioniamo le file alla ricerca di un massimo, vediamo una e la quarta riga perché eseguiamo il riscanning con gli

02:08.620 --> 02:17.780
input e gli output digitali, sappiamo quale colonna era alta e quale riga era collegata a quella alta.

02:17.890 --> 02:24.670
Quindi ora possiamo determinare quale pulsante è stato premuto se non è stato premuto alcun pulsante.

02:24.820 --> 02:29.870
Quindi tutte le mie letture tornerebbero come zero.

02:29.950 --> 02:32.740
Ho appena iniziato la scansione tutto da capo.

02:33.990 --> 02:43.860
Leggendo dalla prima colonna e dalla prima riga non si capisce cosa stia scrivendo sulla tastiera.

02:43.860 --> 02:47.510
Vedi le nostre tastiere hanno numeri.

02:47.510 --> 02:53.230
Una sterlina è una stella anche in alcuni tasti di controllo e funzione.

02:53.460 --> 03:00.390
Ciò non ha alcun significato per Arduino: l'Arduino comprende solo i numeri binari.

03:00.390 --> 03:01.450
Questo è tutto.

03:02.370 --> 03:09.160
Come è tipico della programmazione, c'è più di un modo per portare a termine il lavoro.

03:09.510 --> 03:15.960
Quindi, come entrambi leggi e gestisci le letture della tastiera.

03:15.960 --> 03:17.740
Ti lascerò.

03:17.820 --> 03:23.720
Ti guiderò attraverso ciò che ho fatto solo per darti alcune idee e un punto di partenza.

03:24.850 --> 03:34.980
Quello che ho fatto è stato impostato Ho appena impostato una funzione matematica in cui ogni colonna equivale a una certa quantità e

03:35.010 --> 03:38.680
ogni riga equivale a una certa quantità.

03:38.700 --> 03:48.050
Quindi, quando l'Arduino rileva un pulsante, fa semplicemente una somma del valore della colonna e del valore della regola che a

03:48.420 --> 03:52.470
sua volta fornisce un numero univoco per ogni chiave.

03:52.530 --> 04:02.730
Mi limito ad assicurarmi che i miei valori di riga e colonna siano tali da rendere impossibile che due chiavi

04:03.000 --> 04:05.090
abbiano lo stesso valore.

04:05.220 --> 04:12.510
Ad esempio, se fornisco i valori alle colonne da 1 a 4 e quindi

04:12.510 --> 04:20.200
i valori sulle righe da 5 a 9, questa chiave due restituirà un valore di 7.

04:20.250 --> 04:32.010
La somma del valore di colonna di due più un valore di riga di 5 ma ciò significherebbe anche che Diski restituirebbe anche ad alcuni di 7 Aspetto che

04:32.010 --> 04:39.010
avrebbe un valore di colonna di uno e un valore di riga di sei, quindi utilizzando questi

04:42.040 --> 04:45.240
valori di colonna e riga non funzionerà

04:45.520 --> 04:55.690
Dovrei rendere i valori di riga un numero base di almeno quattro perché ho quattro colonne in modo che

04:55.780 --> 05:04.160
le colonne siano uno due tre quattro e quindi farò i valori di riga a partire

05:04.160 --> 05:11.440
da 5 e poi aumenterò di ogni riga 5 9 13 17 21.

05:11.540 --> 05:17.000
Se avessi una tastiera con otto colonne, dovresti fare in modo che i valori delle righe vengano

05:17.210 --> 05:18.920
saltati almeno di almeno otto.

05:18.920 --> 05:27.710
Ora prima di andare a dare una rapida occhiata al cablaggio interno della tastiera e della striscia di collegamento.

05:27.720 --> 05:33.170
Notare che le colonne si allineano con la striscia di connettori da sinistra a destra.

05:33.260 --> 05:42.240
Uno due tre e quattro, ma per le file il filo della prima riga passa effettivamente alla riga inferiore.

05:43.200 --> 05:54.450
Quindi il secondo terzo inferiore e il quinto in basso Quindi, se si dispone di una tastiera o di una tastiera

05:54.450 --> 05:57.760
diversa, questo cablaggio potrebbe essere diverso.

05:57.780 --> 06:06.450
Così, quando collego la tastiera all'Arduino, potrei incrociare i fili tra il connettore della tastiera e

06:06.750 --> 06:12.500
l'Arduino, così che scruto le righe dall'alto verso il basso.

06:14.430 --> 06:22.100
Ma seguirò lo schema attuale perché quando mi collego all'Arduino è semplicemente più semplice se vado con

06:22.110 --> 06:25.870
i fili mentre escono dal connettore della tastiera.

06:26.550 --> 06:34.990
Quindi tratti il connettore come una breadboard e ponticelli congelati.

06:36.310 --> 06:47.960
E poi al tuo Arduino, così facendo in questo modo ovviamente i numeri la somma della colonna e della riga di

06:47.960 --> 06:53.130
valori non corrisponderebbe ai numeri sui tasti a destra.

06:53.170 --> 07:03.700
Voglio dire che la chiave sette sarebbe un valore di colonna di uno e un valore di riga di nove, dandoci una meridiana che hai 10

07:03.700 --> 07:10.230
il valore assegnato a quella chiave non corrisponde a ciò che è scritto sulla chiave giusta.

07:11.190 --> 07:12.280
Ma non ci interessa

07:12.390 --> 07:20.970
Stiamo semplicemente provando a rilevare se un particolare tasto è stato premuto e designeremo un valore

07:20.970 --> 07:23.160
specifico per ogni pulsante.

07:23.160 --> 07:31.390
Dopotutto è possibile coprire questi pulsanti con carta adesiva e stampare significati personalizzati su ciascun tasto.

07:31.710 --> 07:34.530
Puoi personalizzare la tua tastiera.

07:35.010 --> 07:39.390
Non so se vuoi invece dei geroglifici egiziani.

07:39.570 --> 07:42.750
O sappiamo che è dum dum dum dum.

07:42.780 --> 07:45.440
Non sa né gli importa.

07:45.600 --> 07:48.280
Vuole solo che tu gli dia un numero.

07:48.690 --> 07:57.590
Ora con i nostri valori di riga e colonna questi sarebbero i valori di somma che otterremmo per ogni pulsante.

08:01.520 --> 08:05.680
Un altro aspetto tecnico da considerare prima di procedere.

08:07.680 --> 08:14.020
Dai un'occhiata da vicino alla tua scheda wino specificatamente ai pin 0 e 1.

08:14.100 --> 08:21.830
Si noti che mostrano che questi pin sono usati per trasmettere e ricevere.

08:21.830 --> 08:26.460
Quindi questi non sono tipici pin IO che è possibile impostare e utilizzare.

08:26.480 --> 08:35.060
Ma se si utilizza una comunicazione seriale di qualsiasi tipo, questi pin sono la porta seriale.

08:35.510 --> 08:37.640
È lo stesso sulla foto che sono.

08:37.640 --> 08:44.040
C'erano specifici pin multiuso che erano collegati alla porta seriale.

08:44.180 --> 08:52.160
Quindi, se si utilizza la comunicazione seriale, ovviamente non è possibile utilizzare gli stessi pin

08:52.160 --> 08:58.720
per l'ingresso digitale, l'uscita o l'impulso con segnale modulato o quant'altro.

08:58.730 --> 09:09.200
Quindi, poiché useremo il monitor seriale, non possiamo usare nessuno di

09:09.380 --> 09:20.430
questi pin, quindi collegherò le connessioni della mia tastiera partendo dal Pin 2.

09:20.500 --> 09:28.570
Voi ragazzi state migliorando le capacità di programmazione quindi voglio fare un suggerimento qui perché voglio la

09:29.380 --> 09:31.300
mia tastiera per l'Arduino.

09:31.300 --> 09:44.190
I primi quattro fili sono le colonne che verranno cablate ai pin su 3 4 e 5 su Arduino.

09:44.210 --> 09:53.930
Ora per rendere più semplice la mia programmazione userò i numeri pin Arduino per i miei valori di colonna.

09:54.080 --> 10:05.760
In questo modo quando indirizzo pintu il mio valore di colonna sarà anche al pin 3 darà un valore di colonna di 3.

10:05.780 --> 10:09.390
È strettamente per semplificare la programmazione.

10:09.480 --> 10:13.940
Così facendo, i miei valori per le colonne e le righe apparirebbero così.

10:13.940 --> 10:17.290
Colonne 2 3 4 e 5.

10:17.630 --> 10:25.270
E poi i valori delle righe partono da 6 aumentando di 4 volte per ogni riga.

10:26.170 --> 10:29.350
Quindi i valori della matrice apparirebbero così.

10:29.410 --> 10:35.080
La somma di ogni colonna e valore del rotolo.

10:35.120 --> 10:45.920
Quindi, dopo aver collegato le colonne Tippins da 2 a 5 si collegheranno le righe ai pin da 6 a 10, imposteremo i

10:45.920 --> 10:53.600
pin da sei a 10 come input per sfruttare le resistenze di pullup interne e risparmiarci

10:53.600 --> 10:57.170
un sacco di problemi di cablaggio.

10:57.410 --> 11:06.500
Questo significa che dobbiamo abbassare i nostri pin di input per indicare che il pulsante è stato premuto.

11:06.530 --> 11:08.120
Come lo facciamo.

11:09.750 --> 11:20.430
Inizialmente imposteremo tutti i pin Cullom troppo alti quando scansioneremo o stoccheremo i pin da 2 a 5, le colonne

11:21.120 --> 11:24.970
verranno strozzate ognuna con un valore basso.

11:25.440 --> 11:40.320
Quindi diciamo che sto premendo il pulsante 9 che è collegato al pin 7 di Arduino tramite la connessione rho.

11:42.400 --> 11:47.350
Il pin 7 è tenuto in alto da un resistore di pull up.

11:47.350 --> 12:00.280
Quindi se premo il 90 e lo strobe pin 4 che è Colonna 3 con un valore basso tirerà il pin 7 basso.

12:00.280 --> 12:02.040
Bingo.

12:02.280 --> 12:11.160
Se non avessimo quella resistenza di pullup interna sul chip Arduino dovremmo collegare alimentazione e resistenza

12:11.160 --> 12:13.910
a ciascuna delle colonne.

12:13.930 --> 12:21.210
Guardate tutti i cablaggi che stiamo salvando, abbiamo appena collegato i fili direttamente nella scheda connettore direttamente

12:21.210 --> 12:26.670
alle connessioni ER do wino e voilà siamo pronti per il rock.

12:26.710 --> 12:29.860
Ora programmiamo di conseguenza.

12:29.860 --> 12:32.140
Quindi costruiamo il nostro codice.

12:32.650 --> 12:41.140
Puoi scaricarlo nella sezione download, ma ti incoraggio vivamente a scriverlo da

12:41.140 --> 12:45.700
solo invece di copiare e incollare.

12:46.360 --> 12:55.060
Quindi inizieremo a dichiarare un paio di numeri interi che useremo il valore del rotolo che inizia

12:55.230 --> 12:56.470
alle 6.

12:56.680 --> 13:03.340
Il valore della prima riga e il valore della chiave che inizia a inizia a zero.

13:03.400 --> 13:13.300
Il valore della chiave sarà la somma dei valori di colonna e di riga di una chiave di lettura che impostiamo i pin da

13:13.310 --> 13:19.470
2 a 5 come 0 puts e pins da 6 a 10 come input.

13:19.510 --> 13:20.810
Tirare su.

13:20.900 --> 13:29.000
Ora, che diamine, impostiamo i pin da 2 a 5 in alto, perché dobbiamo iniziare quelli in alto

13:29.000 --> 13:33.120
e poi li strozzeremo singolarmente mentre Loew ha ragione.

13:33.160 --> 13:37.930
Quindi sputeremo la nostra lettura sul monitor dei cereali.

13:37.960 --> 13:48.080
Quindi anche in queste funzioni di installazione inseriremo i cereali a 96 gradi verso il basso nella funzione del ciclo.

13:48.110 --> 13:56.990
Ora creiamo la nostra routine per la scansione delle chiavi e calcolando il nostro valore chiave, le nostre colonne sono già impostate

13:56.990 --> 13:57.980
in alto.

13:58.160 --> 14:11.790
Quindi costruiamo un ciclo for che eseguirà lo strobed pin da 2 a 5 incrementando il conteggio di 1 in ciascun ciclo.

14:11.910 --> 14:14.130
Inviamo un basso nella

14:17.270 --> 14:21.740
prima colonna che risulta essere collegata al pin 2.

14:21.770 --> 14:33.110
Quindi entriamo in un secondo ciclo per il quale attraverso le righe i perni di riga da sei a 10 aumentano di

14:33.110 --> 14:39.660
uno in ciascun ciclo, il valore del rotolo aumenta anche di quattro.

14:39.680 --> 14:49.500
Ogni volta che passa attraverso il ciclo, esegue un controllo per verificare se il rotolo corrente su cui ci stiamo muovendo sta leggendo in

14:49.620 --> 14:54.700
basso, indicando che è stato premuto un tasto su quella strada.

14:54.990 --> 15:00.060
Se rileva un basso, aggiunge il valore del rotolo.

15:01.170 --> 15:11.780
E la colonna del numero è uguale perché il nostro numero di colonna è anche il nostro valore di colonna

15:11.780 --> 15:22.440
e quindi otteniamo l'avviso del valore chiave qui che sto eseguendo un ciclo for all'interno di un ciclo for è subroutine subs.

15:23.040 --> 15:30.210
Quindi, una volta che la nostra subroutine ha raggiunto il conteggio di 10 sulla nostra riga, la scansione di riga per il loop termina.

15:30.630 --> 15:43.510
Quindi ripristiniamo il valore della riga per avviare il valore iniziale di 6 e impostiamo la colonna corrente su un valore alto.

15:44.030 --> 15:50.140
Quindi torna al ciclo for che aumenta alla colonna successiva.

15:50.690 --> 15:56.890
Quindi esegue nuovamente la scansione delle righe con la colonna successiva tenuta bassa.

15:57.650 --> 16:06.350
Una volta completato questo ciclo di scansione di tutte le righe in ogni colonna, stampiamo qualsiasi valore il

16:08.930 --> 16:15.300
nostro valore chiave per il monitor dei cereali ripristina il nostro valore

16:17.920 --> 16:26.690
chiave ripristina il nostro valore di attesa per 100 millisecondi e poi torna indietro e ricomincia da capo.

16:28.650 --> 16:36.360
Potresti aver notato che non ho eseguito alcun rimbalzo di Keady qui e questo perché tutte queste istruzioni

16:36.360 --> 16:40.340
richiedono tempo e questo perché è così lento.

16:40.440 --> 16:49.870
In genere, è necessario più tempo per leggere i tasti rispetto alla durata della restituzione di qualsiasi tasto.

16:49.940 --> 16:59.310
Quindi stavamo facendo funzionare la tastiera al tuo Arduino e flash questo schizzo o scrivi il tuo e controlla

16:59.310 --> 17:02.900
cosa succede quando premi il tasto.

17:16.090 --> 17:24.880
Noterai che se premi più di un tasto otterrai una lettura zero.

17:24.920 --> 17:33.350
Punti bonus se riesci a capire perché se i tuoi numeri sono un po 'fastidiosi controlla prima i fili

17:33.350 --> 17:36.070
tra la tastiera e l'Arduino.

17:36.470 --> 17:38.240
È facile ottenere due

17:41.580 --> 17:46.830
incrociate, quindi verifica il tuo codice e assicurati che tutto sia kosher.

17:49.470 --> 17:56.670
Ho diverse sfide che so che puoi fare se desideri tanto spingerti in avanti.

17:57.850 --> 18:06.650
È possibile aggiungere del codice che interpreta i valori della chiave e invece di stampare il valore

18:06.670 --> 18:15.510
della chiave sul monitor dei cereali si potrebbe invece stampare ciò che è effettivamente scritto sul tasto premuto.

18:15.680 --> 18:24.600
Oppure puoi aggiungere al tuo codice e ai tuoi circuiti un programma di diversi colori di Ltd in modo che quando

18:24.600 --> 18:33.800
premi premi il tasto nove il display LCD blu si illumina e quando premi il tasto uno il display LCD rosso si illumina.

18:33.970 --> 18:38.670
Quindi qualcosa del genere solo per mettere alla prova le tue capacità di pensiero e programmazione.

18:40.510 --> 18:50.000
O collega il tuo servomotore al tuo Dino e fallo ruotare in posizioni specifiche a seconda del pulsante che

18:50.000 --> 18:51.790
premi sulla tastiera.
