Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
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
Ang pinakaunang iniisip na kailangan mong gawin ay ang wire ng power rail at grounding rail sa iyong breadboard mula sa iyong Arduino
- Ikonekta ang 5V pin sa power rail (pula)
- 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
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); }}