Taula de continguts:

Posicionament servo amb teclat: 3 passos
Posicionament servo amb teclat: 3 passos

Vídeo: Posicionament servo amb teclat: 3 passos

Vídeo: Posicionament servo amb teclat: 3 passos
Vídeo: КАК НАСТРОИТЬ L4D2 2024, De novembre
Anonim
Posicionament servo amb teclat
Posicionament servo amb teclat

En aquest instructiu, crearem un projecte que controlarà un Micro-Servo amb un teclat que l’executa amb un Arduino Uno.

Materials utilitzats:

Arduino Uno

Taula de pa

Teclat 4x4

Micro-Servo

Pas 1: connecteu el teclat

Connecteu el teclat
Connecteu el teclat
Connecteu el teclat
Connecteu el teclat

El primer que heu de fer és connectar el rail d’alimentació i el cable de terra a la vostra placa des del vostre Arduino

  1. Connecteu el pin de 5V al carril de potència (vermell)
  2. Connecteu un passador de terra (GND) al rail de connexió a terra (blau)

Ara que la placa de connexió té energia i està connectada a terra, podem començar a connectar els nostres components.

Connectar el teclat és fàcil, però heu de prendre nota dels pins del teclat i de l’arduino. Serà útil quan fixem la nostra atenció en el nostre codi.

Recordeu que heu de començar a l'esquerra quan feu servir els cables.

  • El primer passador va a 13
  • El segon passador va a 12
  • El tercer passador va a 11
  • El quart pas passa a 10
  • Cinquè passador a 9
  • Sisè Pin a 8
  • Setè Pin a 7
  • Vuitè Pin a 6

Quan connecteu el teclat, recordeu de mantenir obert un pin digital pwm. La necessitarem per al micro-servo

Abans d’arribar al codi, assegureu-vos que heu instal·lat la biblioteca de teclats. Es pot trobar al vostre esbós i, a continuació, a la pestanya de bocet, inclou la biblioteca. No podreu utilitzar el teclat sense ell.

Ara anem al codi i ens assegurem que el teclat funcioni i doni els valors atesos

Notes ràpides: assegureu-vos que teniu la sentència if per comprovar el teclat, en cas contrari no funcionarà. Tingueu també en compte els retards, ja que s’embolicaran amb els botons registrats des del teclat

#incloure

files de bytes const = 4; // quatre files des que el teclat està ple

columnes de bytes const = 4; // quatre columnes, igual que l'anterior

botons char [files] [columnes] = {

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

byte fila P [files] = {13, 12, 11, 10}; // pins de fila del teclat

byte columnesP [columnes] = {9, 8, 7, 6}; // pins de columna del teclat

Teclat: teclat (makeKeymap (botons), fila P, columnes P, files, columnes); // crear teclat

configuració nul·la () {

Serial.begin (9600); }

bucle buit () {

button buttonPressed = pad.getKey (); // obtenir el caràcter del teclat si (buttonPressed) // mostra quin botó s'ha premut al teclat {Serial.println (buttonPressed); }}

Pas 2: afegiu el Micro Servo

Afegiu el Micro Servo
Afegiu el Micro Servo
Afegiu el Micro Servo
Afegiu el Micro Servo

Ara permet afegir el servomotor. Aquest és realment fàcil d'afegir al nostre projecte actual, ja que el micro servidor només té tres cables.

  • El filferro marró va al rail de connexió a terra de la placa
  • El vermell va al Power Rail
  • Orange va al Pin 3 de l'Arduino. Recordeu que el micro servidor ha de tenir un pin PWM a l'Arduino. Això es deu al servo que utilitza TIMER2

Ara només ens assegurem que hem connectat bé el micro servo i que es mou

#include #include "Servo.h"

files de bytes const = 4; // quatre files des que el teclat està ple

columnes de bytes const = 4; // quatre columnes, igual que l'anterior

botons char [files] [columnes] = {

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

byte fila P [files] = {13, 12, 11, 10}; // pins de fila del teclat

byte columnesP [columnes] = {9, 8, 7, 6}; // pins de columna del teclat

Teclat: teclat (makeKeymap (botons), fila P, columnes P, files, columnes); // crear teclat

Servo currentServo; // crear un objecte servo per controlar un servo

// es poden crear dotze servobjets a la majoria de taulers

int pos = 0; // variable per emmagatzemar la posició del servo

configuració nul·la () {

Serial.begin (9600); currentServo.attach (3); // fixa el servo al pin 9 a l'objecte servo

}

bucle buit () {

button buttonPressed = pad.getKey (); // obtenir el caràcter del teclat si (buttonPressed) // mostra quin botó s'ha premut al teclat {Serial.println (buttonPressed); }

currentServo.write (95);

}

Pas 3: Modifiqueu el codi per utilitzar el teclat del servidor

Sabeu que modificarem el nostre codi de manera que, quan premem un botó concret del teclat, el servo es mogui a una posició determinada. Una cosa d’importància primer. La posició del servo per a 0 era estranya. Com que tenia un servo de rotació contínua, sempre que s’acostava a 0, el servo començava a girar. El número que vaig posar al codi era tan baix com podia anar sense que això passés. De totes maneres, aquí teniu el meu codi final:

#include #include

files de bytes const = 4; // quatre files des que el teclat està ple

columnes de bytes const = 4; // quatre columnes, igual que l'anterior

botons char [files] [columnes] = {

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

byte fila P [files] = {13, 12, 11, 10}; // pins de fila del teclat

byte columnesP [columnes] = {9, 8, 7, 6}; // pins de columna del teclat

Teclat: teclat (makeKeymap (botons), fila P, columnes P, files, columnes); // crear teclat

Servo myServo; //

configuració nul·la () {

Serial.begin (9600); myServo.attach (5); // fixa el servo al pin 9 a l'objecte servo}

bucle buit () {

clau clau = pad.getKey (); // obtenir el caràcter del teclat if (key == '0') {myServo.write (11); Serial.println ("0"); retard (15); } if (clau == '1') {myServo.write (12); Serial.println ("1"); retard (15); } if (clau == '2') {myServo.write (24); Serial.println ("2"); retard (15); } if (clau == '3') {myServo.write (36); Serial.println ("3"); retard (15); }

if (clau == '4')

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

if (clau == '5')

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

if (clau == '6')

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

if (clau == '7')

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

if (clau == '8')

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

if (clau == '9')

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

if (clau == '*')

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

if (clau == '#')

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

if (clau == 'A')

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

if (clau == 'B')

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

if (clau == 'C')

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

if (clau == 'D')

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

Recomanat: