İçindekiler:

Arduino Mors Kodu Yazarı: 7 Adım (Resimli)
Arduino Mors Kodu Yazarı: 7 Adım (Resimli)

Video: Arduino Mors Kodu Yazarı: 7 Adım (Resimli)

Video: Arduino Mors Kodu Yazarı: 7 Adım (Resimli)
Video: Antenler,Manipleler,Mors Teknikleri, Bir programda Amerika'dan tam 3 katılımcı. Dopdolu bir program. 2024, Aralık
Anonim
Image
Image
Arduino Mors Kodu Yazarı
Arduino Mors Kodu Yazarı

Herhangi bir metni Mors koduna çevirebilen ve sonra onu yazabilen bir robot yaptım!! Karton ve Lego'dan yapılmış ve elektronik için Arduino ve sadece iki motor kullandım.

Gereçler

Arduino Uno kartı Step motor Mikro servo SG90ULN2003 step motor sürücü modülü Güç kaynağı modülü Breadboard4× Jumper kabloları6× Dişi-Erkek dubont kabloları9V1A AdaptörUSB kablosu Karton 2× Ahşap dübeller 2× Yaylar Hasır Beyaz kağıtLegoSüper yapıştırıcı Sıcak tutkal tabancası Elastik bant kalemlik) Makas Kesici

Adım 1: Üssü İnşa Etme

Üssü İnşa Etmek
Üssü İnşa Etmek
Üssü İnşa Etmek
Üssü İnşa Etmek
Üssü İnşa Etmek
Üssü İnşa Etmek

Tabanı inşa ederek başlayın. Benimki 4 saplama genişliğinde ve 20 saplama uzunluğunda, bu uzunluklarla bir katman oluşturduktan sonra, bir tarafında step motor için boşluk bırakmak için bir boşluk bırakarak etrafına bir saplama genişliğinde bir bordür yaptım, sonra ekledim fayans parçaları, kağıt şeridin olacağı orta kısma yerleştirin. Lego kullanmak onu çok sağlam ve değiştirilmesi kolay hale getirdi. Rulo kağıt yapmak için 1,2 cm genişliğinde A4 kağıttan şeritler kestim (bu genişliği benim kullandığım Lego tekerleği ile aynı genişlikte olduğu için seçtim, sizinkini tekerleğinize göre büyütüp küçültebilirsiniz) ve uçlarını birbirine yapıştırdım. çok uzun bir şerit oluşturmak için, sonra onu tekerleğin etrafına sardım.

Adım 2: Servo Parçası

Servo Parçası
Servo Parçası
Servo Parçası
Servo Parçası
Servo Parçası
Servo Parçası

Bu adım için ihtiyacınız olan:

  • 4 cm uzunluğunda iki ahşap dübel
  • 2 cm uzunluğunda iki yay
  • her biri 2 cm uzunluğunda iki parçaya kesilmiş bir saman
  • bir adet 12cm x 4cm karton parçası
  • iki adet 4cm x 1.5cm karton parçası
  • bir adet 4cm x 2cm karton parçası

İlk önce dübelleri 4'e 1,5 parçadan birine yapıştırın, ardından yayları ve payetleri dübellere yerleştirin, ardından diğer karton parçasını her şeyi yerinde tutmak için diğer tarafa yapıştırın.

İkinci olarak, 4 cm'ye 2 cm'lik parçayı payetlerin üzerine yapıştırın.

Üçüncü olarak, tüm parçayı ters çevirin ve küçük bir dübelin arkasına, ortasından değil, biraz soluna yapıştırın. (İlk resimdeki küçük dübeli eklemeyi unutmuşum)

Son olarak büyük karton parçasına servo motorun önü büyüklüğünde bir delik açıp motoru yapıştırın, ardından dübellerle az önce yaptığımız parçayı büyük parçaya yapıştırın böylece servo hareket ettiğinde iter. küçük dübel aşağı doğru yayları da aşağı iter.

Sonunda 12cm'ye 4cm'lik parçanın alt kısmından yaklaşık 3cm kesip, 4cm'e 1.5cm'lik iki parça daha yapıştırdım, ardından bunu 5.5cm'e 4cm'lik bir karton parçasıyla kapladım. Ve işaretleyiciyi tutmak için küçük bir parça yaptım. elastik bandın ilmeğini ve küçük bir karton parçasına yapıştırdım, ardından servo başladığında aşağı hareket edecek olan 4cm'ye 2cm'lik parçaya yapıştırdım. Bu eklemeler, yaylar geri geldiğinde işaretleyicinin bir yandan diğer yana hareket etmesini engelledi.

