Como adicionar um interruptor e entrada botões ao seu Arduino Project Clock

Para o seu Project Clock Arduino, você primeiro adicionar um dos interruptores de botão de pressão e um dos resistores, que você usa como uma entrada para incrementar as horas de alarme. As obras de botão, permitindo + 5V a ser aplicada ao pino 7 quando é pressionado.

Quando a corrente flui através do comutador, ele encontra a resistência, e, em vez leva a via mais fácil para a terra através do pino 7 (existem ligações para moídas internamente, dentro do microcontrolador ATmega328 IC). Leitura Pin 7 com a digitalRead () a função retorna um valor de HIGH (+ 5V).

image0.jpg

Quando não está pressionado, PIN 7 é conectado através do resistor para GND, através da barra de terra. Lendo o pino 7 com o digitalRead () a função retorna um valor de BAIXA (0V).

Agora adicione o segundo botão interruptor e resistência, o que incrementa os minutos. Deve ser conectado ao pino digital 8.

Por último, acrescente o interruptor deslizante, que tem três posições, e duas resistências. Você pode ver que as ligações eléctricas para o interruptor deslizante são muito semelhantes aos dois interruptores de tecla. Mas porque é um controle deslizante, ele permanece na posição que você colocá-lo.

Na posição esquerda, ele mantém + 5V no pino digital 10. Na posição correta, ele mantém + 5V no pino digital 10. No centro, não faz sentido, e ambos os pinos digitais estão ligados apenas ao trilho do solo .

Lendo estes pinos, você pode determinar se o relógio é Alarme modo SET (Pino 6 é HIGH), Relógio modo armado (Pin 10 é HIGH), ou simplesmente no modo Time Display (sem connection- Pin 6 e Pin 10 são LOW).

image1.jpg

Agora adicione o código necessário para ler e responder ao hardware. Você precisa de algumas variáveis ​​para armazenar o estado do sistema e manter o controle de quando disparar o alarme. Na seção declaração da variável, adicione o seguinte código:

...DateTime agora boolean displayAlarmSet = falso-// Se nós estamos no modo ou programa de alarme show de tempo definido modeboolean alarme falso-= // Se o alarme é atualmente happeningboolean armada = falso-// Se o alarme está armado ou notint alarmHrs = 12- // Você pode definir a hora do alarme no código, hereint alarmMins = 00-

a variável displayAlarmSet permite-lhe alternar entre mostrar a hora do relógio ou mostrar a hora do alarme, que você usar no updateDisplay () função, um pouco mais tarde. Você pode usar o interruptor deslizante para alterar o valor dessa variável.

o # 147-alarme # 148- variável controla se ou não o alarme está acontecendo atualmente, de modo que você pode soar a sirene piezelétrica, se necessário.

Você também precisa manter o controle de quando disparar o alarme. Isto é feito com dois números inteiros, alarmHrs e alarmMins. Se você deseja definir a hora do alarme a partir do software e não a partir dos botões, você pode definir que, alterando o valor inicial destas variáveis.

Contando os dois botões, e os dois estados que podem ser definidos pelo interruptor slide, você tem quatro entradas. Então, você precisa de quatro pinos digitais para lê-los. Você usá-los para a entrada, por isso eles precisam ser ativados no configuração() parte do seu código. Você também vai usar a sirene piezo para a saída, depois, mas ele pode ser adicionado agora, para adicionar o seguinte código:

// A entrada do usuário para definir o alarme timeconst int alarmSetPin = 6 // Usado para mudar para alarme definido modeconst int incrementAlarmHrsPin = 7- // usado para incrementar o horário de alarme em alarme definido modeconst int incrementAlarmMinsPin = 8- // Usado para incrementar o alarme minutos em alarme definido modeconst int piezoPin = 9- // Usado para a piezoelétrico sounderconst int alarmArmedPin = 10 // Use para ativar o alarme para disparar ... setup () {... lcd.clear () - / / SET vários pinos para entrada e -pinMode (incrementAlarmHrsPin, eNTRADA) -pinMode (incrementAlarmMinsPin, eNTRADA) -pinMode outputpinMode (alarmSetPin, eNTRADA) (alarmArmedPin, eNTRADA) -pinMode (piezoPin, OUTPUT) -

Nota, as reticências (...) indicam o código que você adicionou anteriormente - não há necessidade de repetir isso aqui. Há cinco novos números inteiros, que lidam com os pinos de entrada. Estas não mudam ao longo do programa assim que são inteiro constantes.

Ligou o interruptor ao Pino 6 e Pino 10 para lidar com qualquer um de definir o alarme ou armar-lo para ir para fora. Você ligou os interruptores de tecla ao Pino 7 e Pin 8. Cada um controla separadamente incrementar as horas e minutos.

Você só pode incrementar para cima. Caso contrário, você nem precisa botões adicionais para diminuir horas e minutos ou uma maneira de alternar entre Aumentando e Diminuindo, que seria desnecessariamente complicado. Finalmente, estes pinos são utilizados para a entrada, então eles têm de ser explicitamente definido para ser usado para entrada com o pinMode () função.

menu