İçindekiler:

Arduino Tabanlı Seri Servo Kontrolör: 6 Adım
Arduino Tabanlı Seri Servo Kontrolör: 6 Adım

Video: Arduino Tabanlı Seri Servo Kontrolör: 6 Adım

Video: Arduino Tabanlı Seri Servo Kontrolör: 6 Adım
Video: Arduino Nano Tabanlı Eğitim Robotu: myNanoBot 2024, Kasım
Anonim
Arduino Tabanlı Seri Servo Kontrolör
Arduino Tabanlı Seri Servo Kontrolör
Arduino Tabanlı Seri Servo Kontrolör
Arduino Tabanlı Seri Servo Kontrolör

Bu, Arduino'ya dayalı çoklu servolar için basit bir seri kontrolördür. (ilk dersim de:))

Buradaki çalışmaların çoğu, yazılımın arduino ile konuşmasını sağlamak ve aktarılacak veriler için bir protokol yapmaktan geldi. Donanım yönüne gelince, kullandığım tek şey iki servoydu (burada Parallax standart servo.) Bir Sparkfun Arduino ProtoShield ve ATMEGA328'li bir Arduino Duemilanove, ancak bu parçaların çoğu benzer öğelerle değiştirilebilir. Bu projeyi bir RC sisteminin parçası olarak düşündüm, ancak iletişimi kurmak çok zaman aldı. Herhangi birinin herhangi bir iyileştirmesi, fikri veya hatası varsa, lütfen yorum yapmaktan çekinmeyin. EDIT: Bunu bir süre önce yazdım, yeni yayınlamaya başladım.

Adım 1: İhtiyacınız Olabilecek Şeyler…

İhtiyacınız Olabilecek Şeyler…
İhtiyacınız Olabilecek Şeyler…
İhtiyacınız Olabilecek Şeyler…
İhtiyacınız Olabilecek Şeyler…

Bunu inşa etmek için ihtiyacınız olacak bazı şeyler. 1. Arduino kartı (seçtiğiniz) 2. iki (veya bir) servo 3. atlama telleri 4. Visual Studio 2008 Express -- bağlantı (isteğe bağlı) 5. Arduino IDE -- bağlantı Üzgünüm Linux ve Apple hayranları, programım yalnızca üzerinde çalışır şimdilik windows, ancak yine de kodu değiştirmeden arduino'ya seri komutları manuel olarak gönderebilirsiniz.

Adım 2: Donanımı Bağlayın

Donanımı bağlayın
Donanımı bağlayın

Bu adımda çok karmaşık bir şey yok. Sadece bir servoyu pin 9'a ve diğerini pin 10'a bağlayın.

Adım 3: Arduino'yu programlayın

Arduino'yu programlayın
Arduino'yu programlayın

şimdi taslağı arduino'ya yükleyebilirsiniz.

İşte kodun basit bir dökümü: #include Servo myservo; // bir servoyu kontrol etmek için servo nesnesi yarat Servo myservo1; int gelenByte = 0, datacount = 0, sayaç = 0, hazır = 0; // gelen seri veri için karakter verisi[10]; const char doğrulama[8] = "ma11hew"; karakter komutu[3]; geçersiz kurulum() { myservo.attach(9); myservo1.attach(10); Seri.başla(38400); // seri portu açar, veri hızını ayarlar Serial.println("Hi Arduino Here!"); // seri portu tanımlamaya yardımcı olmak için eklendi Bu sadece seri portu ve servoları ayarlar. int i; for(i = 0; i<180;i++) { myservo.write(i); gecikme(15); } myservo.write(5); for(i = 0; i<180;i++) { myservo1.write(i); gecikme(15); } myservo1.write(5); } Servoların doğru çalıştığını doğrulamak için basit süpürme hareketi. geçersiz döngü() { hazır = 0; sayaç = 0; while (1==1) { if (Serial.read() != doğrulama[sayaç]) { break; } if(sayaç == 6) { gecikme(20); komut[0] = Seri.read(); komut[1] = Seri.read(); //if (Serial.read() == ((komut[1] * 12) % 8)) // { hazır = 1; //} Serial.println("kaydedilmiş komut"); } sayaç ++; gecikme(2); } bu, doğru yetkilendirme dizesi için seri arabelleği kontrol eder ve ardından komut için iki bayt alır. Yorumlanan if ifadesi geçici bir sağlama toplamına izin verir, ancak manuel arabirim oluşturmayı zorlaştırır. hazır 0 olarak ayarlanabilir, böylece bozuk veri durumunda olduğu gibi komutlar ayrıştırılmaz. //komutlar arasında arama if (hazır == 1) { if (komut[0] == 'T') { komut[0] = 0; Serial.print("pin 9'dan gaz kelebeği kontrolü: "); Serial.println(harita(komut[1], 32, 126, 2, 180), Aralık); myservo.write(harita(komut[1], 32, 126, 2, 180)); } if (komut[0] == 'S') { komut[0] = 0; Serial.print("Pin 10'dan gaz kelebeği kontrolü: "); Serial.println(harita(komut[1], 32, 126, 2, 180), Aralık); myservo1.write(harita(komut[1], 32, 126, 2, 180)); } } } kodun geri kalanı, geçerli komutlar (T veya S.) için komutu aramaktır, eğer eşleşirse bir sonraki baytı alır ve servoya gönderir. haritada daha fazlası(komut[1], 32, 126, 2, 180) daha sonra… buradaki kod, ihtiyaç duyabileceğiniz her şey için genişletilebilir (örn. ışıklar, motorlar, IR, vb.) bu kod sorunsuz çalışmalıdır değişiklikler.

