Como declarar variáveis para codificar o teclado do teclado da entrada do projeto Arduino Sistema
Assim que tiver os componentes teclado e visor no lugar em sua placa de ensaio, é hora de carregar o código ao seu Arduino. Tome um momento de olhar para o código e, em seguida, enviá-lo para sua placa.
Na primeira seção, antes de configuração, você declarar variáveis para o teclado e visor.
const int numberOfDigits = 4- // O número de dígitos no 7 segmentos displayconst int numRows = 4- // Número de linhas na keypadconst int NúmColunas = 3 // Número de colunas na keypadconst int debounceTime = 20 / / Número de milissegundos para mudar para se tornar stableconst int doorOpenTime = 5000- // Quanto tempo você deseja que a greve porta para permanecer openconst int strikePin = 9- // o pino que aciona o relé para a porta strikeconst int slaveSelect = 10 // Pin usado para ativar o pino escravo no código MAX72xxchar [4] = { '1', '2', '3', '4'} - // Defina o seu herechar código codeBuffer [4] - // Armazena o código que Atualmente está sendo enteredboolean DEBUG = verdade- // Defina como true para mensagens de status de impressão para a portint série keypressCount = 0- // conta quantas vezes uma tecla foi pressionada // o mapa de teclado define o caráter retornado quando a chave é char pressedconst kEYMAP [numRows] [NúmColunas] = {{ '1', '2', '3'}, { '4', '5', '6'}, { '7', '8', '9'} , { '*', '0', '#'}} - const rowPins int [numRows] = {7, 4, 2, 5} - // linhas teclado 0 a 3const int colPins [NúmColunas] = {6, 8 , 3} - // Colunas do teclado 0 a 2
o numberOfDigits variável define o seu LED driver IC com o número correto de dígitos. numRows e NúmColunas armazenar o número de linhas e colunas em seu teclado, 4 e 3, respectivamente. Você usá-los para olhar para cima qual chave está sendo pressionada. o debounceTime garante que a chave a ser prensado é detectado com precisão. Você definir a quantidade de tempo que a porta será aberta com o doorOpenTime variável.
o strikePin variável define qual pino digital será activado quando o código correto é inserido. Isto aplica-se energia para o relé, que fecha para accionar o mecanismo de bloqueio da porta. Você pode querer usar um nome diferente se você estiver usando um tipo diferente de mecanismo, como uma fechadura magnética ou um trinco da gota.
slaveSelect define um pino digital que você usa para indicar que você está enviando dados. O escravo seleccionar (ou # 147-chip select # 148-) pino (SS) é um pino de comando no IC que liga os pinos externos para o circuito interno.
Em aplicações com vários drivers de LED que são todos ligados a seus fios de entrada, você quer ser capaz de escolher se ele está ou não habilitado. O IC só responde a comandos quando seu escravo seleto pin modo é ativado, o que lhe permite diferenciar entre este controlador e outras que você pode estar usando.
Você estiver usando apenas um único IC neste projeto, mas você ainda precisa deixar o chip saber quando você está indo para enviá-lo de dados, e é isso que SS pino faz.
Dois carbonizar variáveis são utilizadas para o código de acesso de manuseamento. O primeiro, código[], armazena os dígitos do código de acesso. Você pode definir este seja o que quiser. O segundo carbonizar, codeBuffer [], lojas (ou nº 147-buffers # 148-) as chaves que tenham sido pressionados. Quando estes dois jogos, presto! O Arduino ativa strikePin. Não há nenhuma maneira para definir o código a partir do teclado - você tem que fazê-lo por meio de programação.
Este programa tem um prático recurso pouco de depuração construída em Isso é o que a próxima variável é para: a. boolean chamado DEPURAR. Lembre-se que variáveis booleanas só pode ser verdadeira ou falsa. Ao definir esta a verdade, você pode usar uma condicional E se declaração para executar determinadas linhas de código que não será executada se você configurá-lo para falso.
Por exemplo, neste código de imprimir uma grande quantidade de variáveis na porta serial, para testar se o teclado está a funcionar correctamente. Mas, depois de o seu sistema está instalado em sua porta, você não precisar imprimir nada. Em vez de excluir todos aqueles Serial.println () declarações, você pode simplesmente voltar para o DEPURAR variável e configurá-lo para falso.
o keypressCount lojas de quantos dígitos foram pressionado até agora. Quando o quarto é pressionado, a ação real acontece.
o carbonizar variável KEYMAP [] [] é uma matriz bidimensional. Uma matriz bidimensional é simplesmente uma matriz de matrizes. Imagine um menu para um restaurante italiano. Você pode ter uma dúzia de itens do menu para escolher: breadsticks, sopa, pizza, lasanha, saladas, vinho tinto, e assim por diante.
Você pode armazenar estes como simplesmente uma única matriz, mas você também pode organizá-los por tipo: entradas {breadsticks, sopa}, pratos principais {pizza, lasanha, massas, bebidas} {água, vinho tinto, vinho branco}. Desta forma, você pode se referir a itens individualmente ou como coleções. A matriz de dimensão única, como acontece com o seu código[] matriz, lojas elementos (itens de dados individuais) como este:
Int umArray [] = {0,1,2,3} -
A matriz bidimensional armazena elementos como este:
Int umArray [] [] = {{0,1,2,3}, {3,2,3,0}, {4,3,8,1}, {2,3,4,5}} -
Quando você lê a partir de uma matriz bidimensional, o primeiro valor entre colchetes especifica qual elemento que deseja leitura-o segundo valor entre parênteses especifica o elemento dentro do elemento especificado. Ao trabalhar com matrizes, o sistema de numeração começa do zero. Assim, por exemplo, na matriz bidimensional acima, umArray [2] [0] está segurando o valor 4.
o kEYMAP é simplesmente usado para guardar quais dígitos são no teclado. É literalmente um mapa das chaves.
Quando uma tecla é pressionada, você usa o kEYMAP para identificar qual número é nesse local, para que você possa compará-lo ao seu código predeterminado.
As duas variáveis finais são matrizes que armazenam qual dos pinos digitais do seu Arduino as linhas e colunas do seu teclado estão conectados.