Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste instrutível estaremos criando um projeto que controlará um Micro-Servo com um teclado rodando-o com um Arduino Uno.
Materiais utilizados:
Arduino Uno
Tábua de pão
Teclado 4x4
Micro-Servo
Etapa 1: Conecte o teclado
A primeira coisa que você precisa fazer é conectar o barramento de alimentação e o barramento de aterramento em sua placa de ensaio a partir de seu Arduino
- Conecte o pino de 5 V ao barramento de alimentação (vermelho)
- Conecte um pino de aterramento (GND) ao trilho de aterramento (azul)
Agora que a placa de ensaio tem energia e está aterrada, podemos começar a conectar nossos componentes.
Conectar o teclado é fácil, mas você precisa anotar os pinos no teclado e no arduino. Será útil quando voltarmos nossa atenção para o nosso código.
Lembre-se de começar pela esquerda ao usar seus fios!
- O primeiro pino vai para 13
- O segundo pino vai para 12
- O terceiro pino vai para 11
- O quarto pino vai para 10
- Quinto pino para 9
- Sexto pino para 8
- Sétimo pino para 7
- Oitavo pino para 6
Ao conectar o teclado, lembre-se de manter um pino pwm digital aberto. Vamos precisar dele para o micro-servo
Antes de chegarmos ao código, certifique-se de que instalou a Biblioteca do teclado. Ele pode ser encontrado em seu esboço, depois na guia de esboço e na biblioteca de inclusão. Você não conseguirá usar o teclado sem ele.
Agora vamos voltar para o código e verificar se o teclado funciona e fornece os valores atendidos
Notas rápidas: Certifique-se de ter a instrução if para verificar o teclado, caso contrário, não funcionará. Também tenha cuidado com os atrasos, eles irão bagunçar os botões que estão sendo registrados a partir do teclado
#incluir
linhas de bytes constantes = 4; // quatro linhas desde que o teclado esteja cheio
colunas de bytes constantes = 4; // quatro colunas, igual à anterior
botões char [linhas] [colunas] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};
byte linha P [linhas] = {13, 12, 11, 10}; // pinos de linha do teclado
colunas de bytes P [colunas] = {9, 8, 7, 6}; // pinos de coluna do teclado
Teclado numérico = Teclado (makeKeymap (botões), rowP, colunasP, linhas, colunas); // criar teclado
void setup () {
Serial.begin (9600); }
void loop () {
char buttonPressed = pad.getKey (); // obtém o caractere do teclado if (buttonPressed) // mostra qual botão foi pressionado no teclado {Serial.println (buttonPressed); }}
Etapa 2: Adicionar o Micro Servo
Agora vamos adicionar o servo motor. Este é realmente fácil de adicionar ao nosso projeto atual, já que o micro servidor tem apenas três fios.
- O fio marrom vai para o trilho de aterramento na placa de ensaio
- Vermelho vai para o barramento de alimentação
- Laranja vai para o pino 3 no Arduino. Lembre-se de que o microsservidor precisa ter um pino PWM no Arduino. Isso é devido ao servo usando TIMER2
Agora, vamos apenas ter certeza de que conectamos o micro servo corretamente e que ele se move
#include #include "Servo.h"
linhas de bytes constantes = 4; // quatro linhas desde que o teclado esteja cheio
colunas de bytes constantes = 4; // quatro colunas, igual à anterior
botões char [linhas] [colunas] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};
byte linha P [linhas] = {13, 12, 11, 10}; // pinos de linha do teclado
colunas de byte P [colunas] = {9, 8, 7, 6}; // pinos de coluna do teclado
Teclado numérico = Teclado (makeKeymap (botões), rowP, colunasP, linhas, colunas); // criar teclado
Servo currentServo; // cria um objeto servo para controlar um servo
// doze objetos servo podem ser criados na maioria das placas
int pos = 0; // variável para armazenar a posição do servo
void setup () {
Serial.begin (9600); currentServo.attach (3); // anexa o servo no pino 9 ao objeto servo
}
void loop () {
char buttonPressed = pad.getKey (); // obtém o caractere do teclado if (buttonPressed) // mostra qual botão foi pressionado no teclado {Serial.println (buttonPressed); }
currentServo.write (95);
}
Etapa 3: Modifique o código para usar o teclado no servo
Saiba que vamos modificar nosso código para que, quando pressionamos um botão específico no teclado, o servo se move para uma posição específica. Uma coisa importante primeiro. A posição do servo para 0 era estranha. Como eu tinha um servo de rotação contínua, sempre que chegava perto de 0, o servo simplesmente começava a girar. O número que coloquei no código foi o mais baixo possível sem que isso acontecesse. De qualquer forma, aqui está meu código final:
#include #include
linhas de bytes constantes = 4; // quatro linhas desde que o teclado esteja cheio
colunas de bytes constantes = 4; // quatro colunas, igual à anterior
botões char [linhas] [colunas] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};
byte linha P [linhas] = {13, 12, 11, 10}; // pinos de linha do teclado
colunas de bytes P [colunas] = {9, 8, 7, 6}; // pinos de coluna do teclado
Teclado numérico = Teclado (makeKeymap (botões), rowP, colunasP, linhas, colunas); // criar teclado
Servo myServo; //
void setup () {
Serial.begin (9600); myServo.attach (5); // anexa o servo no pino 9 ao objeto servo}
void loop () {
chave char = pad.getKey (); // obtém o caractere do teclado if (key == '0') {myServo.write (11); Serial.println ("0"); atraso (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); atraso (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); atraso (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); atraso (15); }
if (chave == '4')
{myServo.write (48); Serial.println ("4"); atraso (15); }
if (chave == '5')
{myServo.write (60); Serial.println ("5"); atraso (15); }
if (chave == '6')
{myServo.write (72); Serial.println ("6"); atraso (15); }
if (chave == '7')
{myServo.write (84); Serial.println ("7"); atraso (15); }
if (chave == '8')
{myServo.write (96); Serial.println ("8"); atraso (15); }
if (chave == '9')
{myServo.write (108); Serial.println ("9"); atraso (15); }
if (chave == '*')
{myServo.write (120); Serial.println ("*"); atraso (15); }
if (chave == '#')
{myServo.write (132); Serial.println ("#"); atraso (15); }
if (chave == 'A')
{myServo.write (146); Serial.println ("A"); atraso (15); }
if (chave == 'B')
{myServo.write (158); Serial.println ("B"); atraso (15); }
if (chave == 'C')
{myServo.write (170); Serial.println ("C"); atraso (15); }
if (chave == 'D')
{myServo.write (180); Serial.println ("D"); atraso (15); }}