Obsah:
- Krok 1: Zariadenie
- Krok 2: Nastavenie Arduino
- Krok 3: Záverečný program
- Krok 4: Videonávod
- Krok 5: Záver
Video: Klavírne dlaždice hrajúce na robotickom ramene: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Skupinu tvoria 2 automatizační inžinieri z UCN, ktorí prišli s geniálnym nápadom, ktorý sme motivovaní robiť a rozvíjať. Myšlienka je založená na doske Arduino ovládajúcej robotické rameno. Doska Arduino je mozgom operácie a potom aktivátor operácie, robotické rameno, urobí, čo potrebuje. Hlbšie vysvetlenie príde neskôr.
Krok 1: Zariadenie
Rameno robota:
Súprava robotického ramena Phantomx Pincher Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Softvér pre robota- https://www.arduino.cc/en/Main/OldSoftwareRelease… Farebná kamera:
Fotoaparát CMUcam5 Pixy - (https://charmedlabs.com/default/pixy-cmucam5/)
Softvér - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Krok 2: Nastavenie Arduino
Tu môžete vidieť nastavenie na doske, ktoré je veľmi jednoduché.
Vľavo je napájací zdroj.
Stredný je pre prvé servo, ktoré je neskôr pripojené k iným servám, servo za servom.
V spodnej časti ovládame dosku z počítača alebo prenosného počítača, ktorá má na druhom konci vstup USB.
Krok 3: Záverečný program
||| PROGRAM |||
#zahrnúť
#include #include "poses.h" #include // Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (10 000 000);
const int SERVOCOUNT = 5; int id; int pos; booleovský IDCheck; booleovský RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // nastavenie spoja číslo 1 register 32 na rýchlosť 50. ax12SetRegister2 (2, 32, 50); // nastavenie spoja číslo 2 register 32 na rýchlosť 50. ax12SetRegister2 (3, 32, 50); // nastavenie kĺbu číslo 3 register 32 na rýchlosť 50. ax12SetRegister2 (4, 32, 50); // nastavenie spoja číslo 4 register 32 na rýchlosť 50. ax12SetRegister2 (5, 32, 100); // nastavenie kĺbu číslo 5 register 32 na rýchlosť 100. // inicializácia premenných id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // otvorený sériový port Serial.begin (9600); oneskorenie (500); Serial.println ("###############################"); Serial.println ("Sériová komunikácia nadviazaná.");
// Kontrola napätia batérie Lipo CheckVoltage ();
// Skenovanie serv, návrat polohy MoveTest (); MoveHome (); Možnosti ponuky (); RunCheck = 1; }
void loop () {// prečítaj senzor: int inByte = Serial.read ();
switch (inByte) {
prípad '1': MovePose1 (); prestávka;
prípad '2': MovePose2 (); prestávka; prípad '3': MovePose3 (); prestávka;
prípad '4': MovePose4 (); prestávka;
prípad '5': MoveHome (); prestávka; prípad '6': Grab (); prestávka;
prípad '7': LEDTest (); prestávka;
prípad '8': RelaxServos (); prestávka; }}
neplatné CheckVoltage () {// počkajte, potom skontrolujte napätie (bezpečnosť LiPO) float napätie = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10,0; Serial.println ("################################"); Serial.print ("Napätie systému:"); Serial.print (napätie); Serial.println ("volty."); if (napätie 10,0) {Serial.println ("Úrovne napätia nominálne."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("################################"); }
neplatné MoveHome () {oneskorenie (100); // odporúčaná pauza bioloid.loadPose (Domov); // načítanie pózy z FLASH, do pufra nextPose bioloid.readPose (); // čítanie v aktuálnych polohách servo do vyrovnávacej pamäte curPose Serial.println ("###############################"); Serial.println ("Premiestňovanie servov do základnej polohy"); Serial.println ("###############################"); oneskorenie (1000); bioloid.interpolateSetup (1000); // nastavenie interpolácie z prúdu-> ďalšie viac ako 1/2 sekundy, kým (bioloid.interpolation> 0) {// urobte to, kým sme nedosiahli našu novú pozíciu bioloid.interpolateStep (); // v prípade potreby presuňte servá. oneskorenie (3); } if (RunCheck == 1) {MenuOptions (); }}
neplatné MovePose1 () {oneskorenie (100); // odporúčaná pauza bioloid.loadPose (Pose1); // načítanie pózy z FLASH, do pufra nextPose bioloid.readPose (); // čítanie v aktuálnych polohách serv do vyrovnávacej pamäte curPose Serial.println ("##############################"); Serial.println ("Premiestňovanie serva na 1. pozíciu"); Serial.println ("###############################"); oneskorenie (1000); bioloid.interpolateSetup (1000); // nastavenie interpolácie z prúdu-> ďalšie viac ako 1/2 sekundy, kým (bioloid.interpolation> 0) {// urobte to, kým sme nedosiahli našu novú pozíciu bioloid.interpolateStep (); // v prípade potreby presuňte servá. oneskorenie (3); } Nastav.pozícia (3, 291); // nastavenie polohy spoja 3 na oneskorenie '0' (100); // čakanie na pohyb kĺbu, ak (RunCheck == 1) {MenuOptions (); }}
neplatné MovePose2 () {oneskorenie (100); // odporúčaná pauza bioloid.loadPose (Pose2); // načítanie pózy z FLASH, do pufra nextPose bioloid.readPose (); // čítanie v aktuálnych polohách serv do vyrovnávacej pamäte curPose Serial.println ("##############################"); Serial.println ("Premiestňovanie serva na 2. pozíciu"); Serial.println ("###############################"); oneskorenie (1000); bioloid.interpolateSetup (1000); // nastavenie interpolácie z prúdu-> ďalšie viac ako 1/2 sekundy, kým (bioloid.interpolation> 0) {// urobte to, kým sme nedosiahli našu novú pozíciu bioloid.interpolateStep (); // v prípade potreby presuňte servá. oneskorenie (3); } Nastav.pozícia (3, 291); // nastavenie polohy spoja 3 na oneskorenie '0' (100); // čakanie na pohyb kĺbu, ak (RunCheck == 1) {MenuOptions (); }} neplatné MovePose3 () {oneskorenie (100); // odporúčaná pauza bioloid.loadPose (Pose3); // načítanie pózy z FLASH, do pufra nextPose bioloid.readPose (); // čítanie v aktuálnych polohách servo do vyrovnávacej pamäte curPose Serial.println ("###############################"); Serial.println ("Premiestňovanie serva na 3. pozíciu"); Serial.println ("################################"); oneskorenie (1000); bioloid.interpolateSetup (1000); // nastavenie interpolácie z prúdu-> ďalšie viac ako 1/2 sekundy, kým (bioloid.interpolation> 0) {// urobte to, kým sme nedosiahli našu novú pozíciu bioloid.interpolateStep (); // v prípade potreby presuňte servá. oneskorenie (3); } Nastav.pozícia (3, 291); // nastavenie polohy spoja 3 na oneskorenie '0' (100); // čakanie na pohyb kĺbu, ak (RunCheck == 1) {MenuOptions (); }}
neplatné MovePose4 () {oneskorenie (100); // odporúčaná pauza bioloid.loadPose (Pose4); // načítanie pózy z FLASH, do pufra nextPose bioloid.readPose (); // čítanie v aktuálnych polohách serv do vyrovnávacej pamäte curPose Serial.println ("##############################"); Serial.println ("Presunutie serv na 4. pozíciu"); Serial.println ("###############################"); oneskorenie (1000); bioloid.interpolateSetup (1000); // nastavenie interpolácie z prúdu-> ďalšie viac ako 1/2 sekundy, kým (bioloid.interpolation> 0) {// urobte to, kým sme nedosiahli našu novú pozíciu bioloid.interpolateStep (); // v prípade potreby presuňte servá. oneskorenie (3); } Nastav.pozícia (3, 291); // nastavenie polohy spoja 3 na oneskorenie '0' (100); // čakanie na pohyb kĺbu, ak (RunCheck == 1) {MenuOptions (); }}
neplatné MoveTest () {Serial.println ("##############################"); Serial.println ("Inicializácia testu pohybových znakov"); Serial.println ("###############################"); oneskorenie (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Moving Servo ID:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; oneskorenie (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; oneskorenie (10); }
// iterácia na ďalšie servo ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
neplatné MenuOptions () {Serial.println ("##############################"); Serial.println („Ak chcete znova spustiť jednotlivé testy, zadajte voľbu 1-5.“); Serial.println ("1) 1. pozícia"); Serial.println ("2) 2. pozícia"); Serial.println ("3) 3. pozícia"); Serial.println ("4) 4. pozícia"); Serial.println ("5) domovská pozícia"); Serial.println ("6) Skontrolujte napätie v systéme"); Serial.println ("7) Vykonajte test LED"); Serial.println ("8) Relax Servos"); Serial.println ("###############################"); }
neplatné RelaxServos () {id = 1; Serial.println ("###############################"); Serial.println („Relaxačné serva“); Serial.println ("###############################"); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)%SERVOCOUNT; oneskorenie (50); } if (RunCheck == 1) {MenuOptions (); }}
neplatné LEDTest () {id = 1; Serial.println ("################################"); Serial.println ("Spustený test LED"); Serial.println ("################################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED svieti - ID serva:"); Serial.println (id); oneskorenie (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED VYPNUTÁ - Servo ID:"); Serial.println (id); oneskorenie (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // nastavenie polohy spoja 1 na oneskorenie '0' (100); // počkajte, kým sa kĺb pohne
}
Náš program sme založili na programe výrobcov PincherTest s niekoľkými zásadnými úpravami v prípade polohovania. Použili sme poses.h, aby mal robot polohy v pamäti. Najprv sme sa pokúsili vytvoriť naše hracie rameno s Pixycam automatické, ale kvôli problémom so svetlom a malou obrazovkou sa to nemohlo stať. Robot má základnú domácu polohu, po nahraní programu otestuje všetky servá nájdené v robote. Pózy pre 1-4 tlačidlá sme nastavili, takže si ich budete ľahko pamätať. Neváhajte program použiť.
Krok 4: Videonávod
Krok 5: Záver
Na záver je robot pre nás zábavný malý projekt a zábavné hranie a experimentovanie. Odporúčame vám to vyskúšať a tiež prispôsobiť.
Odporúča:
Ultrazvukový senzor na robotickom vysávači: 5 krokov
Ultrazvukový senzor na robotickom vysávači: Ahoj, máme robotický vysávač Dirt Devil už asi 3 roky a stále robí svoju prácu. Je to typ M611, ktorý je trochu „hlúpy“: žiadne skenovanie oblasti alebo pamäť, kde nie je možné vysávať, ale so schopnosťou vrátiť sa
Výkonný odsávač pár na kĺbovom ramene: 8 krokov (s obrázkami)
Výkonný odsávač pár na kĺbovom ramene: Predtým som mal niekoľko spájkovacích odsávačov pár. Prvý z nich nemal dostatok energie a druhý bol iba pevnou skrinkou bez akýchkoľvek artikulačných možností, v mnohých prípadoch som preň nevedel nájsť dobrú pozíciu, bol príliš nízky alebo ďaleko za ním
Naučte sa klavírne klávesy s Makey Makey: 6 krokov (s obrázkami)
Naučte sa klavírne klávesy s Makey Makey: Postavil som to pre noc Instuctables v stanici Maker. Táto hra vám pomôže naučiť sa, kde sú poznámky na klávesnici klavíra, pomocou hry. Naša skupina bola pozvaná, aby sa stala súčasťou pavilónu Maker Station na vzdelávacom veľtrhu. Počas rozhovoru so školou
Elektrifikujte svoje klavírne zariadenie Tap-A-Tune: 9 krokov (s obrázkami)
Elektrifikujte svoj klavír Tap-A-Tune: Vytvorte experimentálnu punkovú hudbu a zvukové efekty hororových filmov s týmto projektom inšpirovaným „elektrickou gitarovou krabicou“od Randofo; Inštruovateľný a poučiteľný „Elektrický ukelele s ovládaním tónov“od spoločnosti EvanKale. Klavír tap-a-tune je
Arduino - klavírne dlaždice: 16 krokov (s obrázkami)
Arduino - Klavírne dlaždice: Ahoj, ľudia na internete, toto bude o tom, ako vytvoriť to, čo URČITE nie je odtrhnutie mobilnej hry na arduino uno r3.takže na začiatok budete potrebovať všetky diely, ktoré sú nasledujúce ! 1x Arduino Uno r3 (42 dolárov) 2x štít klávesnice LCD (každý 19 dolárov) 5