INHOUDSOPGAWE:

Servopositoning met 'n toetsbord: 3 stappe
Servopositoning met 'n toetsbord: 3 stappe

Video: Servopositoning met 'n toetsbord: 3 stappe

Video: Servopositoning met 'n toetsbord: 3 stappe
Video: WECON Servo Positioning Control 2024, November
Anonim
Servopositoning met 'n toetsbord
Servopositoning met 'n toetsbord

In hierdie instruksies sal ons 'n projek skep wat 'n mikro-servo beheer met 'n bedieningspaneel met 'n Arduino Uno.

Gebruikte materiaal:

Arduino Uno

Broodbord

4x4 klavier

Mikro-servo

Stap 1: Bedraad die sleutelbord

Bedraad die sleutelbord
Bedraad die sleutelbord
Bedraad die sleutelbord
Bedraad die sleutelbord

Die heel eerste idee wat u moet doen, is om die kragrail en die grondrail op u broodbord van u Arduino af te dra

  1. Koppel die 5V -pen aan die kragrail (rooi)
  2. Koppel 'n grondpen (GND) aan die aardrail (blou)

Noudat die broodbord krag het en gegrond is, kan ons ons komponente begin aansluit.

Dit is maklik om die bedieningspaneel aan te sluit, maar u moet let op die penne op die toetsbord en die arduino. Dit sal handig wees as ons ons aandag vestig op ons kode.

Onthou om aan die linkerkant te begin wanneer u u drade gebruik!

  • Die eerste pen gaan na 13
  • Die tweede pen gaan na 12
  • Die derde pen gaan na 11
  • Die vierde pen gaan na 10
  • Vyfde pen tot 9
  • Sesde pen tot 8
  • Sewende pen tot 7
  • Agtste pen tot 6

Onthou om 'n digitale pwm -pen oop te hou as u die bedieningspaneel aansluit. Ons benodig dit vir die mikroservo

Maak seker dat u die sleutelbordbiblioteek geïnstalleer het voordat ons by die kode kom. Dit kan gevind word in u skets, en dan die skets -oortjie, insluitend die biblioteek. Daarsonder kan u nie die sleutelbord gebruik nie.

Laat ons nou na die kode gaan en seker maak dat die bedieningspaneel werk en die waardes bygee

Vinnige aantekeninge: maak seker dat u die if -verklaring het om die toetsbord te kontroleer, anders werk dit nie. Wees ook versigtig vir vertragings; dit knoei met knoppies wat vanaf die bedieningspaneel geregistreer word

#insluit

const byte rye = 4; // vier rye aangesien die sleutelbord vol is

const byte kolomme = 4; // vier kolomme, dieselfde as hierbo

char knoppies [rye] [kolomme] = {

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

greep ryP [rye] = {13, 12, 11, 10}; // rypenne van die klavier

greepkolomme P [kolomme] = {9, 8, 7, 6}; // kolompenne van die klavier

Toetsblok = Toetsenbord (makeKeymap (knoppies), rowP, kolommeP, rye, kolomme); // skep sleutelbord

ongeldige opstelling () {

Serial.begin (9600); }

leemte -lus () {

char buttonPressed = pad.getKey (); // haal die char van die bedieningspaneel af as (buttonPressed) // wys watter knoppie op die toetsbord {Serial.println (buttonPressed) gedruk is; }}

Stap 2: Voeg die Micro Servo by

Voeg die Micro Servo by
Voeg die Micro Servo by
Voeg die Micro Servo by
Voeg die Micro Servo by

Laat ons nou die servomotor byvoeg. Hierdie een is regtig maklik om by ons huidige projek te voeg, aangesien die mikrobediener slegs drie drade het.

  • Bruin draad gaan na die grondrail op die broodbord
  • Rooi gaan na die Power rail
  • Oranje gaan na pen 3 op die Arduino. Onthou dat die mikrobediener 'n PWM -pen op die Arduino moet hê. Dit is te wyte aan die servo wat TIMER2 gebruik

Laat ons nou net seker maak dat ons die mikroservo reg bedraad het en dat dit beweeg

#include #include "Servo.h"

const byte rye = 4; // vier rye aangesien die sleutelbord vol is

const byte kolomme = 4; // vier kolomme, dieselfde as hierbo

char -knoppies [rye] [kolomme] = {

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

greep ryP [rye] = {13, 12, 11, 10}; // rypenne van die klavier

greepkolomme P [kolomme] = {9, 8, 7, 6}; // kolompenne van die klavier

Toetsblok = Toetsenbord (makeKeymap (knoppies), rowP, kolommeP, rye, kolomme); // skep sleutelbord

Servo currentServo; // skep servo -voorwerp om 'n servo te beheer

// twaalf servo -voorwerpe kan op die meeste borde geskep word

int pos = 0; // veranderlike om die servoposisie op te slaan

ongeldige opstelling () {

Serial.begin (9600); currentServo.attach (3); // plak die servo op pen 9 aan die servo -voorwerp

}

leemte -lus () {

char buttonPressed = pad.getKey (); // haal die char van die bedieningspaneel af as (buttonPressed) // wys watter knoppie op die sleutelbord gedruk is {Serial.println (buttonPressed); }

currentServo.write (95);

}

Stap 3: Pas die kode aan om die bedieningspaneel op die servo te gebruik

Weet dat ons ons kode gaan verander sodat die servo na 'n spesifieke posisie beweeg wanneer ons op 'n spesifieke knoppie op die bedieningspaneel druk. Eerstens iets belangrik. Die servoposisie vir 0 was vreemd. Aangesien ek 'n servo met deurlopende rotasie gehad het, het die servo net begin draai wanneer dit naby 0 gekom het. Die nommer wat ek in die kode geplaas het, was so laag as wat ek kon sonder dat dit gebeur. In elk geval, hier is my laaste kode:

#include #include

const byte rye = 4; // vier rye aangesien die sleutelbord vol is

const byte kolomme = 4; // vier kolomme, dieselfde as hierbo

char -knoppies [rye] [kolomme] = {

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

greep ryP [rye] = {13, 12, 11, 10}; // rypenne van die klavier

greepkolomme P [kolomme] = {9, 8, 7, 6}; // kolompenne van die klavier

Toetsblok = Toetsenbord (makeKeymap (knoppies), rowP, kolommeP, rye, kolomme); // skep sleutelbord

Servo myServo; //

ongeldige opstelling () {

Serial.begin (9600); myServo.attach (5); // plak die servo op pen 9 aan die servo -voorwerp}

leemte -lus () {

char sleutel = pad.getKey (); // kry die char van die bedieningspaneel as (sleutel == '0') {myServo.write (11); Serial.println ("0"); vertraging (15); } if (sleutel == '1') {myServo.write (12); Serial.println ("1"); vertraging (15); } if (sleutel == '2') {myServo.write (24); Serial.println ("2"); vertraging (15); } if (sleutel == '3') {myServo.write (36); Serial.println ("3"); vertraging (15); }

as (sleutel == '4')

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

as (sleutel == '5')

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

as (sleutel == '6')

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

as (sleutel == '7')

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

as (sleutel == '8')

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

as (sleutel == '9')

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

as (sleutel == '*')

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

as (sleutel == '#')

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

as (sleutel == 'A')

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

as (sleutel == 'B')

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

as (sleutel == 'C')

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

as (sleutel == 'D')

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

Aanbeveel: