A continuació us deixem amb la formació dedicada a la PROGRAMACIÓ d’un teclat matricial en l’IDE d’Arduino. (Segona part d’aquest post)
En el primer post vam veure com funciona un teclat matricial així com el seu diagrama de connexió. Per entendre com anem a programar simplement recordar que enteníem aquest teclat com una matriu on al detectar la pulsació a la columna X i la fila Y sabíem que s’havia premut la tecla (X, Y).
Hi ha la possibilitat de realitzar la programació sense llibreria, però nosaltres ho farem utilitzant la llibreria keypad, ja que això ens simplifica molt el codi i és el més habitual.
Per fer-ho pràctic, treballarem basant-se el següent exemple:
Com intercanviar la posició d’un servo SG90 a l’introduir un “password” al teclat matricial.
Açò ho podríem utilitzar en un projecte com a forrellat amb codi d’una caixa forta, on el servo SG90 ens faria el paper de pany al moure’s alternativament entre dues posicions, obert-tancat.
El primer que hem de fer: Instal·lar les biblioteques.
Com les instal·lem? anem a
Eines> gestiona les biblioteques…
Apareix el gestor de biblioteques.
Escrivim en la recerca “Keypad” i després “Servo”. Les busquem i les instal·lem.
I ara sí, estudiarem el codi:
Les explicacions de cada línia de codi estan després de la doble barra / / (això fa transparent a l’IDE aquests aclariments, per tant pots copiar i enganxar així el codi 😉 al teu IDE d’Arduino).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/*InputMakers Projecte de la caixa forta: controlarem l'apertura i tancament de la caixa forta amb el teclat matricial introduint el password: 1 A. El servo SG90 farà la funció de forrellat al variar la seva posició. */ #include <Keypad.h> // Incloem la llibreria Keypad. #include <Servo.h> // Incloem la llibreria Servo. const byte FILES = 4; // Nombre de files del keypad. const byte COLUMNES = 4; // Nombre de columnes del keypad. /* Mitjançant un array de 2 dimensions definim els símbols que corresponen a cadascuna de les posicions de les tecles. */ char teclat[FILES][COLUMNES] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pinFiles[FILES] = {9, 8, 7, 6}; // Array d'una dimensió per definir els pins en els que estan connectades les files. byte pinColumnes[COLUMNES] = {5, 4, 3, 2}; // Array d'una dimensió per definir els pins en els que estan connectades les columnes. /* A continuació creem una instància de tipus Keypad a la que anomenem keypad1 i li assignem les tecles de l'array teclat. Li indiquem que hem connectat les FILES del keypad als nombres dels pins que hem indicat en l'array pinFiles i les COLUMNES del keypad als nombres dels pins que hem indicat en l'array pinColumnes. */ Keypad keypad1 = Keypad( makeKeymap(teclat), pinFiles, pinColumnes, FILES, COLUMNES ); // Creem el servomotor amb el nom servo1. Servo servo1; // Variable per guardar la posició del servo. int posicio = 0; void setup() { // Assignem el pin 10 al servomotor. servo1.attach(10); // Posicionem el servo al connectar la placa a la seva posició 0 (porta tancada). servo1.write(0); } void loop() { // Llegim la tecla polsada del keypad. char key = keypad1.getKey(); if (key == '1'){ // Si premem la tecla '1', esperem la confirmació A. do{ key = keypad1.getKey(); } while(key != 'A'); // Si la posició és 0 (porta tancada) aleshores obrim la porta. if(posicio == 0){ servo1.write(65); posicio = 65; } // Si la posició és 65 (porta oberta) aleshores tanquem la porta. else if(posicio == 65){ servo1.write(0); posicio = 0; } delay(300); } } |
Podeu adquirir el projecte ESTACIÓ METEOROLÒGICA relacionat amb aquest post, que et servirà per ampliar els teus coneixements sobre el teclat matricial y el servo SG90, si t’ha agradat aquest post ACONSEGUEIX-LO!!
IMPORTANT: OFERIM GRANS DESCOMPTES PER A CENTRES EDUCATIUS! SI ERES UN CENTRE EDUCATIU DEMANA PRESSUPOST PERSONALITZAT EN AQUEST ENLLAÇ
[product_page id=”267″]
Esperem que ara sàpigues una mica més sobre programació! Si és així comparteix per WhatsApp amb algun amic :))
Salutacions de l’equip de InputMakers i segueix sempre aprenent!