İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu talimatta, Arduino Uno ile çalıştıran bir tuş takımı ile bir Micro-Servo'yu kontrol edecek bir proje oluşturacağız.
Kullanılan malzemeler:
Arduino Uno
ekmek tahtası
4x4 Tuş Takımı
Mikro Servo
Adım 1: Tuş Takımını Kablolayın
Yapmanız gereken ilk şey, güç rayını ve topraklama rayını breadboard'unuzdaki Arduino'nuzdan bağlamaktır.
- 5V pinini güç rayına bağlayın (kırmızı)
- Topraklama rayına (mavi) bir Topraklama pimi (GND) bağlayın
Artık devre tahtasına güç geldiğine ve topraklandığına göre, bileşenlerimizi kablolamaya başlayabiliriz.
Tuş Takımını kablolamak kolaydır ancak tuş takımı ve arduino üzerindeki pinlere dikkat etmeniz gerekir. Dikkatimizi kodumuza çevirdiğimizde işimize yarayacaktır.
Tellerinizi kullanırken soldan başlamayı unutmayın!
- İlk pin 13'e gidiyor
- İkinci pin 12'ye gidiyor
- Üçüncü pin 11'e gidiyor
- Dördüncü pin 10'a gidiyor
- Beşinci pim 9'a
- Altıncı Pin'den 8'e
- Yedinci Pin'den 7'ye
- Sekizinci Pin'den 6'ya
Tuş takımını bağlarken dijital bir pwm pinini açık tutmayı unutmayın. Mikro servo için buna ihtiyacımız olacak
Koda geçmeden önce Keypad Library'yi kurduğunuzdan emin olun. Eskizinizde bulunabilir, ardından eskiz sekmesinde, kitaplığı içerir. Tuş takımını onsuz kullanamazsınız.
Şimdi koda dönelim ve tuş takımının çalıştığından emin olun ve ilgili değerleri verin
Hızlı Notlar: Tuş takımını kontrol etmek için if ifadesine sahip olduğunuzdan emin olun, aksi takdirde çalışmaz. Ayrıca gecikmelere karşı dikkatli olun, tuş takımından kaydedilen düğmelerle uğraşacaklar
#Dahil etmek
const bayt satırları = 4; //tuş takımı dolu olduğundan beri dört satır
const bayt sütunları = 4; //dört sütun, yukarıdakiyle aynı
karakter düğmeleri[satırlar][sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };
bayt satırP[satırlar] = {13, 12, 11, 10}; // tuş takımının satır pinleri
bayt sütunlarıP[sütunlar] = {9, 8, 7, 6}; // tuş takımının sütun pinleri
Tuş takımı = Tuş takımı(makeKeymap(düğmeler), satırP, sütunlarP, satırlar, sütunlar); // tuş takımı oluştur
geçersiz kurulum(){
Seri.başla(9600); }
boşluk döngüsü(){
char buttonPressed = pad.getKey(); //karakteri tuş takımından al if(buttonPressed) //tuş takımında hangi butona basıldığını göster { Serial.println(buttonPressed); } }
Adım 2: Mikro Servo'yu ekleyin
Şimdi servo motoru ekleyelim. Mikro sunucunun sadece üç kablosu olduğundan, bunu mevcut projemize eklemek gerçekten çok kolay.
- Kahverengi tel, breadboard üzerindeki topraklama rayına gidiyor
- Kırmızı, Güç rayına gider
- Orange, Arduino'daki Pin 3'e gider. Mikro sunucunun Arduino üzerinde bir PWM pinine sahip olması gerektiğini unutmayın. Bunun nedeni TIMER2 kullanan servodur.
Şimdi mikro servoyu doğru bağladığımızdan ve hareket ettiğinden emin olalım.
#include #include "Servo.h"
const bayt satırları = 4; //tuş takımı dolu olduğundan beri dört satır
const bayt sütunları = 4; //dört sütun, yukarıdakiyle aynı
karakter düğmeleri[satırlar][sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };
bayt satırP[satırlar] = {13, 12, 11, 10}; // tuş takımının satır pinleri
bayt sütunlarıP[sütunlar] = {9, 8, 7, 6}; // tuş takımının sütun pinleri
Tuş takımı = Tuş takımı(makeKeymap(düğmeler), satırP, sütunlarP, satırlar, sütunlar); // tuş takımı oluştur
Servo akımıServo; // bir servoyu kontrol etmek için servo nesnesi yarat
// çoğu kartta on iki servo nesnesi oluşturulabilir
int konum = 0; // servo konumunu saklamak için değişken
geçersiz kurulum(){
Seri.başla(9600); akımServo.attach(3); // pin 9'daki servoyu servo nesnesine bağlar
}
boşluk döngüsü(){
char buttonPressed = pad.getKey(); //karakteri tuş takımından al if(buttonPressed) //tuş takımında hangi butona basıldığını göster { Serial.println(buttonPressed); }
akımServo.write(95);
}
Adım 3: Servodaki Tuş Takımını Kullanmak için Kodu Değiştirin
Kodumuzu, tuş takımında belirli bir düğmeye bastığımızda servo belirli bir konuma hareket edecek şekilde değiştireceğimizi bilin. Önce önemli bir şey. 0 için servo konumu garipti. Sürekli dönüş servom olduğu için 0'a her yaklaştığında servo dönmeye başladı. Koda koyduğum sayı, bu olmadan gidebileceğim kadar düşüktü. Her neyse, işte son kodum:
#include #include
const bayt satırları = 4; //tuş takımı dolu olduğundan beri dört satır
const bayt sütunları = 4; //dört sütun, yukarıdakiyle aynı
karakter düğmeleri[satırlar][sütunlar] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };
bayt satırP[satırlar] = {13, 12, 11, 10}; // tuş takımının satır pinleri
bayt sütunlarıP[sütunlar] = {9, 8, 7, 6}; // tuş takımının sütun pinleri
Tuş takımı = Tuş takımı(makeKeymap(düğmeler), satırP, sütunlarP, satırlar, sütunlar); // tuş takımı oluştur
Servo myServo; //
geçersiz kurulum(){
Seri.başla(9600); myServo.attach(5); // pin 9'daki servoyu servo nesnesine bağlar }
boşluk döngüsü(){
karakter tuşu = pad.getKey(); //karakteri klavyeden al if(key == '0') { myServo.write(11); Serial.println("0"); gecikme(15); } if(key == '1') { myServo.write(12); Seri.println("1"); gecikme(15); } if(key == '2') { myServo.write(24); Seri.println("2"); gecikme(15); } if(key == '3') { myServo.write(36); Seri.println("3"); gecikme(15); }
if(anahtar == '4')
{ myServo.write(48); Seri.println("4"); gecikme(15); }
if(anahtar == '5')
{ myServo.write(60); Seri.println("5"); gecikme(15); }
if(anahtar == '6')
{ myServo.write(72); Seri.println("6"); gecikme(15); }
if(anahtar == '7')
{ myServo.write(84); Seri.println("7"); gecikme(15); }
if(anahtar == '8')
{ myServo.write(96); Seri.println("8"); gecikme(15); }
if(anahtar == '9')
{ myServo.write(108); Seri.println("9"); gecikme(15); }
if(anahtar == '*')
{ myServo.write(120); Seri.println("*"); gecikme(15); }
if(anahtar == '#')
{ myServo.write(132); Serial.println("#"); gecikme(15); }
if(anahtar == 'A')
{ myServo.write(146); Seri.println("A"); gecikme(15); }
if(anahtar == 'B')
{ myServo.write(158); Serial.println("B"); gecikme(15); }
if(anahtar == 'C')
{ myServo.write(170); Seri.println("C"); gecikme(15); }
if(anahtar == 'D')
{ myServo.write(180); Seri.println("D"); gecikme(15); } }