Tabla de contenido:

Posicionamiento de servo con un teclado: 3 pasos
Posicionamiento de servo con un teclado: 3 pasos

Video: Posicionamiento de servo con un teclado: 3 pasos

Video: Posicionamiento de servo con un teclado: 3 pasos
Video: CURSO ARDUINO 2021 LECCION 14 Servomotor Controlado por Teclado 2024, Noviembre
Anonim
Posicionamiento de servo con un teclado
Posicionamiento de servo con un teclado

En este instructable crearemos un proyecto que controlará un Micro-Servo con un teclado ejecutándolo con un Arduino Uno.

Materiales usados:

Arduino Uno

Tablero de circuitos

Teclado 4x4

Micro-Servo

Paso 1: Conecte el teclado

Cablee el teclado
Cablee el teclado
Cablee el teclado
Cablee el teclado

Lo primero que debe hacer es conectar el riel de alimentación y el riel de conexión a tierra en su placa de pruebas desde su Arduino

  1. Conecte el pin de 5V al riel de alimentación (rojo)
  2. Conecte un pin de tierra (GND) al riel de tierra (azul)

Ahora que la placa de pruebas tiene energía y está conectada a tierra, podemos comenzar a cablear nuestros componentes.

El cableado del teclado es fácil, pero debe tomar nota de los pines del teclado y del arduino. Será útil cuando prestemos atención a nuestro código.

¡Recuerde comenzar por la izquierda cuando use sus cables!

  • El primer pin va al 13
  • El segundo pin va a 12
  • El tercer pin va al 11
  • El cuarto pin va al 10
  • Quinto pin al 9
  • Sexto pin a 8
  • Séptimo Pin al 7
  • Octavo Pin a 6

Al cablear el teclado, recuerde mantener abierto un pin pwm digital. Lo necesitaremos para el micro-servo.

Antes de llegar al código, asegúrese de haber instalado la biblioteca de teclados. Se puede encontrar en su boceto, luego en la pestaña de boceto, incluir biblioteca. No podrá utilizar el teclado sin él.

Ahora pasemos al código y asegurémonos de que el teclado funciona y da los valores atendidos

Notas rápidas: asegúrese de tener la instrucción if para verificar el teclado, de lo contrario no funcionará. También tenga cuidado con los retrasos, ya que pueden interferir con los botones que se registran desde el teclado.

#incluir

filas de bytes constantes = 4; // cuatro filas ya que el teclado está lleno

columnas de bytes constantes = 4; // cuatro columnas, igual que arriba

botones de caracteres [filas] [columnas] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};

byte rowP [filas] = {13, 12, 11, 10}; // fila de pines del teclado

columnas de bytes P [columnas] = {9, 8, 7, 6}; // pines de columna del teclado

Teclado pad = Teclado (makeKeymap (botones), filaP, columnasP, filas, columnas); // crear teclado

configuración vacía () {

Serial.begin (9600); }

bucle vacío () {

char buttonPressed = pad.getKey (); // obtener el carácter del teclado if (buttonPressed) // mostrar qué botón se presionó en el teclado {Serial.println (buttonPressed); }}

Paso 2: agregue el Micro Servo

Agregue el Micro Servo
Agregue el Micro Servo
Agregue el Micro Servo
Agregue el Micro Servo

Ahora agreguemos el servomotor. Este es realmente fácil de agregar a nuestro proyecto actual ya que el micro servidor solo tiene tres cables.

  • El cable marrón va al riel de conexión a tierra en la placa de pruebas
  • El rojo va al carril de alimentación
  • Orange va al Pin 3 en el Arduino. Recuerde que el micro servidor debe tener un pin PWM en el Arduino. Esto se debe a que el servo usa TIMER2

Ahora asegurémonos de que conectamos el micro servo correctamente y de que se mueve

#include #include "Servo.h"

filas de bytes constantes = 4; // cuatro filas ya que el teclado está lleno

columnas de bytes constantes = 4; // cuatro columnas, igual que arriba

botones de caracteres [filas] [columnas] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};

byte rowP [filas] = {13, 12, 11, 10}; // fila de pines del teclado

bytes columnas P [columnas] = {9, 8, 7, 6}; // pines de columna del teclado

Teclado pad = Teclado (makeKeymap (botones), filaP, columnasP, filas, columnas); // crear teclado

Servo currentServo; // crea un objeto servo para controlar un servo

// Se pueden crear doce objetos servo en la mayoría de las placas

int pos = 0; // variable para almacenar la posición del servo

configuración vacía () {

Serial.begin (9600); currentServo.attach (3); // conecta el servo en el pin 9 al objeto servo

}

bucle vacío () {

char buttonPressed = pad.getKey (); // obtener el carácter del teclado if (buttonPressed) // mostrar qué botón se presionó en el teclado {Serial.println (buttonPressed); }

currentServo.write (95);

}

Paso 3: Modifique el código para usar el teclado en el servo

Sepa que vamos a modificar nuestro código para que cuando presionemos un botón en particular en el teclado, el servo se mueva a una posición en particular. Primero, algo importante. La posición del servo para 0 era extraña. Como tenía un servo de rotación continua, cada vez que se acercaba a 0, el servo comenzaba a girar. El número que puse en el código fue lo más bajo que pude sin que eso sucediera. De todos modos, aquí está mi código final:

#incluir #incluir

filas de bytes constantes = 4; // cuatro filas ya que el teclado está lleno

columnas de bytes constantes = 4; // cuatro columnas, igual que arriba

botones de caracteres [filas] [columnas] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '}};

byte rowP [filas] = {13, 12, 11, 10}; // fila de pines del teclado

bytes columnas P [columnas] = {9, 8, 7, 6}; // pines de columna del teclado

Teclado pad = Teclado (makeKeymap (botones), filaP, columnasP, filas, columnas); // crear teclado

Servo myServo; //

configuración vacía () {

Serial.begin (9600); myServo.attach (5); // conecta el servo en el pin 9 al objeto servo}

bucle vacío () {

char key = pad.getKey (); // obtener el carácter del teclado if (key == '0') {myServo.write (11); Serial.println ("0"); retraso (15); } if (clave == '1') {myServo.write (12); Serial.println ("1"); retraso (15); } if (clave == '2') {myServo.write (24); Serial.println ("2"); retraso (15); } if (clave == '3') {myServo.write (36); Serial.println ("3"); retraso (15); }

si (clave == '4')

{myServo.write (48); Serial.println ("4"); retraso (15); }

si (clave == '5')

{myServo.write (60); Serial.println ("5"); retraso (15); }

si (clave == '6')

{myServo.write (72); Serial.println ("6"); retraso (15); }

si (clave == '7')

{myServo.write (84); Serial.println ("7"); retraso (15); }

si (clave == '8')

{myServo.write (96); Serial.println ("8"); retraso (15); }

si (clave == '9')

{myServo.write (108); Serial.println ("9"); retraso (15); }

si (clave == '*')

{myServo.write (120); Serial.println ("*"); retraso (15); }

si (clave == '#')

{myServo.write (132); Serial.println ("#"); retraso (15); }

si (clave == 'A')

{myServo.write (146); Serial.println ("A"); retraso (15); }

si (clave == 'B')

{myServo.write (158); Serial.println ("B"); retraso (15); }

si (clave == 'C')

{myServo.write (170); Serial.println ("C"); retraso (15); }

si (clave == 'D')

{myServo.write (180); Serial.println ("D"); retraso (15); }}

Recomendado: