İçindekiler:
- Adım 1: Ekipman
- Adım 2: Arduino Kurulumu
- Adım 3: Nihai Program
- 4. Adım: Video Kılavuzu
- Adım 5: Sonuç
Video: Piyano Fayansları Oynayan Robot Kolu: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Grup, yapmaya ve geliştirmeye motive olduğumuz parlak bir fikir bulan UCN'den 2 Otomasyon Mühendisinden oluşuyor. Fikir, robotik bir kolu kontrol eden bir Arduino kartına dayanıyor. Arduino kartı, operasyonun beynidir ve daha sonra operasyonun aktüatörü olan Robotik kol, ihtiyacı olanı yapacaktır. Daha ayrıntılı açıklama daha sonra gelecek.
Adım 1: Ekipman
Robot kol:
Phantomx Pincher Robot Kol Kiti Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Robot için yazılım- https://www.arduino.cc/en/Main/OldSoftwareRelease… Renk algılama kamerası:
CMUcam5 Pixy kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Yazılım - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Adım 2: Arduino Kurulumu
Kurulumu burada tahtada görebilirsiniz, bu çok kolay.
Solda Güç Kaynağı var.
Ortadaki, daha sonra diğer servolara servo ile bağlanan ilk servo içindir.
En alttaki, kartı diğer ucunda USB girişi olan bir PC veya Dizüstü bilgisayardan kontrol ettiğimiz yerdir.
Adım 3: Nihai Program
||| PROGRAM |||
#Dahil etmek
#include #include "poses.h" #include //Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController(1000000);
const int SERVOCOUNT = 5; int kimliği; int konum; boole IDCheck; boole RunCheck;
void setup(){ pinMode(0, OUTPUT); ax12SetRegister2(1, 32, 50);//eklem numarası 1 kaydı 32'yi hız 50'ye ayarla. ax12SetRegister2(2, 32, 50);//eklem numarası 2'yi hız 50'ye ayarla.;//eklem numarası 3 kaydı 32'yi hız 50'ye ayarla. ax12SetRegister2(4, 32, 50);//eklem numarası 4 kaydı 32'yi hız 50'ye ayarla. ax12SetRegister2(5, 32, 100);//eklem numarası 5 kaydı ayarla 32'den 100'e kadar. //değişkenleri başlat id = 1; konum = 0; IDCheck = 1; RunCheck = 0; // seri bağlantı noktasını aç Serial.begin(9600); gecikme (500); Serial.println("##########################"); Serial.println("Seri İletişim Kuruldu.");
//Lipo Pil Voltajını Kontrol EtVoltage();
//Servoları tara, dönüş pozisyonu MoveTest(); MoveHome(); Menü seçenekleri(); RunCheck = 1; }
void loop(){ // sensörü oku: int inByte = Serial.read();
geçiş (inByte) {
durum '1': MovePose1(); kırmak;
durum '2': MovePose2(); kırmak; durum '3': MovePose3(); kırmak;
durum '4': MovePose4(); kırmak;
durum '5': MoveHome(); kırmak; durum '6': Grab(); kırmak;
durum '7': LEDTest(); kırmak;
durum '8': RelaxServos(); kırmak; } }
void CheckVoltage(){ // bekleyin, ardından voltajı kontrol edin (LiPO güvenliği) float voltajı = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println("##########################"); Serial.print ("Sistem Voltajı: "); Serial.print (voltaj); Serial.println (" volt."); if (voltaj 10.0){ Serial.println("Voltaj seviyeleri nominal."); } if (RunCheck == 1){ MenuOptions(); } Serial.println("#########################"); }
void MoveHome(){ gecikme(100); // önerilen duraklama bioloid.loadPose(Home); // pozu FLASH'den nextPose arabelleğine yükleyin bioloid.readPose(); // mevcut servo konumlarını curPose arabelleğine oku Serial.println("##########################"); Serial.println("Servoları Ana konuma taşıma"); Serial.println("##########################"); gecikme(1000); bioloid.interpolateSetup(1000); // akımdan enterpolasyon için kurulum->bir saniyeden fazla while(bioloid.interpolating > 0){ // yeni pozumuza ulaşmamışken bunu yapın bioloid.interpolateStep(); // gerekirse servoları hareket ettirin. gecikme(3); } if (RunCheck == 1){ MenuOptions(); } }
void MovePose1(){ gecikme(100); // önerilen duraklama bioloid.loadPose(Pose1); // pozu FLASH'den nextPose arabelleğine yükleyin bioloid.readPose(); // mevcut servo pozisyonlarını curPose arabelleğine oku Serial.println("##########################"); Serial.println("Servoları 1. konuma taşıma"); Serial.println("##########################"); gecikme(1000); bioloid.interpolateSetup(1000); // akımdan enterpolasyon için kurulum->bir saniyeden fazla while(bioloid.interpolating > 0){ // yeni pozumuza ulaşmamışken bunu yapın bioloid.interpolateStep(); // gerekirse servoları hareket ettirin. gecikme(3); } SetPosition(3, 291); //eklem 3'ün konumunu '0' gecikmesine ayarlayın(100);//eklem hareket etmesini bekleyin if (RunCheck == 1){ MenuOptions(); } }
void MovePose2(){ gecikme(100); // önerilen duraklama bioloid.loadPose(Pose2); // pozu FLASH'den nextPose arabelleğine yükleyin bioloid.readPose(); // mevcut servo konumlarını curPose arabelleğine oku Serial.println("##########################"); Serial.println("Servoları 2. konuma taşıma"); Serial.println("##########################"); gecikme(1000); bioloid.interpolateSetup(1000); // akımdan enterpolasyon için kurulum->bir saniyeden fazla while(bioloid.interpolating > 0){ // yeni pozumuza ulaşmamışken bunu yapın bioloid.interpolateStep(); // gerekirse servoları hareket ettirin. gecikme(3); } SetPosition(3, 291); // eklem 3'ün konumunu '0' gecikmesine ayarlayın(100);//eklem hareket etmesini bekleyin if (RunCheck == 1){ MenuOptions(); } } void MovePose3(){ gecikme(100); // önerilen duraklama bioloid.loadPose(Pose3); // pozu FLASH'den nextPose arabelleğine yükleyin bioloid.readPose(); // mevcut servo konumlarını curPose arabelleğine oku Serial.println("##########################"); Serial.println("Servoları 3. konuma taşıma"); Serial.println("##########################"); gecikme(1000); bioloid.interpolateSetup(1000); // akımdan enterpolasyon için kurulum->bir saniyeden fazla while(bioloid.interpolating > 0){ // yeni pozumuza ulaşmamışken bunu yapın bioloid.interpolateStep(); // gerekirse servoları hareket ettirin. gecikme(3); } SetPosition(3, 291); // eklem 3'ün konumunu '0' gecikmesine ayarlayın(100);//eklem hareket etmesini bekleyin if (RunCheck == 1){ MenuOptions(); } }
void MovePose4(){ gecikme(100); // önerilen duraklama bioloid.loadPose(Pose4); // pozu FLASH'den nextPose arabelleğine yükleyin bioloid.readPose(); // mevcut servo konumlarını curPose arabelleğine oku Serial.println("##########################"); Serial.println("Servoları 4. konuma taşıma"); Serial.println("##########################"); gecikme(1000); bioloid.interpolateSetup(1000); // akımdan enterpolasyon için kurulum->bir saniyeden fazla while(bioloid.interpolating > 0){ // yeni pozumuza ulaşmamışken bunu yapın bioloid.interpolateStep(); // gerekirse servoları hareket ettirin. gecikme(3); } SetPosition(3, 291); // eklem 3'ün konumunu '0' gecikmesine ayarlayın(100);//eklem hareket etmesini bekleyin if (RunCheck == 1){ MenuOptions(); } }
void MoveTest(){ Serial.println("##########################"); Serial.println("Hareket İşareti Testini Başlatma"); Serial.println("##########################"); gecikme(500); kimlik = 1; konum = 512; while(id <= SERVOCOUNT){ Serial.print("Hareketli Servo Kimliği: "); Seri.println(id);
while(konum >= 312){ SetPosition(id, konum); konum = konum--; gecikme(10); }
while(konum <= 512){ SetPosition(id, konum); konum = konum++; gecikme(10); }
//bir sonraki servo kimliğine geç id = id++;
} if (RunCheck == 1){ MenuOptions(); } }
void MenuOptions(){ Serial.println("##########################"); Serial.println("Tek tek testleri tekrar çalıştırmak için lütfen 1-5 seçeneğini giriniz."); Serial.println("1) 1. Konum"); Serial.println("2) 2. Konum"); Serial.println("3) 3. Konum"); Serial.println("4) 4. Konum"); Serial.println("5) Ana Konum"); Serial.println("6) Sistem Voltajını Kontrol Edin"); Serial.println("7) LED Testini Gerçekleştirin"); Serial.println("8) Servoları Rahatlatın"); Serial.println("##########################"); }
void RelaxServos(){ id = 1; Serial.println("##########################"); Serial.println("Rahatlatıcı Servolar."); Serial.println("##########################"); while(id <= SERVOCOUNT){ Rahatla(id); id = (id++)%SERVOCOUNT; gecikme(50); } if (RunCheck == 1){ MenuOptions(); } }
void LEDTest(){ id = 1; Serial.println("##########################"); Serial.println("Çalışan LED Testi"); Serial.println("##########################"); while(id <= SERVOCOUNT){ ax12SetRegister(id, 25, 1); Serial.print("LED AÇIK - Servo Kimliği: "); Seri.println(id); gecikme(3000); ax12SetRegister(id, 25, 0); Serial.print("LED KAPALI - Servo Kimliği: "); Seri.println(id); gecikme(3000); kimlik = kimlik++; } if (RunCheck == 1){ MenuOptions(); } }
void Grab(){ SetPosition(5, 800); // eklem 1'in konumunu '0' gecikmesine ayarlayın(100);//eklem hareketini bekleyin
}
Programımızı, konumlandırma durumunda bazı önemli değişikliklerle birlikte üreticilerin PincherTest programına dayandırdık. Robotun pozisyonları hafızada tutması için pozlar.h kullandık. İlk olarak oyun kolumuzu Pixycam ile otomatik olarak oluşturmaya çalıştık ancak hafif ve küçük ekran problemlerinden dolayı bu mümkün olmadı. Robotun temel bir ana konumu vardır, programı yükledikten sonra robotta bulunan tüm servoları test eder. 1-4 düğmeleri için pozları belirledik, böylece hatırlaması kolay olacak. Programı kullanmaktan çekinmeyin.
4. Adım: Video Kılavuzu
Adım 5: Sonuç
Sonuç olarak, robot bizim için eğlenceli küçük bir proje ve oynaması ve denemesi eğlenceli bir şey. Denemenizi ve özelleştirmenizi tavsiye ederim.
Önerilen:
Witblox Kullanan Golf Oynayan Robot: 7 Adım
Witblox Kullanan Golf Oynayan Robot: Herkese selamlar.Bugün golf oynayan bir robot yaptım. Hepimizin bildiği gibi, bir dönme hareketi ileri geri harekete dönüştürülebilir. Böylece aynı fenomeni kullanarak, topun yolda sürekli salınım sağladığı bu projeyi yaptım
Arduino - Piyano Fayansları: 16 Adım (Resimli)
Arduino - Piano Tiles: Merhaba internet insanları, Bu, arduino uno r3.so'da bir mobil oyundan KESİNLİKLE olmayan bir şeyi nasıl yapacağınızla ilgili olacak, başlamak için tüm parçalara ihtiyacınız olacak, bunlar aşağıdaki gibidir. !1x Arduino Uno r3 (42$)2x LCD Tuş Takımı Kalkanı (her biri 19$)5
ETKİLEYİCİ BİR AHŞAP ROBOT KOLU NASIL MONTAJ YAPILIR(KISIM3: ROBOT KOL) -- MİKROYA DAYALI: BITN: 8 Adım
ETKİLEYİCİ BİR AHŞAP ROBOT KOL NASIL MONTAJI(KISIM3: ROBOT KOL) -- MİKRO DAYALI: BITN: Bir sonraki kurulum işlemi engellerden kaçınma modunun tamamlanmasına dayanır. Önceki bölümdeki kurulum işlemi, hat izleme modundaki kurulum işlemiyle aynıdır. O zaman A'nın son formuna bir göz atalım
ETKİLEYİCİ BİR AHŞAP ROBOT KOLU NASIL MONTAJLANIR(BÖLÜM2: ENGELDEN KAÇINMAK İÇİN ROBOT) -- MİKROYA DAYALI: BIT: 3 Adım
ETKİLEYİCİ BİR AHŞAP ROBOT KOLU NASIL BİRLEŞTİRİLİR(BÖLÜM 2: ENGELDEN KAÇINMAK İÇİN ROBOT) -- MİKROYA DAYALI: BİT: Daha önce Armbit'i çizgi izleme modunda tanıtmıştık. Ardından, Armbit'in engel modundan kaçınma modunda nasıl kurulacağını tanıtıyoruz
Temel Olarak Oluşturulan Bir IRobot Kullanarak Otonom Basketbol Oynayan Robot Nasıl Yapılır: 7 Adım (Resimlerle)
Bir IRobot Create As a Base Kullanarak Otonom Basketbol Oynayan Robot Nasıl Yapılır: Bu, iRobot Create mücadelesi için yaptığım giriştir. Tüm bu sürecin benim için en zor kısmı robotun ne yapacağına karar vermekti. Biraz robo yetenek eklerken, Yarat'ın harika özelliklerini göstermek istedim. Benim her şeyim