Adım 3: Servo Motoru ve Kağıt Ruloyu Tabana Ekleme

Servo Motoru ve Kağıt Ruloyu Tabana Ekleme
Servo Motoru ve Kağıt Ruloyu Tabana Ekleme
Servo Motoru ve Kağıt Ruloyu Tabana Ekleme
Servo Motoru ve Kağıt Ruloyu Tabana Ekleme

Servo parçayı desteklemek için tabanın bir tarafına iki tuğla daha ekledim ve yerine yapıştırdım. Ardından tabanın uzak ucuna tekeri ekledim.

Adım 4: Step Motor Çerçevesinin Oluşturulması

Step Motor Çerçevesini Oluşturma
Step Motor Çerçevesini Oluşturma
Step Motor Çerçevesini Oluşturma
Step Motor Çerçevesini Oluşturma
Step Motor Çerçevesini Oluşturma
Step Motor Çerçevesini Oluşturma

Bu adım biraz zor oldu çünkü motor Lego'ya tam olarak uyacak şekilde yapılmamıştı. Ancak, bunu yerine sabitlemek için motordaki iki deliği kullanarak yapmayı başardım. Ardından motorun ucuna bir Lego tekerleği yapıştırdım ve ardından 1. adımda açık bıraktığım taraftaki tabanın hemen yanına koydum.

Adım 5: Son Dokunuşlar

Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar
Son Dokunuşlar

Kağıdı yerine sabitlemek için tekerleği örtmek için iki yay parçası ekledim. Ve biri step motorun tellerini tutmak için diğeri kağıdı tutmak için iki küçük ark parçası ekledim. Son olarak, step motor tekerleğini, kağıdı eski tekerlekten daha iyi hareket ettiren biraz daha büyük olanla değiştirdim.

Adım 6: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik

Son olarak motorları Arduino'ya bağlayıp kodu yüklemeniz gerekiyor.

Servo motorla başlayacağız, kahverengi kabloyu (topraklama kablosu) GND pimine, ardından kırmızı kabloyu (güç kablosu) 5V pime ve turuncu kabloyu (sinyal kablosu) Dig #5'e bağlayacağız. toplu iğne. Ardından, step motor, 1N1'i Dig #11'e, 1N2'yi Dig #10'a, 1N3'ü Dig #9'a, 1N4'ü Dig #8'e, 5V'yi devre tahtasının pozitif tarafına ve topraklama pinini de Dig #11'e bağlayın. ekmek tahtası. Güç kaynağı modülünü devre tahtasına bağlamayı unutmayın, pozitif ve negatif taraflarının devre tahtasındaki karşılık gelen taraflarla doğru şekilde hizalandığından emin olun. Bunu yapmayı unutursanız, projenizin gücünü tersine çevirirsiniz ve bunu yapmak istemezsiniz.

Kod için, biri nokta yazmak, biri tire yazmak ve ikisi de her harf ve her kelime arasında boşluk bırakmak için dört yöntem yazdım. Böylece her harf için tekrar yazmak yerine bu yöntemleri ihtiyacım olduğunda çağırabiliyorum. Sonra metnin her harfini geçen bir for döngüsü yazdım ve yazdım, İçinde her harf için bir if ifadesi yazdım ama isterseniz switch deyiminde yazabilirsiniz. Tabii ki, programın sayıları okumasını sağlamak için koda ekleyebilirsiniz. Tüm kablolama hazır olduğunda, kodu kopyalayıp IDE'nize yapıştırmanız yeterlidir. Stepper, servo ve string kütüphanelerini kurmayı unutmayınız. Ondan sonra, gitmekte fayda var.

Nasıl çalışır

Arduino başladığında program metnin ilk harfine bakar ve hangisi olduğuna göre onu Mors koduyla yazan fonksiyonları çağırır. Örneğin, nokta işlevi çağrıldığında, servo motor kalemi aşağı hareket ettiren 160'a ayarlanır, ardından tekrar 90'a ayarlanır, bu da kalemi onlarla birlikte hareket ettirerek yayların geri gelmesini sağlar. Çizgi işlevi çağrılırsa, servo kalemi aşağı doğru hareket ettirir, ardından step motor kağıdı çeken tekerleği döndürür ve kalemin bir çizgi yazmasını sağlar. Ve boşluk işlevlerinden biri olarak adlandırılırsa, step motor döner, ancak kalem yukarı gelecek şekilde kağıdı çeker ve harfler veya kelimeler arasında boşluk bırakır. Bittiğinde bir sonraki harfe geçer ve aynı işlemi tekrarlar. Umarım beğenmişsindir;)

