Indholdsfortegnelse:

Servopositoning med et tastatur: 3 trin
Servopositoning med et tastatur: 3 trin

Video: Servopositoning med et tastatur: 3 trin

Video: Servopositoning med et tastatur: 3 trin
Video: Как сделать НАСТОЯЩИЙ сервопривод из любого мотора. Подчиненное регулирование. Робособаке быть? ЗС№5 2024, November
Anonim
Servopositoning med et tastatur
Servopositoning med et tastatur

I denne instruktive opbygger vi et projekt, der styrer en Micro-Servo med et tastatur, der kører det med en Arduino Uno.

Anvendte materialer:

Arduino Uno

Brødbræt

4x4 tastatur

Mikro-servo

Trin 1: Tilslut tastaturet

Tilslut tastaturet
Tilslut tastaturet
Tilslut tastaturet
Tilslut tastaturet

Den allerførste tanke, du skal gøre, er at tilslutte strømskinnen og jordingsskinnen til dit brødbræt fra din Arduino

  1. Tilslut 5V -stiften til strømskinnen (rød)
  2. Tilslut en jordstift (GND) til jordskinnen (blå)

Nu hvor brødbrættet har strøm og er jordet, kan vi begynde at tilslutte vores komponenter.

Tilslutning af tastaturet er let, men du skal notere benene på tastaturet og arduino. Det vil være praktisk, når vi retter vores opmærksomhed mod vores kode.

Husk at starte til venstre, når du bruger dine ledninger!

  • Første pin går til 13
  • Anden pin går til 12
  • Tredje pin går til 11
  • Fjerde pin går til 10
  • Femte pin til 9
  • Sjette pin til 8
  • Syvende pin til 7
  • Ottende pin til 6

Når du tilslutter tastaturet, skal du huske at holde en digital pwm -pin åben. Vi får brug for det til mikroservoen

Inden vi kommer til koden, skal du kontrollere, at du har installeret tastaturbiblioteket. Det kan findes i din skitse, derefter skitser fanen, inkluderer bibliotek. Du kan ikke bruge tastaturet uden det.

Lad os nu vende os til koden og sikre, at tastaturet fungerer og giver de overvågede værdier

Hurtige noter: Sørg for at have if -sætningen til at kontrollere tastaturet, ellers fungerer det ikke. Vær også forsigtig med forsinkelser, de vil rode med knapper, der registreres fra tastaturet

#omfatte

const byte rækker = 4; // fire rækker, da tastaturet er fuldt

const byte kolonner = 4; // fire kolonner, samme som ovenfor

tegnknapper [rækker] [kolonner] = {

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

byte rækkeP [rækker] = {13, 12, 11, 10}; // stifter på tastaturet

byte kolonnerP [kolonner] = {9, 8, 7, 6}; // søjlepinde på tastaturet

Tastatur = tastatur (makeKeymap (knapper), rowP, kolonnerP, rækker, kolonner); // opret tastatur

ugyldig opsætning () {

Serial.begin (9600); }

void loop () {

char buttonPressed = pad.getKey (); // hent char fra tastaturet hvis (buttonPressed) // vis hvilken knap der blev trykket på tastaturet {Serial.println (buttonPressed); }}

Trin 2: Tilføj mikroservoen

Tilsæt Micro Servo
Tilsæt Micro Servo
Tilsæt Micro Servo
Tilsæt Micro Servo

Lad os nu tilføje servomotoren. Denne er virkelig let at tilføje til vores nuværende projekt, da mikroserveren kun har tre ledninger.

  • Brun tråd går til jordskinne på brødbrættet
  • Rød går til Power rail
  • Orange går til Pin 3 på Arduino. Husk, at mikroserveren skal have en PWM -pin på Arduino. Dette skyldes, at servoen bruger TIMER2

Lad os nu bare sørge for, at vi har tilsluttet mikroservoen rigtigt, og at den bevæger sig

#include #include "Servo.h"

const byte rækker = 4; // fire rækker, da tastaturet er fuldt

const byte kolonner = 4; // fire kolonner, samme som ovenfor

tegnknapper [rækker] [kolonner] = {

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

byte rækkeP [rækker] = {13, 12, 11, 10}; // stifter på tastaturet

byte kolonnerP [kolonner] = {9, 8, 7, 6}; // søjlepinde på tastaturet

Tastatur = Tastatur (makeKeymap (knapper), rowP, kolonnerP, rækker, kolonner); // opret tastatur

Servo currentServo; // opret et servoobjekt for at styre en servo

// tolv servoobjekter kan oprettes på de fleste tavler

int pos = 0; // variabel til lagring af servopositionen

ugyldig opsætning () {

Serial.begin (9600); currentServo.attach (3); // fastgør servoen på pin 9 til servoobjektet

}

void loop () {

char buttonPressed = pad.getKey (); // hent char fra tastaturet hvis (buttonPressed) // vis hvilken knap der blev trykket på tastaturet {Serial.println (buttonPressed); }

currentServo.write (95);

}

Trin 3: Rediger kode for at bruge tastaturet på servoen

Ved, at vi vil ændre vores kode, så når vi trykker på en bestemt knap på tastaturet, flytter servoen til en bestemt position. En ting af betydning først. Servopositionen for 0 var underlig. Da jeg havde en kontinuerlig rotation servo, når den kom tæt på 0, begyndte servoen lige at snurre. Det nummer, jeg satte i koden, var så lavt, som jeg kunne gå, uden at det skete. Anyways, her er min sidste kode:

#include #include

const byte rækker = 4; // fire rækker, da tastaturet er fuldt

const byte kolonner = 4; // fire kolonner, samme som ovenfor

tegnknapper [rækker] [kolonner] = {

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

byte rækkeP [rækker] = {13, 12, 11, 10}; // stifter på tastaturet

byte kolonnerP [kolonner] = {9, 8, 7, 6}; // søjlepinde på tastaturet

Tastatur = tastatur (makeKeymap (knapper), rowP, kolonnerP, rækker, kolonner); // opret tastatur

Servo myServo; //

ugyldig opsætning () {

Serial.begin (9600); myServo.attach (5); // fastgør servoen på pin 9 til servoobjektet}

void loop () {

char nøgle = pad.getKey (); // hent char fra tastaturet if (key == '0') {myServo.write (11); Serial.println ("0"); forsinkelse (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); forsinkelse (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); forsinkelse (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); forsinkelse (15); }

hvis (nøgle == '4')

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

hvis (nøgle == '5')

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

hvis (nøgle == '6')

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

hvis (nøgle == '7')

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

hvis (nøgle == '8')

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

hvis (nøgle == '9')

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

hvis (nøgle == '*')

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

hvis (key == '#')

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

hvis (key == 'A')

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

hvis (nøgle == 'B')

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

hvis (key == 'C')

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

hvis (key == 'D')

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

Anbefalede: