Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto návode vytvoríme projekt, ktorý bude ovládať mikro-servo pomocou klávesnice, na ktorej je spustené Arduino Uno.
Použitý materiál:
Arduino Uno
Breadboard
Klávesnica 4x4
Micro-servo
Krok 1: Pripojte klávesnicu
Úplne prvá myšlienka, ktorú musíte urobiť, je prepojiť napájaciu a uzemňovaciu koľajnicu na vašom doske z Arduina
- Pripojte 5V kolík k napájacej lište (červená)
- Pripojte uzemňovací kolík (GND) k uzemňovacej lište (modrá)
Teraz, keď je doštička napájania a je uzemnená, môžeme začať zapojovať naše komponenty.
Zapojenie klávesnice je jednoduché, ale musíte si všimnúť kolíky na klávesnici a arduino. Bude sa nám to hodiť, keď obrátime svoju pozornosť na náš kód.
Pri použití vodičov nezabudnite začať vľavo!
- Prvý kolík ide na 13
- Druhý kolík ide na 12
- Tretí kolík smeruje k 11
- Štvrtý kolík smeruje k 10
- Piaty kolík k 9
- Šiesty pin na 8
- Siedmy pin do 7
- Ôsmy pin na 6
Pri pripájaní klávesnice ponechajte digitálny kolík PWM otvorený. Budeme to potrebovať pre mikro-servo
Predtým, ako sa dostaneme k kódu, skontrolujte, či máte nainštalovanú knižnicu klávesníc. Nájdete ho vo svojom náčrte, potom na karte skica a vrátane knižnice. Bez nej nebudete môcť používať klávesnicu.
Teraz sa obrátime na kód a ubezpečíme sa, že klávesnica funguje a poskytuje požadované hodnoty
Rýchle poznámky: Uistite sa, že máte príkaz if na kontrolu klávesnice, inak nebude fungovať. Dávajte si tiež pozor na meškania, pretože sa budú tlačiť pri tlačidlách registrovaných z klávesnice
#zahrnúť
konštantné bajtové riadky = 4; // štyri riadky, pretože klávesnica je plná
stĺpce konštantných bajtov = 4; // štyri stĺpce, rovnaké ako vyššie
tlačidlá znakov [riadky] [stĺpce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový riadokP [riadky] = {13, 12, 11, 10}; // riadkové piny klávesnice
bajtové stĺpceP [stĺpce] = {9, 8, 7, 6}; // stĺpce kolíka klávesnice
Klávesnica = Klávesnica (makeKeymap (tlačidlá), riadok P, stĺpce P, riadky, stĺpce); // vytvorenie klávesnice
neplatné nastavenie () {
Serial.begin (9600); }
prázdna slučka () {
char buttonPressed = pad.getKey (); // získanie znaku z klávesnice, ak (buttonPressed) // ukáže, aké tlačidlo bolo stlačené na klávesnici {Serial.println (buttonPressed); }}
Krok 2: Pridajte mikro servo
Teraz pridáme servomotor. Ten je skutočne ľahké pridať do nášho súčasného projektu, pretože mikro server má iba tri vodiče.
- Hnedý drôt prechádza na uzemňovaciu koľajnicu na doske
- Červená ide na Power rail
- Orange ide na Pin 3 na Arduine. Pamätajte, že mikro server musí mať na Arduine pin PWM. Dôvodom je servo využívajúce TIMER2
Teraz sa len uistite, že sme mikro servo zapojili správne a aby sa pohybovalo
#include #include "Servo.h"
konštantné bajtové riadky = 4; // štyri riadky, pretože klávesnica je plná
stĺpce konštantných bajtov = 4; // štyri stĺpce, rovnaké ako vyššie
tlačidlá znakov [riadky] [stĺpce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový riadokP [riadky] = {13, 12, 11, 10}; // riadkové piny klávesnice
bajtové stĺpceP [stĺpce] = {9, 8, 7, 6}; // stĺpce kolíka klávesnice
Klávesnica = Klávesnica (makeKeymap (tlačidlá), riadok P, stĺpce P, riadky, stĺpce); // vytvorenie klávesnice
Servo prúd Servo; // vytvorenie objektu serva na ovládanie serva
// Na väčšine dosiek je možné vytvoriť dvanásť servo objektov
int pos = 0; // premenná na uloženie polohy serva
neplatné nastavenie () {
Serial.begin (9600); currentServo.attach (3); // pripevní servo na kolíku 9 k objektu serva
}
prázdna slučka () {
char buttonPressed = pad.getKey (); // získanie znaku z klávesnice, ak (buttonPressed) // ukáže, aké tlačidlo bolo stlačené na klávesnici {Serial.println (buttonPressed); }
currentServo.write (95);
}
Krok 3: Upravte kód tak, aby používal klávesnicu na serve
Vedzte, že upravíme náš kód tak, že keď stlačíme konkrétne tlačidlo na klávesnici, servo sa presunie do konkrétnej polohy. Najdôležitejšia vec. Poloha servo pre 0 bola divná. Pretože som mal servo s nepretržitým otáčaním, kedykoľvek sa priblížilo k 0, servo sa začalo točiť. Číslo, ktoré som zadal do kódu, bolo také nízke, ako som mohol bez toho, aby sa to stalo. Každopádne, tu je môj konečný kód:
#include #include
konštantné bajtové riadky = 4; // štyri riadky, pretože klávesnica je plná
stĺpce konštantných bajtov = 4; // štyri stĺpce, rovnaké ako vyššie
tlačidlá znakov [riadky] [stĺpce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový riadokP [riadky] = {13, 12, 11, 10}; // riadkové piny klávesnice
bajtové stĺpceP [stĺpce] = {9, 8, 7, 6}; // stĺpce kolíka klávesnice
Klávesnica = Klávesnica (makeKeymap (tlačidlá), riadok P, stĺpce P, riadky, stĺpce); // vytvorenie klávesnice
Servo myServo; //
neplatné nastavenie () {
Serial.begin (9600); myServo.attach (5); // prichytenie serva na pine 9 k objektu serva}
prázdna slučka () {
char key = pad.getKey (); // získajte znak z klávesnice, ak (kláves == '0') {myServo.write (11); Serial.println ("0"); oneskorenie (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); oneskorenie (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); oneskorenie (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); oneskorenie (15); }
if (kľúč == '4')
{myServo.write (48); Serial.println ("4"); oneskorenie (15); }
if (kľúč == '5')
{myServo.write (60); Serial.println ("5"); oneskorenie (15); }
if (kľúč == '6')
{myServo.write (72); Serial.println ("6"); oneskorenie (15); }
if (kľúč == '7')
{myServo.write (84); Serial.println ("7"); oneskorenie (15); }
if (kľúč == '8')
{myServo.write (96); Serial.println ("8"); oneskorenie (15); }
if (kľúč == '9')
{myServo.write (108); Serial.println ("9"); oneskorenie (15); }
if (key == '*')
{myServo.write (120); Serial.println ("*"); oneskorenie (15); }
if (key == '#')
{myServo.write (132); Serial.println ("#"); oneskorenie (15); }
if (key == 'A')
{myServo.write (146); Serial.println ("A"); oneskorenie (15); }
if (kľúč == 'B')
{myServo.write (158); Serial.println ("B"); oneskorenie (15); }
if (key == 'C')
{myServo.write (170); Serial.println ("C"); oneskorenie (15); }
if (key == 'D')
{myServo.write (180); Serial.println ("D"); oneskorenie (15); }}