Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu təlimatda, Arduino Uno ilə işləyən bir klaviatura ilə bir mikro-servoya nəzarət edəcək bir layihə hazırlayacağıq.
İstifadə olunan materiallar:
Arduino Uno
Çörək lövhəsi
4x4 klaviatura
Mikro Servo
Addım 1: Klaviaturanı bağlayın
Etməyiniz lazım olan ilk şey, Arduino -dan çörək taxtanıza elektrik dəmir yolu və topraklama rayı çəkməkdir
- 5V pinini elektrik rayına qoşun (qırmızı)
- Topraklama pinini (GND) topraklama rayına bağlayın (mavi)
İndi çörək taxtası gücə sahibdir və əsaslandırılmışdır, komponentlərimizi bağlamağa başlaya bilərik.
Klaviaturanı bağlamaq asandır, ancaq klaviatura və arduino üzərindəki sancaqlara diqqət yetirməlisiniz. Diqqətimizi kodumuza yönəltdiyimiz zaman faydalı olacaq.
Telləri istifadə edərkən soldan başlamağı unutmayın!
- İlk pin 13 -ə gedir
- İkinci pin 12 -ə gedir
- Üçüncü pin 11 -ə gedir
- Dördüncü pin 10 -a gedir
- Beşinci pin 9
- Altıncı Pin 8 -ə
- Yeddinci Pin 7 -yə
- Səkkizinci Pin 6
Klaviaturanı bağlayarkən rəqəmsal pwm pinini açıq saxlamağı unutmayın. Mikro servo üçün bizə lazım olacaq
Kodu əldə etməzdən əvvəl Klaviatura Kitabxanasını quraşdırdığınızdan əmin olun. Bunu eskizinizdə tapa bilərsiniz, sonra eskiz sekmesine kitabxana daxildir. Klaviaturanı onsuz istifadə edə bilməyəcəksiniz.
İndi koda keçək və klaviaturanın işlədiyinə və iştirak etdiyi dəyərləri verdiyinə əmin olaq
Sürətli Qeydlər: Klaviaturanı yoxlamaq üçün if ifadəsinə sahib olduğunuzdan əmin olun, əks halda işləməyəcək. Gecikmələrdən də ehtiyatlı olun, klaviaturadan qeyd olunan düymələri qarışdıracaqlar
#daxil edin
const bayt satırları = 4; // klaviatura dolu olduğundan dörd sıra
const bayt sütunları = 4; // dörd sütun, yuxarıdakı kimidir
char düymələri [satır] [sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bayt sıraP [satırlar] = {13, 12, 11, 10}; // klaviaturanın sətir sancaqları
bayt sütunlarıP [sütunlar] = {9, 8, 7, 6}; // klaviaturanın sütun sancaqları
Klaviatura yastığı = Klaviatura (makeKeymap (düymələr), rowP, sütunP, satır, sütun); // klaviatura yaradın
boş quraşdırma () {
Serial.begin (9600); }
boşluq döngəsi () {
char düyməsini basıldı = pad.getKey (); // (düyməni basdıqda) // klaviaturada hansı düymənin basıldığını göstərin {Serial.println (buttonPressed); }}
Addım 2: Mikro Servo əlavə edin
İndi servo motoru əlavə edək. Bunu cari layihəmizə əlavə etmək çox asandır, çünki mikro serverdə yalnız üç tel var.
- Qəhvəyi tel çörək taxtasındakı topraklama rayına gedir
- Qırmızı güc rayına gedir
- Portağal Arduino -da Pin 3 -ə gedir. Unutmayın ki, mikro serverin Arduinoda PWM pininin olması lazımdır. Bu, TIMER2 istifadə edən servoya bağlıdır
İndi mikro servonun sağa bağlandığından və hərəkət etdiyindən əmin olaq
#daxil edin "daxil edin" Servo.h"
const bayt satırları = 4; // klaviatura dolu olduğundan dörd sıra
const bayt sütunları = 4; // dörd sütun, yuxarıdakı kimidir
char düymələri [satır] [sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bayt sıraP [satırlar] = {13, 12, 11, 10}; // klaviaturanın sətir sancaqları
bayt sütunlarıP [sütunlar] = {9, 8, 7, 6}; // klaviaturanın sütun sancaqları
Klaviatura yastığı = Klaviatura (makeKeymap (düymələr), rowP, sütunlarP, satırlar, sütunlar); // klaviatura yaradın
Servo cərəyanıServo; // servoya nəzarət etmək üçün servo obyekti yaradın
// əksər lövhələrdə on iki servo obyekt yaradıla bilər
int pos = 0; // servo mövqeyini saxlamaq üçün dəyişən
boş quraşdırma () {
Serial.begin (9600); currentServo.attach (3); // 9 nömrəli servo servo obyektə yapışdırır
}
boşluq döngəsi () {
char düyməsini basıldı = pad.getKey (); // (düyməni basdıqda) // klaviaturada hansı düyməni basıldığını göstərin {Serial.println (buttonPressed); }
currentServo.write (95);
}
Addım 3: Servo üzərindəki klaviaturanı istifadə etmək üçün kodu dəyişdirin
Kodumuzu dəyişdirəcəyimizi bilirik ki, klaviaturada müəyyən bir düyməni basdığımız zaman servo müəyyən bir mövqeyə keçir. Önəmli olan bir şey. 0 üçün servo mövqeyi qəribə idi. Davamlı fırlanma servom olduğundan, 0 -a yaxınlaşanda servo sadəcə fırlanmağa başladı. Kod daxil etdiyim sayı, bu baş vermədən gedə biləcəyim qədər az idi. Hər halda, mənim son kodum budur:
#daxil edin #daxil edin
const bayt satırları = 4; // klaviatura dolu olduğundan dörd sıra
const bayt sütunları = 4; // dörd sütun, yuxarıdakı kimidir
char düymələri [satır] [sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bayt sıraP [satırlar] = {13, 12, 11, 10}; // klaviaturanın sətir sancaqları
bayt sütunlarıP [sütunlar] = {9, 8, 7, 6}; // klaviaturanın sütun sancaqları
Klaviatura yastığı = Klaviatura (makeKeymap (düymələr), rowP, sütunP, satır, sütun); // klaviatura yaradın
Servo myServo; //
boş quraşdırma () {
Serial.begin (9600); myServo.attach (5); // pin 9 -dakı servonu servo obyektə bağlayır}
boşluq döngəsi () {
char düyməsi = pad.getKey (); // əgər (key == '0') {myServo.write (11); Serial.println ("0"); gecikmə (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); gecikmə (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); gecikmə (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); gecikmə (15); }
əgər (açar == '4')
{myServo.write (48); Serial.println ("4"); gecikmə (15); }
əgər (açar == '5')
{myServo.write (60); Serial.println ("5"); gecikmə (15); }
əgər (açar == '6')
{myServo.write (72); Serial.println ("6"); gecikmə (15); }
əgər (açar == '7')
{myServo.write (84); Serial.println ("7"); gecikmə (15); }
əgər (açar == '8')
{myServo.write (96); Serial.println ("8"); gecikmə (15); }
əgər (açar == '9')
{myServo.write (108); Serial.println ("9"); gecikmə (15); }
əgər (açar == '*')
{myServo.write (120); Serial.println ("*"); gecikmə (15); }
əgər (açar == '#')
{myServo.write (132); Serial.println ("#"); gecikmə (15); }
əgər (açar == 'A')
{myServo.write (146); Serial.println ("A"); gecikmə (15); }
əgər (açar == 'B')
{myServo.write (158); Serial.println ("B"); gecikmə (15); }
əgər (açar == 'C')
{myServo.write (170); Serial.println ("C"); gecikmə (15); }
əgər (açar == 'D')
{myServo.write (180); Serial.println ("D"); gecikmə (15); }}