Como executar o loop principal para o seu projeto arduino sistema de entrada de teclado

Você terá que executar um loop principal para o seu sistema de entrada de teclado projeto Arduino. Existem apenas algumas coisas que o código faz para operar o seu sistema de entrada. O loop principal funciona da seguinte forma:

Video: ARDUINO Sistema de Controle de Acesso.mp4

  1. Ouça uma chave.

  2. Se uma tecla foi pressionada, enviá-lo para o display LED.

  3. Incrementar o número de teclas pressionadas por um.

  4. Inseri-lo no buffer de código na próxima posição disponível.

  5. Determinar se quatro dígitos foram inseridos.

    Se assim for, verifique se o código é válido.

  6. Se o código for válido, abra a porta e redefinir tudo para a próxima vez.

A principal coisa que você precisa fazer é verificar se uma tecla foi pressionada. A primeira instrução cria um local de Caracteres variável chamada chave para armazenar o personagem que é enviado de volta a partir de uma função chamada getKey (). Lembre o kEYMAP? É aí que este número, em última análise vem.

O valor char chave Também é atribuído ao codeBuffer [] matriz, que você usa para testar se o código é válido. Ele é adicionado para a posição armazenada pela keypressCount, que é incrementado para cima cada vez que um novo personagem é detectado. O caráter “-th zero” é o primeiro pressionamento de tecla detectado. assim codeBuffer [0] contém a primeira tecla pressionada no teclado, codeBuffer [1] contém a segunda tecla pressionada, e assim por diante.

O próximo condicional E se indicação executa somente quando uma tecla foi pressionada, altura em que as etapas 2 a 6 da lista anterior são processados. Se a chave não foi pressionado, o programa apenas espera para que isso aconteça. Quando isso acontecer, o sendCommand função executa:



sendCommand (keypressCount + 1, chave) -

o sendCommand tem dois parâmetros: quais sete segmentos número do módulo de mudar, eo que mudá-lo. Você usa keypressCount não só para manter o controle do número de chaves vezes ter sido pressionado até agora, mas também para dizer que dígitos de sete segmentos para acender.

Contudo, keypressCount começa em zero, porque o código[] a amortecedor[] matrizes de caracteres começar sua numeração em zero, e você deseja armazenar esses valores no lugar certo. Mas o chip Max começa dígitos de numeração de 1. Portanto, para usar keypressCount para iluminar o dígito de sete segmentos correta, você tem que adicionar um (+1) Para o seu valor.

A próxima instrução implementa esse recurso depuração útil. Se tiver definido a DEPURAR boleano para verdade, o código irá imprimir todas as suas variáveis ​​para a porta serial.

Video: Minicurso Arduíno (Sistema de Senha)

Em seguida, você incrementar o keypressCount por um e, em seguida, testar para ver se quatro dígitos ter sido pressionado. Se assim for, é hora do show. o atraso (500) declaração dá-lhe um meio segundo para ver o dígito do código do último acesso entrou porque o visor muda dependendo se o código de acesso correto foi digitado. Este teste é feito com um pouco de código em linguagem C nativa:

se (memcmp (codeBuffer, código, 4) == 0) {if (depuração) {Serial.println ("PARTIDA!") -} desbloquear () -}

A função memcmp () compara dois itens na memória e toma como seus parâmetros os dois itens e seus comprimentos esperados. Neste caso, você está comparando o codeBuffer array e o código armazenado no início do programa. Ambos têm um comprimento de quatro bytes.

Video: Método de Entrada ASCII com um Potenciômetro – Arduino

Se eles são exatamente os mesmos, o memcmp () função retorna um zero e isso é exatamente o que você está procurando na declaração condicional. Se eles são o mesmo (e DEPURAR é verdade), "PARTIDA!" é impresso para a porta série e a desbloquear () função é executada. Se a comparação de memória falhar, então a função não retorna um “0”, o que significa que o código errado foi inserido.

Em ambos os casos, você quer limpar o visor, pronto para a próxima vez. Então você chamar o clearDisplay () função. Outra instrução em linguagem C nativa faz um pouco de limpeza de memória:

memset (codeBuffer, 0, 4) -

Isso limpa o codeBuffer explicitamente, definindo-o como 0. Seu comprimento é de 4, que é o segundo parâmetro. Alguns podem argumentar que esta instrução não é necessário, mas é uma boa prática para gerenciar explicitamente a memória, em vez de deixar as coisas ao acaso.

Por último, porque este foi o quarto keypress e há apenas quatro dígitos para avaliar, o keypressCount precisa ser reposto a zero para que você está pronto para a próxima iteração.


Publicações relacionadas