
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48

A csoportot az UCN 2 automatizálási mérnöke alkotja, akik egy ragyogó ötlettel álltak elő, amire motiváltak vagyunk, hogy megtegyük és fejlesszük. Az ötlet egy Arduino táblán alapul, amely egy robotkart irányít. Az Arduino tábla a művelet agya, majd a művelet működtetője, a robotkar megteszi, amit kell. A részletesebb magyarázat később jön.
1. lépés: Felszerelés

Robot kar:
Phantomx Pincher robotkar készlet Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Szoftver a robothoz- https://www.arduino.cc/en/Main/OldSoftwareRelease… Színérzékelő kamera:
CMUcam5 Pixy kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Szoftver - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Lépés: Az Arduino beállítása

A beállításokat itt láthatja a táblán, ami nagyon egyszerű.
A bal oldalon található a tápegység.
A középső az első szervóhoz tartozik, amelyet később a többi szervóhoz csatlakoztatnak, szervóról szervóra.
Az alsó rész az, ahol PC -ről vagy laptopról irányítjuk a táblát, amelynek másik végén USB bemenet található.
3. lépés: Végső program
||| PROGRAM |||
#befoglalni
#include #include "poses.h" #include // Pixy Library #include
#define POSCOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; logikai IDCheck; logikai RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // állítsa az 1 -es számú közös regisztert 32 -re 50 -es sebességre. ax12SetRegister2 (2, 32, 50); // állítsa be a 2 -es számú közös regisztrációt a 32 -es sebességre. ax12SetRegister2 (3, 32, 50); // állítsa be a 3. számú 32 -es számú közös regisztrációt 50 -es sebességre. ax12SetRegister2 (4, 32, 50); // állítsa be a 4 -es számú közös regiszter 32 -es értékét az 50 -es sebességre. ax12SetRegister2 (5, 32, 100); // állítsa be az 5 -ös számú nyilvántartást 32 -től 100 -ig. // inicializálja a változókat id = 1; poz = 0; IDCheck = 1; RunCheck = 0; // soros port megnyitása Serial.begin (9600); késleltetés (500); Serial.println ("##########################" "); Serial.println ("Soros kommunikáció létrejött.");
// Check Lipo Battery Voltage CheckVoltage ();
// Szervók beolvasása, visszatérési pozíció MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// olvassa el az érzékelőt: int inByte = Serial.read ();
switch (inByte) {
„1” eset: MovePose1 (); szünet;
„2” eset: MovePose2 (); szünet; „3” eset: MovePose3 (); szünet;
„4” eset: MovePose4 (); szünet;
„5” eset: MoveHome (); szünet; „6” eset: Grab (); szünet;
„7” eset: LEDTest (); szünet;
„8” eset: RelaxServos (); szünet; }}
void CheckVoltage () {// várjon, majd ellenőrizze a feszültséget (LiPO biztonság) úszó feszültség = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("##########################" "); Serial.print ("Rendszerfeszültség:"); Soros.nyomat (feszültség); Serial.println ("volt"); if (feszültség 10,0) {Serial.println ("Névleges feszültségszintek"); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("###########################"); }
void MoveHome () {delay (100); // ajánlott szünet bioloid.loadPose (Home); // töltse be a pózt a FLASH -ból a következőPose puffer bioloid.readPose (); // az aktuális szervo pozíciókban olvassa be a curPose puffert Serial.println ("############################"); Serial.println ("Szervók áthelyezése alaphelyzetbe"); Serial.println ("##########################" "); késleltetés (1000); bioloid.interpolateSetup (1000); // az interpoláció beállítása a jelenlegi-> következőből több mint 1/2 másodpercen keresztül (bioloid.interpolating> 0) {// ezt tedd, amíg el nem értük az új pózunkat bioloid.interpolateStep (); // szervók mozgatása, ha szükséges. késleltetés (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // ajánlott szünet bioloid.loadPose (Pose1); // töltse be a pózt a FLASH -ból a következőPose puffer bioloid.readPose (); // az aktuális szervo pozíciókban olvassa be a curPose puffert Serial.println ("############################"); Serial.println ("Szervók áthelyezése az 1. pozícióba"); Serial.println ("##########################" "); késleltetés (1000); bioloid.interpolateSetup (1000); // az interpoláció beállítása a jelenlegi-> következőből több mint 1/2 másodpercen keresztül (bioloid.interpolating> 0) {// ezt tedd, amíg el nem értük az új pózunkat bioloid.interpolateStep (); // szervók mozgatása, ha szükséges. késleltetés (3); } SetPosition (3, 291); // állítsa a 3 -as csukló helyzetét '0' késleltetésre (100); // várja meg, amíg a csukló elmozdul, ha (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {delay (100); // ajánlott szünet bioloid.loadPose (Pose2); // töltse be a pózt a FLASH -ból a következőPose puffer bioloid.readPose (); // az aktuális szervo pozíciókban olvassa be a curPose puffert Serial.println ("############################"); Serial.println ("Szervók áthelyezése a 2. pozícióba"); Serial.println ("##########################" "); késleltetés (1000); bioloid.interpolateSetup (1000); // az interpoláció beállítása a jelenlegi-> következőből több mint 1/2 másodpercen keresztül (bioloid.interpolating> 0) {// ezt tedd, amíg el nem értük az új pózunkat bioloid.interpolateStep (); // szervók mozgatása, ha szükséges. késleltetés (3); } SetPosition (3, 291); // állítsa a 3 -as csukló helyzetét '0' késleltetésre (100); // várja meg, amíg a csukló elmozdul, ha (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // ajánlott szünet bioloid.loadPose (Pose3); // töltse be a pózt a FLASH -ból a következőPose puffer bioloid.readPose (); // az aktuális szervo pozíciókban olvassa be a curPose puffert Serial.println ("############################"); Serial.println ("Szervók áthelyezése a 3. pozícióba"); Serial.println ("##########################" "); késleltetés (1000); bioloid.interpolateSetup (1000); // az interpoláció beállítása a jelenlegi-> következőből több mint 1/2 másodpercen keresztül (bioloid.interpolation> 0) {// ezt tedd, amíg el nem értük az új pózunkat bioloid.interpolateStep (); // szervók mozgatása, ha szükséges. késleltetés (3); } SetPosition (3, 291); // állítsa a 3 -as csukló helyzetét '0' késleltetésre (100); // várja meg, amíg a csukló elmozdul, ha (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {delay (100); // ajánlott szünet bioloid.loadPose (Pose4); // töltse be a pózt a FLASH -ból a következőPose puffer bioloid.readPose (); // az aktuális szervo pozíciókban olvassa be a curPose puffert Serial.println ("############################"); Serial.println ("Szervók áthelyezése a 4. pozícióba"); Serial.println ("##########################" "); késleltetés (1000); bioloid.interpolateSetup (1000); // az interpoláció beállítása a jelenlegi-> következőből több mint 1/2 másodpercen keresztül (bioloid.interpolation> 0) {// ezt tedd, amíg el nem értük az új pózunkat bioloid.interpolateStep (); // szervók mozgatása, ha szükséges. késleltetés (3); } SetPosition (3, 291); // állítsa a 3 -as csukló helyzetét '0' késleltetésre (100); // várja meg, amíg a csukló elmozdul, ha (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("##########################" "); Serial.println ("A mozgásjel teszt inicializálása"); Serial.println ("##########################" "); késleltetés (500); id = 1; poz = 512; while (id <= SERVOCOUNT) {Serial.print ("Mozgó szervo azonosító:"); Sorozat.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; késleltetés (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; késleltetés (10); }
// iterate to next servo ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("##########################" "); Serial.println ("Kérjük, adja meg az 1-5 opciót az egyes tesztek újbóli futtatásához."); Serial.println ("1) 1. pozíció"); Serial.println ("2) 2. pozíció"); Serial.println ("3) 3. pozíció"); Serial.println ("4) 4. pozíció"); Serial.println ("5) Otthoni pozíció"); Serial.println ("6) Ellenőrizze a rendszer feszültségét"); Serial.println ("7) LED teszt végrehajtása"); Serial.println ("8) Relax Servos"); Serial.println ("##########################" "); }
void RelaxServos () {id = 1; Serial.println ("##########################" "); Serial.println ("Pihentető szervók."); Serial.println ("##########################" "); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)%SERVOCOUNT; késleltetés (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("##########################" "); Serial.println ("Futó LED teszt"); Serial.println ("##########################" "); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Sorozat.println (id); késleltetés (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Sorozat.println (id); késleltetés (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // állítsa az 1 -es csukló helyzetét "0" késleltetésre (100); // várja meg, amíg a csukló elmozdul
}
Programunkat a gyártók PincherTest programjára alapoztuk, néhány fontosabb változtatással a pozicionálás esetében. A pózok.h -t használtuk, hogy a robotnak legyenek pozíciói a memóriában. Először megpróbáltuk a játékkarunkat a Pixycam segítségével automatikusan létrehozni, de a fény és a kis képernyő problémák miatt ez nem történhetett meg. A robot alapvető otthoni pozícióval rendelkezik, a program feltöltése után teszteli a robotban található összes szervót. Beállítottuk a pózokat az 1-4 gombhoz, így könnyen megjegyezhető lesz. Nyugodtan használja a programot.
4. lépés: Videó útmutató
5. lépés: Következtetés
Összefoglalva, a robot egy szórakoztató kis projekt számunkra, és szórakoztató játék, amellyel játszhatunk és kísérletezhetünk. Javaslom, hogy próbálja ki és testreszabhatja azt is.
Ajánlott:
Robotkar markolattal: 9 lépés (képekkel)

Robotkar a fogóval: A citromfák betakarítása kemény munkának minősül, a fák nagy mérete és a citromfák ültetésének régiói forró éghajlata miatt. Ezért kell valami más, hogy segítsük a mezőgazdasági dolgozókat abban, hogy jobban elvégezzék munkájukat
3D robotkar Bluetooth vezérlésű léptetőmotorokkal: 12 lépés

3D robotkar Bluetooth-vezérlésű léptetőmotorokkal: Ebben az oktatóanyagban megtudjuk, hogyan lehet 3D robotkarot készíteni 28byj-48 léptetőmotorokkal, szervomotorral és 3D nyomtatott alkatrészekkel. Nyomtatott áramköri lap, forráskód, elektromos diagram, forráskód és sok információ megtalálható a webhelyemen
Robotkar vezérlése TLV493D, Joystick And és Arduino segítségével: 3 lépés

Robotkar vezérlése TLV493D, Joystick And és Arduino segítségével: Alternatív vezérlő a robot számára TLV493D érzékelővel, mágneses érzékelő 3 szabadságfokgal (x, y, z) ezekkel vezérelheti új projektjeit I2C kommunikációval mikrokontrollerek és elektronikus tábla, amelyek Bast P
Robotkar: 15 lépés

Robotkar: Rendeljen automatikus rendszert
Arduino - zongoracsempe: 16 lépés (képekkel)

Arduino - Zongoracsempe: Sziasztok internetes emberek! Ez arról fog szólni, hogy miként lehet elkészíteni azt, ami VÉGRE nem egy mobil játék letörlése egy arduino uno r3 -on. Így a kezdéshez szüksége lesz az összes részre, amelyek a következők: ! 1x Arduino Uno r3 (42 USD) 2x LCD billentyűzetpajzs (egyenként 19 USD) 5