Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
U ovom uputstvu stvarat ćemo projekt koji će kontrolirati Micro-Servo s tipkovnicom koja radi s Arduino Uno.
Korišteni materijali:
Arduino Uno
Oglasna ploča
4x4 tipkovnica
Mikro-servo
Korak 1: Povežite tipkovnicu
Prva pomisao koju trebate učiniti je ožičenje razvodnika i uzemljenja na vašoj ploči s vašeg Arduina
- Spojite 5V pin na električni vod (crveno)
- Spojite pin za uzemljenje (GND) na uzemljenje (plavo)
Sada kada ploča ima snagu i je uzemljena, možemo početi ožičavati naše komponente.
Ožičenje tipkovnice je jednostavno, ali morate uzeti u obzir iglice na tipkovnici i arduinu. Dobro će nam doći kada svoju pozornost usmjerimo na svoj kôd.
Ne zaboravite početi s lijeve strane kada koristite svoje žice!
- Prvi pin ide na 13
- Drugi pin ide na 12
- Treći pin ide na 11
- Četvrti pin ide na 10
- Peti pin na 9
- Šesti pin na 8
- Sedmi pin na 7
- Osmi pin na 6
Prilikom povezivanja tipkovnice ne zaboravite držati digitalni pwm pin otvoren. Trebat će nam za mikro-servo
Prije nego što dođemo do koda, provjerite jeste li instalirali knjižnicu tipkovnice. Može se pronaći na skici, zatim na kartici skice, uključi biblioteku. Bez nje nećete moći koristiti tipkovnicu.
Sada se okrenimo kodu i provjerite radi li tipkovnica i daje prisutne vrijednosti
Brze napomene: Provjerite imate li if naredbu za provjeru tipkovnice, inače neće raditi. Također budite oprezni s kašnjenjima, zabrljat će s gumbima koji se registriraju s tipkovnice
#uključi
redovi const bajtova = 4; // četiri reda jer je tipkovnica puna
stupci const byte = 4; // četiri stupca, isto kao gore
gumbi char [retci] [stupci] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtni redP [retci] = {13, 12, 11, 10}; // redne pinove tipkovnice
bajtni stupciP [stupci] = {9, 8, 7, 6}; // pinovi stupaca tipkovnice
Tipkovnica = Tipkovnica (makeKeymap (gumbi), rowP, columnsP, retci, stupci); // izrada tipkovnice
void setup () {
Serial.begin (9600); }
void loop () {{100} {101}
char buttonPressed = pad.getKey (); // dobivamo char s tipkovnice if (buttonPressed) // prikazuje koja je tipka pritisnuta na tipkovnici {Serial.println (buttonPressed); }}
Korak 2: Dodajte mikro servo
Sada dodajmo servo motor. Ovaj je zaista lako dodati našem trenutnom projektu jer mikro poslužitelj ima samo tri žice.
- Smeđa žica ide do uzemljenja na ploči
- Crvena prelazi na Power rail
- Narančasta ide na Pin 3 na Arduinu. Zapamtite da mikro poslužitelj mora imati PWM pin na Arduinu. To je zbog servo korištenja TIMER2
Sada samo provjerimo je li mikro servo ožičen ispravno i da li se pomiče
#include #include "Servo.h"
redovi const bajtova = 4; // četiri reda jer je tipkovnica puna
stupci const byte = 4; // četiri stupca, isto kao gore
gumbi char [retci] [stupci] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtni redP [retci] = {13, 12, 11, 10}; // redne pinove tipkovnice
bajtni stupciP [stupci] = {9, 8, 7, 6}; // pinovi stupaca tipkovnice
Tipkovnica = Tipkovnica (makeKeymap (gumbi), rowP, columnsP, retci, stupci); // izrada tipkovnice
Servo strujaServo; // izrada servo objekta za upravljanje servo pogonom
// na većini ploča može se stvoriti dvanaest servo objekata
int pos = 0; // varijabla za spremanje položaja serva
void setup () {
Serial.begin (9600); currentServo.attach (3); // priključuje servo na pin 9 na servo objekt
}
void loop () {{100} {101}
char buttonPressed = pad.getKey (); // dobivamo char s tipkovnice if (buttonPressed) // prikazuje koja je tipka pritisnuta na tipkovnici {Serial.println (buttonPressed); }
currentServo.write (95);
}
Korak 3: Izmijenite kôd za korištenje tipkovnice na servo servisu
Znajte da ćemo promijeniti kôd tako da se, kada pritisnemo određeni gumb na tipkovnici, servo pomakne na određeni položaj. Prva stvar od važnosti. Položaj serva za 0 bio je čudan. Budući da sam imao servo s kontinuiranom rotacijom, kad god bi se približio 0, servo se samo počeo vrtjeti. Broj koji sam stavio u kôd bio je najniži što sam mogao, a da se to ne dogodi. U svakom slučaju, evo mog konačnog koda:
#include #include
redovi const bajtova = 4; // četiri reda jer je tipkovnica puna
stupci const byte = 4; // četiri stupca, isto kao gore
gumbi char [retci] [stupci] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtni redP [retci] = {13, 12, 11, 10}; // redne pinove tipkovnice
bajtni stupciP [stupci] = {9, 8, 7, 6}; // pinovi stupaca tipkovnice
Tipkovnica = Tipkovnica (makeKeymap (gumbi), rowP, columnsP, retci, stupci); // izrada tipkovnice
Servo myServo; //
void setup () {
Serial.begin (9600); myServo.attach (5); // priključuje servo na pin 9 na servo objekt}
void loop () {{100} {101}
char ključ = pad.getKey (); // dobivamo char s tipkovnice if (key == '0') {myServo.write (11); Serial.println ("0"); kašnjenje (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); kašnjenje (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); kašnjenje (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); kašnjenje (15); }
if (ključ == '4')
{myServo.write (48); Serial.println ("4"); kašnjenje (15); }
if (ključ == '5')
{myServo.write (60); Serial.println ("5"); kašnjenje (15); }
if (ključ == '6')
{myServo.write (72); Serial.println ("6"); kašnjenje (15); }
if (ključ == '7')
{myServo.write (84); Serial.println ("7"); kašnjenje (15); }
if (ključ == '8')
{myServo.write (96); Serial.println ("8"); kašnjenje (15); }
if (ključ == '9')
{myServo.write (108); Serial.println ("9"); kašnjenje (15); }
if (ključ == '*')
{myServo.write (120); Serial.println ("*"); kašnjenje (15); }
if (ključ == '#')
{myServo.write (132); Serial.println ("#"); kašnjenje (15); }
if (ključ == 'A')
{myServo.write (146); Serial.println ("A"); kašnjenje (15); }
if (ključ == 'B')
{myServo.write (158); Serial.println ("B"); kašnjenje (15); }
if (ključ == 'C')
{myServo.write (170); Serial.println ("C"); kašnjenje (15); }
if (ključ == 'D')
{myServo.write (180); Serial.println ("D"); kašnjenje (15); }}