Innholdsfortegnelse:

Servoposisjonering med tastatur: 3 trinn
Servoposisjonering med tastatur: 3 trinn

Video: Servoposisjonering med tastatur: 3 trinn

Video: Servoposisjonering med tastatur: 3 trinn
Video: Веб-разработка – информатика для руководителей бизнеса 2016 2024, November
Anonim
Servopositoning med tastatur
Servopositoning med tastatur

I denne instruksen vil vi lage et prosjekt som skal kontrollere en Micro-Servo med et tastatur som kjører den med en Arduino Uno.

Materialer som brukes:

Arduino Uno

Brødbrett

Tastatur 4x4

Mikro-servo

Trinn 1: Koble til tastaturet

Koble til tastaturet
Koble til tastaturet
Koble til tastaturet
Koble til tastaturet

Den aller første tanken du trenger å gjøre er å koble strømskinnen og jordingsskinnen på brødbrettet fra Arduino

  1. Koble 5V -pinnen til strømskinnen (rød)
  2. Koble en jordingsstift (GND) til jordingsskinnen (blå)

Nå som brødbrettet har strøm og er jordet, kan vi begynne å koble til komponentene våre.

Det er enkelt å koble til tastaturet, men du må ta hensyn til pinnene på tastaturet og arduinoen. Det vil komme godt med når vi retter oppmerksomheten mot koden vår.

Husk å starte til venstre når du bruker ledningene!

  • Første pin går til 13
  • Den andre pinnen går til 12
  • Tredje pin går til 11
  • Fjerde pinne går til 10
  • Femte pinne til 9
  • Sjette pin til 8
  • Syvende pin til 7
  • Åttende pin til 6

Når du kobler tastaturet, må du huske å holde en digital pwm -pinne åpen. Vi trenger det for mikroservoen

Før vi kommer til koden, må du kontrollere at du har installert tastaturbiblioteket. Det finnes i skissen din, deretter skisse -fanen, inkluder bibliotek. Du kan ikke bruke tastaturet uten det.

La oss nå slå til koden og sørge for at tastaturet fungerer og gir verdiene som er deltatt

Raske notater: Sørg for at du har if -setningen for å kontrollere tastaturet, ellers fungerer det ikke. Vær også forsiktig med forsinkelser, de vil rote med at knapper blir registrert fra tastaturet

#inkludere

const byte rader = 4; // fire rader siden tastaturet er fullt

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

bleknapper [rader] [kolonner] = {

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

byte radP [rader] = {13, 12, 11, 10}; // radpinner på tastaturet

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

Tastatur = Tastatur (makeKeymap (knapper), rowP, kolonnerP, rader, kolonner); // opprett tastatur

ugyldig oppsett () {

Serial.begin (9600); }

void loop () {

char buttonPressed = pad.getKey (); // få røya fra tastaturet hvis (buttonPressed) // vis hvilken knapp som ble trykket på tastaturet {Serial.println (buttonPressed); }}

Trinn 2: Tilsett mikroservoen

Tilsett mikroservoen
Tilsett mikroservoen
Tilsett mikroservoen
Tilsett mikroservoen

La oss nå legge til servomotoren. Denne er veldig enkel å legge til i vårt nåværende prosjekt siden mikroserveren bare har tre ledninger.

  • Brun ledning går til jordingsskinne på brødbrettet
  • Rødt går til Power rail
  • Orange går til Pin 3 på Arduino. Husk at mikroserveren må ha en PWM -pin på Arduino. Dette skyldes at servoen bruker TIMER2

La oss bare sørge for at vi koblet mikroservoen riktig og at den beveger seg

#include #include "Servo.h"

const byte rader = 4; // fire rader siden tastaturet er fullt

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

bleknapper [rader] [kolonner] = {

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

byte radP [rader] = {13, 12, 11, 10}; // radpinner på tastaturet

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

Tastatur = Tastatur (makeKeymap (knapper), rowP, kolonnerP, rader, kolonner); // opprett tastatur

Servo currentServo; // lage servoobjekt for å kontrollere en servo

// tolv servoobjekter kan opprettes på de fleste tavler

int pos = 0; // variabel for å lagre servoposisjonen

ugyldig oppsett () {

Serial.begin (9600); currentServo.attach (3); // fester servoen på pinne 9 til servoobjektet

}

void loop () {

char buttonPressed = pad.getKey (); // få røya fra tastaturet hvis (buttonPressed) // vis hvilken knapp som ble trykket på tastaturet {Serial.println (buttonPressed); }

currentServo.write (95);

}

Trinn 3: Endre kode for å bruke tastaturet på servoen

Vet at vi skal endre koden slik at når vi trykker på en bestemt knapp på tastaturet, flytter servoen til en bestemt posisjon. En ting av betydning først. Servoposisjonen for 0 var rar. Siden jeg hadde en kontinuerlig rotasjonsservo, når den kom nær 0, begynte servoen å snurre. Tallet jeg la inn i koden var så lavt jeg kunne gå uten at det skjedde. Uansett, her er min siste kode:

#include #include

const byte rader = 4; // fire rader siden tastaturet er fullt

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

bleknapper [rader] [kolonner] = {

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

byte radP [rader] = {13, 12, 11, 10}; // radpinner på tastaturet

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

Tastatur = Tastatur (makeKeymap (knapper), rowP, kolonnerP, rader, kolonner); // opprett tastatur

Servo myServo; //

ugyldig oppsett () {

Serial.begin (9600); myServo.attach (5); // fester servoen på pinne 9 til servoobjektet}

void loop () {

char key = pad.getKey (); // få røya fra tastaturet hvis (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økkel == '4')

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

hvis (nøkkel == '5')

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

hvis (nøkkel == '6')

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

hvis (nøkkel == '7')

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

hvis (nøkkel == '8')

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

hvis (nøkkel == '9')

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

hvis (nøkkel == '*')

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

hvis (nøkkel == '#')

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

hvis (nøkkel == 'A')

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

hvis (nøkkel == 'B')

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

hvis (nøkkel == 'C')

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

hvis (nøkkel == 'D')

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

Anbefalt: