Klaviatura ilə Servo Positoning: 3 addım
Klaviatura ilə Servo Positoning: 3 addım
Anonim
Klaviatura ilə Servo Positoning
Klaviatura ilə Servo Positoning

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

Klaviaturanı bağlayın
Klaviaturanı bağlayın
Klaviaturanı bağlayın
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

  1. 5V pinini elektrik rayına qoşun (qırmızı)
  2. 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

Mikro Servo əlavə edin
Mikro Servo əlavə edin
Mikro Servo əlavə edin
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); }}