4. Adım: Yazılımı Yükleyin

Yazılımı kur
Yazılımı kur

Bunu kurmanın iki yolu var… nsis yükleyici: Aşağıdaki kendi kendine açılan yükleyiciyi indirin ve çalıştırın. Yükleme sırasında kaynakları yükleme seçeneğiniz olacaktır. yükleyici ikili paketi, çekirdek c++ dll'lerini yükler, böylece görsel c++ kurulu olmayan bir bilgisayarda çalıştırılabilir. Yükleyici bittiğinde, masaüstünden veya başlat menüsünden çalıştırabilirsiniz. Zip yolu (doğrulanmamış): İndirin ve çalıştırın, çalışması gerekir. belki. (Zip arşivi, yükleyici tarafından kaynaksız olarak oluşturulan klasör yapısının aynısına sahiptir. Test etmek için görsel stüdyosu olmayan bir makinem yok, bu yüzden çalışmayabilir.)

Adım 5: Arayüz Programını Kullanın

Arayüz Programını Kullanın
Arayüz Programını Kullanın
Arayüz Programını Kullanın
Arayüz Programını Kullanın

Programı kullanmak için önce arduino çiziminde tanımlanan baud hızını seçin. Değiştirilmemiş taslak varsayılan olarak 38400 baud'dur, ancak daha yavaş bir radyo bağlantısı gibi ihtiyaçlarınızı karşılayacak şekilde değiştirilebilir. not: 38400'den yüksek baud hızları çok kararlı olmadı, bunun nedeni uart'ın veriler işlenmeden önce dolmasıdır. Ardından, kullanılacak COM bağlantı noktasını seçin. program varsayılan olarak COM4'tür, değiştirdiğinizden emin olun, aksi takdirde program çökecektir. Son olarak, aç'ı tıklayın. Her şey yolunda giderse, program seçilen seri portu seçilen baud hızında açacaktır. Değilse, program işlenmeyen bir istisna ile muhtemelen çökecektir. bağlantı noktasının doğru olduğundan emin olun ve tekrar deneyin. Arduino'ya doğrudan komutlar göndermek için metin kutularını kullanın. "map(command[1], 32, 126, 2, 180)", arduino tarafından ASCII'de okunabilen *boşluk* ile ~ arasındaki tüm 94 olası komutu servo için 2'den 180'e ölçeklendirir. ASCII 32'den (boşluk) küçük veya 126'nın (~) üzerindeki herhangi bir bayt varsayılan olarak 63 (?)'dir. İz çubukları, doğrudan komutlar için daha kolay bir arabirim sağlar. her adım, artımlı olarak arduino'ya bir seri komut gönderir.

Adım 6: Yaratıcı Olun

Yaratıcı ol!
Yaratıcı ol!
Yaratıcı ol!
Yaratıcı ol!

Bununla yapmak için harika şeyler düşünün. Bazı fikirler: 1. Bir araba için uzaktan gaz kelebeği. 2. 3D kamera montajı 3. sualtı gezgini İyi eğlenceler!!

Önerilen: