Índice:
- Etapa 1: O circuito
- Etapa 2: Prova - Excel
- Etapa 3: Programação do Arduino
- Etapa 4: Circuitos TinkerCAD
- Etapa 5: "Até logo e obrigado por todos os peixes." (ref.1)
- Etapa 6: Referências
Vídeo: Use 1 entrada analógica para 6 botões para Arduino: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Muitas vezes me perguntei como poderia obter mais entradas digitais para meu Arduino. Recentemente, ocorreu-me que deveria ser capaz de usar uma das entradas analógicas para trazer várias entradas digitais. Fiz uma pesquisa rápida e descobri onde as pessoas podiam fazer isso, mas que só permitiam que um único botão fosse pressionado por vez. Quero poder ter qualquer combinação de botões para serem pressionados SIMULTANEAMENTE. Então, com a ajuda do TINKERCAD CIRCUITS, eu me propus a fazer isso acontecer.
Por que eu iria querer pressionamentos de botão simultâneos? Conforme ilustrado no projeto dos circuitos TinkerCad, ele pode ser usado para entradas de chave DIP para seleção de diferentes modos dentro do programa.
O circuito que criei usa a fonte de 5 V disponível no Arduino e usa 7 resistores e 6 botões ou interruptores.
Etapa 1: O circuito
Os Arduino têm entradas analógicas que aceitam uma entrada de 0 V a 5 V. Esta entrada tem uma resolução de 10 bits, o que significa que o sinal é dividido em 2 ^ 10 segmentos, ou 1.024 contagens. Com base nisso, o máximo que poderíamos inserir em uma entrada analógica, permitindo pressionamentos simultâneos, seria de 10 botões para 1 entrada analógica. Mas, este não é um mundo perfeito. Há resistência nos condutores, ruído de fontes externas e energia imperfeita. Então, para me dar bastante flexibilidade, planejei projetar isso para 6 botões. Isso foi, em parte, influenciado pelo fato de que os Circuitos TinkerCAD tinham um objeto DIP Switch de 6 chaves, o que tornaria o teste mais fácil.
A primeira etapa do meu projeto foi garantir que cada botão, quando pressionado individualmente, forneceria uma voltagem exclusiva. Isso excluiu que todos os resistores tivessem o mesmo valor. A próxima etapa foi que os valores de resistência, quando adicionados em paralelo, não poderiam ter a mesma resistência que qualquer valor de resistor único. Quando os resistores são conectados em paralelo, a resistência resultante pode ser calculada por Rx = 1 / [(1 / R1) + (1 / R2)]. Portanto, se R1 = 2000 e R2 = 1000, Rx = 667. Eu especulei que, dobrando o tamanho de cada resistor, não veria a mesma resistência para nenhuma das combinações.
Então, meu circuito até este ponto era ter 6 interruptores, cada um com seu próprio resistor. Mas, há mais um resistor necessário para completar este circuito.
O último resistor tem 3 finalidades. Primeiro, ele atua como um resistor pull-down. Sem o resistor, quando nenhum botão é pressionado, o circuito está incompleto. Isso permitiria que a tensão na entrada analógica do Arduino flutuasse para qualquer potencial de tensão. Um resistor pull-down basicamente reduz a tensão para 0 V. O segundo objetivo é limitar a corrente deste circuito. A lei de Ohm afirma que V = IR, ou Tensão = Corrente multiplicada pela Resistência. Com uma dada fonte de tensão, quanto maior o resistor significa que a corrente seria menor. Portanto, se um sinal de 5 V fosse aplicado a um resistor de 500 ohms, a maior corrente que poderíamos ver seria 0,01 A ou 10 mA. O terceiro objetivo é fornecer a tensão do sinal. A corrente total fluindo através do último resistor seria: i = 5V / Rtotal, onde Rtotal = Rlast + {1 / [(1 / R1) + (1 / R2) + (1 / R3) + (1 / R4) + (1 / R5) + (1 / R6)]}. No entanto, inclua apenas 1 / Rx para cada resistor que tiver seu botão correspondente pressionado. Da corrente total, a tensão fornecida à entrada analógica seria i * Rlast ou i * 500.
Etapa 2: Prova - Excel
A maneira mais rápida e fácil de provar que eu obteria resistências exclusivas e, portanto, tensões exclusivas com este circuito era usar os recursos do Excel.
Eu configurei todas as combinações possíveis de entradas de switch e organizei essas sequencialmente seguindo padrões binários. Um valor de "1" indica que a chave está ligada, em branco indica que ela está desligada. No topo da planilha, coloco os valores de resistência para cada chave e para o resistor pull-down. Em seguida, calculei a resistência equivalente para cada uma das combinações, exceto quando todos os resistores estão desligados, uma vez que esses resistores não terão um efeito sem ter uma fonte de alimentação para fornecê-los. Para tornar meus cálculos fáceis de forma que eu pudesse copiar e colar em cada combinação, incluí todas as combinações no cálculo multiplicando cada valor de chave (0 ou 1) por seu valor de resistência invertido. Fazer isso eliminou sua resistência do cálculo se a chave estava desligada. A equação resultante pode ser vista na imagem da planilha, mas Req = Rx + 1 / (Sw1 / R1 + Sw2 / R2 + Sw3 / R3 + Sw4 / R4 + Sw5 / R5 + Sw6 / R6). Usando Itotal = 5V / Req, determinamos a corrente total através do circuito. Esta é a mesma corrente que passa pelo resistor pull-down e nos fornece a tensão para nossa entrada analógica. Isso é calculado como Vin = Itotal x Rx. Examinando os dados Req e os dados Vin, podemos ver que realmente temos valores únicos.
Neste ponto, parece que nosso circuito funcionará. Agora, para descobrir como programar o Arduino.
Etapa 3: Programação do Arduino
Quando comecei a pensar sobre como programar o Arduino, inicialmente planejei configurar faixas de tensão individuais para determinar se uma chave estava ligada ou desligada. Mas, certa noite, enquanto estava deitado na cama, ocorreu-me que deveria ser capaz de encontrar uma equação para fazer isso. Como? EXCEL. O Excel tem a capacidade de calcular equações para melhor ajustar os dados em um gráfico. Para fazer isso, vou querer uma equação do valor inteiro das chaves (binário) versus a entrada de tensão correspondente a esse valor. Na minha pasta de trabalho do Excel, coloquei o valor inteiro no lado esquerdo da planilha. Agora, para determinar minha equação.
Aqui está um rápido tutorial sobre como determinar a equação de uma linha no Excel.
1) Selecione uma célula que não contenha dados. Se você selecionou uma célula que contém dados, o Excel tentará adivinhar qual é a tendência que você deseja. Isso torna muito mais difícil configurar uma tendência, porque o Excel raramente prevê corretamente.
2) Selecione a guia "Inserir" e selecione um gráfico "Dispersão".
3) Clique com o botão direito na caixa do gráfico e clique em "Selecionar dados…". Isso abrirá a janela "Selecionar fonte de dados". Selecione o botão Adicionar para continuar a selecionar os dados.
4) Dê a ele um nome de série (opcional). Selecione o intervalo para o eixo X clicando na seta para cima e selecionando os dados de tensão. Selecione o intervalo para o eixo Y clicando na seta para cima e selecionando Dados inteiros (0-63).
5) Clique com o botão direito sobre os pontos de dados e selecione "Adicionar linha de tendência …" Na janela "Formatar linha de tendência", selecione o botão Polinomial. Olhando para a tendência, vemos que a Ordem de 2 não é exatamente igual. Selecionei uma Ordem de 3 e achei que era muito mais preciso. Marque a caixa de seleção para "Exibir equação no gráfico". A equação final agora é exibida no gráfico.
6) Feito.
OK. De volta ao programa Arduino. Agora que temos a equação, programar o Arduino é fácil. O número inteiro que representa as posições do switch é calculado em 1 linha de código. Usando a função "bitread", podemos pegar o valor de cada bit individual e assim saber o estado de cada botão. (VER FOTOS)
Etapa 4: Circuitos TinkerCAD
Se você ainda não verificou os circuitos do TinkerCAD, faça-o agora. ESPERAR!!!! Termine de ler meu Instructable e, em seguida, dê uma olhada. Os circuitos do TinkerCAD tornam o teste dos circuitos do Arduino muito fácil. Inclui vários objetos elétricos e Arduinos, permitindo inclusive que você programe o Arduino para teste.
Para testar meu circuito, configurei 6 chaves usando um pacote de chaves DIP e as vinculei aos resistores. Para provar que o valor da tensão em minha planilha do Excel estava correto, exibi um voltímetro na entrada do Arduino. Tudo isso funcionou conforme o esperado.
Para provar que a programação do Arduino funcionou, eu envio os estados dos interruptores para LEDs, usando as saídas digitais do Arduino.
Em seguida, mudei todos os interruptores para todas as combinações possíveis e tenho o orgulho de dizer "FUNCIONA" !!!
Etapa 5: "Até logo e obrigado por todos os peixes." (ref.1)
Ainda não experimentei usar equipamento real, pois estou viajando a trabalho. Mas, depois de provar isso com os Circuitos TinkerCAD, acredito que funcionará. O desafio é que os valores dos resistores que especifiquei não são todos valores padrão para resistores. Para contornar isso, pretendo usar potenciômetros e combinações de resistores para obter os valores de que preciso.
Obrigado por ler meu instrutível. Espero que isso ajude você com seus projetos.
Deixe um comentário se você tentou enfrentar esse mesmo obstáculo e como o solucionou. Eu adoraria aprender mais maneiras de fazer isso.
Etapa 6: Referências
Você não achou que eu faria uma citação sem fornecer uma referência à fonte, não é?
ref. 1: Adams, Douglas. Adeus e obrigado pelos peixes. (O quarto livro da "trilogia" do Guia do Mochileiro das Galáxias)
Recomendado:
Use botões de pressão no seu Magicbit [Magicblocks]: 5 etapas
Use botões de pressão no seu Magicbit [Magicblocks]: Este tutorial irá ensiná-lo a usar os botões de pressão no seu Magicbit usando Magicblocks. Estamos usando o magicbit como placa de desenvolvimento neste projeto que é baseado no ESP32. Portanto, qualquer placa de desenvolvimento ESP32 pode ser usada neste projeto
Suporte de acrílico para tablet para Flight Sim com botões reais: 4 etapas
Suporte de Acrílico para Tablet para Flight Sim With Real Knobs: Este é um suporte para um tablet (por exemplo, iPad) para uso com o software de simulador de vôo. Usando módulos codificadores rotativos e um Arduino Mega, criei uma solução em que os botões físicos podem ser mapeados para controlar funções específicas do instrumento no sim. Como você
Jogos de 4 botões usando uma entrada analógica: 6 etapas (com imagens)
Jogos de 4 botões usando uma entrada analógica: Este instrutível foca no uso de uma linha de entrada analógica para vários botões que podem ser detectados independentemente uns dos outros. E para destacar o uso desses botões incluídos, está o software para jogar quatro jogos de 4 botões diferentes. Todos os jogos (8 em t
Entrada de toque capacitivo ESP32 usando "plugues de orifício metálico" para botões: 5 etapas (com imagens)
Entrada de toque capacitivo ESP32 usando "plugues de orifício metálico" para botões: enquanto eu estava finalizando as decisões de design para um projeto baseado no ESP32 WiFi Kit 32 que requer três entradas de botão, um problema perceptível era que o WiFi Kit 32 não possuía um único botão mecânico, ainda sozinho três botões mecânicos, f
Entrada IoT analógica - Introdução à IoT: 8 etapas
Entrada IoT analógica - Introdução à IoT: Compreender as entradas analógicas são uma parte crucial para entender como as coisas ao nosso redor funcionam, a maioria, senão todos os sensores, são sensores analógicos (às vezes esses sensores são convertidos para digitais). Ao contrário das entradas digitais, que só podem ser ligadas ou desligadas, a entrada analógica