kod

#Dahil etmek

#include #include #include const int stepPerRevolution = 150; // Bu, step motor için değişkendir. String cümle = "*hello"; //Bu değişkeni farklı kelimeler yazacak şekilde değiştirin ama sadece küçük harflerle yazın ve kelimenize "*" ile başlayın Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Robotun dot void dot() { Serial.println("dot start"); myServo.write(160); gecikme(1000); myServo.write(90); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); Serial.println("nokta yapıldı"); } // Robotun tire void yazmasını sağlayan yöntem dash() { Serial.println("tire başlangıç"); myServo.write(160); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); myServo.write(90); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); Serial.println("çizgi bitti"); } // Robotun her harf arasında boşluk bırakmasını sağlayan yöntemdir void space() { Serial.println("space start"); myServo.write(90); gecikme(1000); adım adım(200); gecikme(1000); Serial.println("boşluk tamamlandı"); } // Bu, robotun her kelime arasında daha büyük bir boşluk bırakmasını sağlayan yöntemdir void bigSpace() { myServo.write(90); adım adım(250); gecikme(1000); } void setup() { // bir kez çalıştırmak için kurulum kodunuzu buraya koyun: Serial.begin(9600); myStepper.setSpeed(100); myServo.attach(5); int ilk = cümle.indexOf('*'); // bu for döngüsü, dizenin her harfini inceler ve sonra onu yazmak için doğru yöntemleri çağırır for (int i = 0; i < cümle.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print(".-"); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'b') { Serial.print("-… "); tire(); nokta(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'c') { Serial.print("-.-. "); tire(); nokta(); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'd') { Serial.print("-.. "); tire(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'e') { Serial.print(". "); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'f') { Serial.print("..-. "); nokta(); nokta(); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'g') { Serial.print("--. "); tire(); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'h') { Serial.print("…. "); nokta(); nokta(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'i') { Serial.print(".. "); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'j') { Serial.print(".--- "); nokta(); tire(); tire(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'k') { Serial.print("-.- "); tire(); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'l') { Serial.print(".-.. "); nokta(); tire(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'm') { Serial.print("-- "); tire(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'n') { Serial.print("-. "); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'o') { Serial.print("--- "); tire(); tire(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'p') { Serial.print(".--. "); nokta(); tire(); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 'q') { Serial.print("--.- "); tire(); tire(); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'r') { Serial.print(".-. "); nokta(); tire(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 's') { Serial.print("… "); nokta(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == 't') { Serial.print("- "); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'u') { Serial.print("..- "); nokta(); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'v') { Serial.print("…- "); nokta(); nokta(); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'w') { Serial.print(".-- "); nokta(); tire(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'x') { Serial.print("-..- "); tire(); nokta(); nokta(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'y') { Serial.print("-.-- "); tire(); nokta(); tire(); tire(); Uzay(); } else if (sentence.charAt(ilk + i) == 'z') { Serial.print("--.. "); tire(); tire(); nokta(); nokta(); Uzay(); } else if (sentence.charAt(ilk + i) == ' ') { Serial.print("/ "); büyükSpace(); } } } void loop() { //Buraya bir şey yazmayın }

7. Adım: Sorun Giderme

tekerlek hareket etmiyor

Tekerlek ile kağıt arasında çok fazla sürtünme olabilir, tekerleği biraz yükseltmeyi veya değiştirmeyi deneyin.

Tekerlek kağıdı çeker ama sonra kağıdı çekmeden dönmeye devam eder

Tekerleği step motorun ortasına yapıştırdığınızdan emin olun.

Noktalar ve tireler birbirine bağlı

Nokta, tire ve boşluk işlevlerinin doğru yazılıp yazılmadığını kontrol edin, şöyle olmalıdır:

// Robotun dotvoid dot() { Serial.println("dot start"); myServo.write(160); gecikme(1000); myServo.write(90); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); Serial.println("nokta yapıldı"); }

// Robotun tire yazmasını sağlayan yöntem budur.

void tire() { Serial.println("tire başlangıç"); myServo.write(160); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); myServo.write(90); gecikme(1000); myStepper.step(stepsPerRevolution); gecikme(1000); Serial.println("çizgi bitti"); }

// Robotun her harf arasında boşluk bırakmasını sağlayan yöntemdir

void boşluk() { Serial.println("boşluk başlangıcı"); myServo.write(90); gecikme(1000); adım adım(200); gecikme(1000); Serial.println("boşluk tamamlandı"); }

Önerilen: