Talaan ng mga Nilalaman:

Servo Positoning Sa isang Keypad: 3 Hakbang
Servo Positoning Sa isang Keypad: 3 Hakbang

Video: Servo Positoning Sa isang Keypad: 3 Hakbang

Video: Servo Positoning Sa isang Keypad: 3 Hakbang
Video: Control Servo motor with a Push Button: Move Servo and Return SPB-1 2024, Nobyembre
Anonim
Servo Positoning Sa isang Keypad
Servo Positoning Sa isang Keypad

Sa itinuturo na ito ay lilikha kami ng isang proyekto na makokontrol ang isang Micro-Servo na may isang keypad na nagpapatakbo nito sa isang Arduino Uno.

Mga Ginamit na Materyal:

Arduino Uno

Breadboard

4x4 Keypad

Micro-Servo

Hakbang 1: Wire the Keypad

Wire ang Keypad
Wire ang Keypad
Wire ang Keypad
Wire ang Keypad

Ang pinakaunang iniisip na kailangan mong gawin ay ang wire ng power rail at grounding rail sa iyong breadboard mula sa iyong Arduino

  1. Ikonekta ang 5V pin sa power rail (pula)
  2. Ikonekta ang isang Ground pin (GND) sa grounding rail (asul)

Ngayon na ang breadboard ay may kapangyarihan at na-grounded, maaari naming simulan ang pag-wire up ng aming mga bahagi.

Ang kable ng Keypad ay madali ngunit kailangan mong tandaan ang mga pin sa keypad at arduino. Darating ito sa madaling gamiting kapag binaling namin ang aming pansin sa aming code.

Tandaan na magsimula sa kaliwa kapag ginagamit ang iyong mga wire!

  • Ang unang pin ay pupunta sa 13
  • Ang pangalawang pin ay pupunta sa 12
  • Ang pangatlong pin ay pupunta sa 11
  • Ang pang-apat na pin ay papunta sa 10
  • Pang-limang pin hanggang 9
  • Pang-anim na Pin hanggang 8
  • Pang-pitong Pin sa 7
  • Ikawalo Pin sa 6

Kapag nag-kable ng keypad, tandaan na panatilihing bukas ang isang digital pwm pin. Kakailanganin namin ito para sa micro-servo

Bago kami makarating sa code, tiyaking na-install mo ang Keypad Library. Maaari itong matagpuan sa iyong sketch, pagkatapos ay sketch tab, isama ang library. Hindi mo magagamit ang keypad nang wala ito.

Hinahayaan na ngayong lumiko sa code at siguraduhin na gumagana ang keypad at ibibigay ang mga dinaluhang halaga

Mabilis na Mga Tala: Tiyaking mayroon kang kung pahayag upang suriin ang keypad, kung hindi man ay hindi gagana ito. Mag-ingat din sa mga pagkaantala, guguluhin nila ang mga pindutan na nakarehistro mula sa keypad

# isama

const byte row = 4; // apat na hilera dahil ang keypad ay puno na

mga byte haligi = 4; // apat na haligi, pareho sa itaas

mga char button [row] [haligi] = {

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

byte rowP [row] = {13, 12, 11, 10}; // row pin ng keypad

byte haligiP [mga haligi] = {9, 8, 7, 6}; // mga haligi ng haligi ng keypad

Keypad pad = Keypad (makeKeymap (mga pindutan), rowP, mga haligiP, mga hilera, mga haligi); // lumikha ng keypad

walang bisa ang pag-setup () {

Serial.begin (9600); }

void loop () {

char buttonPressed = pad.getKey (); // kunin ang char mula sa keypad kung (buttonPressed) // ipakita kung anong pindutan ang pinindot sa keypad na {Serial.println (buttonPressed); }}

Hakbang 2: Idagdag ang Micro Servo

Idagdag ang Micro Servo
Idagdag ang Micro Servo
Idagdag ang Micro Servo
Idagdag ang Micro Servo

Hinahayaan na ngayong idagdag ang servo motor. Ang isang ito ay talagang madaling idagdag sa aming kasalukuyang proyekto dahil ang micro server ay may tatlong mga wire lamang.

  • Ang brown wire ay papunta sa grounding rail sa breadboard
  • Pumunta si Red sa Power rail
  • Pumunta si Orange sa Pin 3 sa Arduino. Tandaan na ang micro server ay dapat magkaroon ng isang PWM pin sa Arduino. Ito ay dahil sa servo gamit ang TIMER2

Hinahayaan lang ngayon na siguraduhing naka-wire namin ang micro servo nang tama at gumagalaw ito

# isama ang # isama ang "Servo.h"

const byte row = 4; // apat na hilera dahil ang keypad ay puno na

mga byte haligi = 4; // apat na haligi, pareho sa itaas

mga char button [row] [haligi] = {

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

byte rowP [row] = {13, 12, 11, 10}; // row pin ng keypad

byte haligiP [mga haligi] = {9, 8, 7, 6}; // mga haligi ng haligi ng keypad

Keypad pad = Keypad (makeKeymap (mga pindutan), rowP, mga haligiP, mga hilera, mga haligi); // lumikha ng keypad

Servo kasalukuyangServo; // create servo object upang makontrol ang isang servo

// labindalawang mga bagay na servo ay maaaring malikha sa karamihan ng mga board

int pos = 0; // variable upang maiimbak ang posisyon ng servo

walang bisa ang pag-setup () {

Serial.begin (9600); currentServo.attach (3); // nakakabit ang servo sa pin 9 sa object ng servo

}

void loop () {

char buttonPressed = pad.getKey (); // kunin ang char mula sa keypad kung (buttonPressed) // ipakita kung anong pindutan ang pinindot sa keypad na {Serial.println (buttonPressed); }

currentServo.write (95);

}

Hakbang 3: Baguhin ang Code upang magamit ang Keypad sa Servo

Alam na babaguhin namin ang aming code upang kapag pinindot namin ang isang partikular na pindutan sa keypad, lumilipat ang servo sa isang partikular na posisyon. Isang bagay na may kahalagahan muna. Ang posisyon ng servo para sa 0 ay kakaiba. Dahil mayroon akong isang tuluy-tuloy na servo ng rotation, tuwing malapit ito sa 0, nagsisimulang paikutin ang servo. Ang bilang na inilagay ko sa code ay kasing baba ng paglalakad ko nang hindi nangyayari iyon. Anyways, heres my final code:

# isama ang # isama

const byte row = 4; // apat na hilera dahil ang keypad ay puno na

mga byte haligi = 4; // apat na haligi, pareho sa itaas

mga char button [row] [haligi] = {

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

byte rowP [row] = {13, 12, 11, 10}; // row pin ng keypad

byte haligiP [mga haligi] = {9, 8, 7, 6}; // mga haligi ng haligi ng keypad

Keypad pad = Keypad (makeKeymap (mga pindutan), rowP, mga haligiP, mga hilera, mga haligi); // lumikha ng keypad

Servo myServo; //

walang bisa ang pag-setup () {

Serial.begin (9600); myServo.attach (5); // nakakabit ang servo sa pin 9 sa servo object}

void loop () {

char key = pad.getKey (); // kunin ang char mula sa keypad kung (key == '0') {myServo.write (11); Serial.println ("0"); pagkaantala (15); } kung (key == '1') {myServo.write (12); Serial.println ("1"); pagkaantala (15); } kung (key == '2') {myServo.write (24); Serial.println ("2"); pagkaantala (15); } kung (key == '3') {myServo.write (36); Serial.println ("3"); pagkaantala (15); }

kung (key == '4')

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

kung (key == '5')

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

kung (key == '6')

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

kung (key == '7')

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

kung (key == '8')

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

kung (key == '9')

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

kung (key == '*')

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

kung (key == '#')

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

kung (key == 'A')

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

kung (key == 'B')

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

kung (key == 'C')

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

kung (key == 'D')

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

Inirerekumendang: