![Automatizált labdahenger Arduino -val és egy szervóval: 3 lépés Automatizált labdahenger Arduino -val és egy szervóval: 3 lépés](https://i.howwhatproduce.com/images/001/image-1633-50-j.webp)
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47
![Image Image](https://i.howwhatproduce.com/images/001/image-1633-52-j.webp)
![](https://i.ytimg.com/vi/dOkQfpNRtf8/hqdefault.jpg)
Ez egy egyszerű kis Arduino és szervo projekt, amely körülbelül két órát vesz igénybe. Szervó segítségével felemeli az üvegedény kupakjának egyik végét, hogy acélgolyót forgasson a belső kerület körül. Önindító, megváltoztathatja a sebességet, és egyszerre két (vagy több?) Golyót is forgathat. Élvezet építeni és dolgozni. Az időzítési paraméterekkel valószínűleg még gyorsabb sebességgel is lehet játszani. Néhány hall effekt érzékelőt mágneses golyóval lehet használni, hogy okosabb gép legyen, amely képes kitalálni a legjobb paramétereket.
Meg kell említenem, hogy valakinek itt az instructables.com webhelyen van egy kifinomultabb labdahenger gépe:
Szükséges anyagok:
Arduino Uno (vagy bármelyik Arduino)
Szervo pajzs (opcionális)
9 g szervó
üveg kupak
acélgolyó
néhány fahulladék
1. lépés: Készítse el az alap- és csuklós kupaktartót
![Készítse el a talpat és a csuklós kupakot Készítse el a talpat és a csuklós kupakot](https://i.howwhatproduce.com/images/001/image-1633-53-j.webp)
Az alap csak egy darab fa, amire a csuklós fadarabot rögzítheti. A csuklós fának nagyobbnak kell lennie, mint az edény kupakja, amelyet használni fog, és elegendő hely kell legyen a csuklópántokhoz és a szervó felszereléséhez.
Kevés műanyag rc repülőgéppántot használtam, és csak ragasztottam őket a csuklós fához és az alaphoz.
2. lépés: Készítsen hosszabb szervókarot és rögzítse a szervót
![Készítsen hosszabb szervókarot és rögzítse a szervót Készítsen hosszabb szervókarot és rögzítse a szervót](https://i.howwhatproduce.com/images/001/image-1633-54-j.webp)
![Készítsen hosszabb szervókarot és rögzítse a szervót Készítsen hosszabb szervókarot és rögzítse a szervót](https://i.howwhatproduce.com/images/001/image-1633-55-j.webp)
Hosszabb szervókar készítéséhez csak egy 5 centis fadarabot erősítettem a szervókarhoz pár apró csavarral és anyával. A szervókarnak 90 fokosnak kell lennie a szervón, amikor vízszintes az alaphoz képest.
Most forróan ragasztottam a szervót a csuklós fa tartóhoz, de azt tapasztaltam, hogy ha néhány percnél tovább hagyja működni, a szervó felmelegíti a forró ragasztót, és elengedi a fát. Tehát jobb rögzítési módszer indokolt.
3. lépés: Töltse be és futtassa a vázlatot
![Vázlat betöltése és futtatása Vázlat betöltése és futtatása](https://i.howwhatproduce.com/images/001/image-1633-56-j.webp)
A szervómat pajzs segítségével rögzítettem a 7 -es csaphoz, mert egyszerűen kényelmes, és csak néhány dollárba kerülnek. Ha nincs pajzsa, akkor csatlakoztassa a szervo jelvezetéket az Arduino 7 -es tűjéhez, a piros vezetéket az 5 A -hoz az Arduino -hoz, és a földelő vezetéket a GND -hez az Arduino -n. Az arduino -nak elegendő áramot kell biztosítania a szervó működtetéséhez. Az árnyékolást azért használom, mert könnyű a külső feszültséget csak a szervóhoz használni.
Itt a vázlat. Írtam egy szervo sebességszabályozó rutinot, hogy megváltoztassam a szervó sebességét, mert valószínűleg nem fog jól működni teljes sebességgel.
Módosíthatja a timingDelay -t, hogy különböző sebességű gördülést érjen el. A sebesség megváltoztatásához megváltoztathatja a myServo () függvény harmadik paraméterét is.
//////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////// /////////////// // készítette: Jim Demello, Shangluo Egyetem, 2017
// szabadon használhatod, manipulálhatod, bármit megtehetsz ezzel a kóddal, a nevem nem kötelező
// Ez a rutin lehetővé teszi tetszőleges számú szervó interpolálását, csak adjon hozzá új sorokat, ha a szervók száma meghaladja a 4 -et
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#befoglalni
Szervo myservo1, myservo2; // szervo objektum létrehozása a szervó vezérlésére
int servoRead (int servoNumber) {
int servoCurrent;
if (servoNumber == 1) {servoCurrent = myservo1.read (); }
if (servoNumber == 2) {servoCurrent = myservo2.read (); }
visszatérő szervoCurrent;
}
void servoWrite (int servoNumber, int offset) {
if (servoNumber == 1) {myservo1.write (offset); }
if (servoNumber == 2) {myservo2.write (eltolás); }
}
void myServo (int newAngle, int angleInc, int incDelay, int servoNum) {
int curAngle;
if (servoNum == 1) {curAngle = myservo1.read (); }
if (servoNum == 2) {curAngle = myservo2.read (); }
if (curAngle <newAngle) {
for (int szög = curAngle; szög <newAngle; szög += szögInc) {
if (servoNum == 1) myservo1.write (szög);
if (servoNum == 2) myservo2.write (szög);
késleltetés (incDelay); }
}
else if (curAngle> newAngle) {
for (int szög = curAngle; szög> newAngle; szög -= szögInc) {
if (servoNum == 1) myservo1.write (szög);
if (servoNum == 2) myservo2.write (szög);
késleltetés (incDelay); }
}
}
void interpolate2Servos (int servo1, int servo1Position, int servo2, int servo2Position, int numberSteps, int timeDelay) {
int servo1Current, servo2Current;
servo1Current = servoRead (servo1);
servo2Current = servoRead (servo2);
// Serial.print ("Servo3Pos és Current"); Serial.print (servo3Position); Serial.print (""); Serial.println (servo3Current);
// Serial.print ("Servo4Pos és Current"); Serial.print (servo4Position); Serial.print (""); Serial.println (servo4Current);
// Serial.print ("Servo5Pos és Current"); Serial.print (servo5Position); Serial.print (""); Serial.println (servo5Current);
// Serial.print ("Servo6Pos és Current"); Serial.print (servo6Position); Serial.print (""); Serial.println (servo6Current);
// Sorozat.println ("");
int cOffset = (servo1Position - servo1Current); cOffset = abs (cOffset)/numberSteps;
int dOffset = (servo2Position - servo2Current); dOffset = abs (dOffset)/numberSteps;
int cOffsetTotal = 0, dOffsetTotal = 0;
cOffsetTotal = szervo1Current;
dOffsetTotal = szervo2Current;
for (int x = 0; x
if (servo1Position> servo1Current) {cOffsetTotal = cOffsetTotal + cOffset; }
else {cOffsetTotal = cOffsetTotal - cOffset; }
if (servo2Position> servo2Current) {dOffsetTotal = dOffsetTotal + dOffset; }
else {dOffsetTotal = dOffsetTotal - dOffset; }
if (servo1Position! = servo1Current) servoWrite (servo1, cOffsetTotal);
if (servo2Position! = servo2Current) servoWrite (servo2, dOffsetTotal);
// Serial.print ("a és b eltolás"); Serial.print (aOffsetTotal); Serial.print (""); Serial.println (bOffsetTotal); késleltetés (10);
késleltetés (timeDelay);
} // end for
//////////////////////////////////////
// vigyázzon a modulo maradványokra //
/////////////////////////////////////
if (servo1Position! = servo1Current) servoWrite (servo1, servo1Position);
if (servo2Position! = servo2Current) servoWrite (servo2, servo2Position);
}
int timingDelay = 100;
int servoDelay = 100;
int degGap = 10;
// Ez a kezdő fokozat (kisebbnek kell lennie, mint a végfok)
int degStart = 0;
// Ez a végfok (nagyobbnak kell lennie, mint a kezdő fok)
int degEnd = 360;
// Ez a kör sugara
int sugár = 8;
üres beállítás ()
{
Sorozat.kezdet (9600);
késleltetés (100);
myservo1.attach (7); // a 7 -es csap szervóját a szervo -objektumhoz rögzíti
myservo1.write (90);
myservo2.attach (8); // a szervo objektumhoz csatolja a 8 -as csap szervóját
myservo2.write (90);
késleltetés (1000); // várja, hogy a szervó odaérjen
interpolate2Servos (1, 90, 2, 90, 10, 60); // semleges
késleltetés (1000);
}
void loop () {
timingDelay = 15; // 10 -kor dolgozik
servoDelay = 4;
spin4 ();
// interpolate2Servos (1, 90, 2, 90, 1, 60); // semleges
// delay (1000);
// exit (0); // program szüneteltetése - a folytatáshoz nyomja meg a reset gombot
}
void spin3 () {
interpolate2Servos (1, 90, 2, 110, 1, 60); // semleges
késleltetés (timingDelay);
interpolate2Servos (1, 90, 2, 80, 1, 60); // semleges
késleltetés (timingDelay);
}
void spin2 () {
// interpolate2Servos (1, 80, 2, 90, 1, 50); // semleges
késleltetés (timingDelay);
interpolate2Servos (1, 80, 2, 80, 1, 60); // semleges
késleltetés (timingDelay);
interpolate2Servos (1, 110, 2, 80, 1, 60); // semleges
késleltetés (timingDelay);
// interpolate2Servos (1, 110, 2, 110, 1, 60); // semleges
késleltetés (timingDelay);
}
void spin1 () {
// int deg = (degStart / (180 / 3.14));
float deg = (degStart * 3.141592 / 180); // fokok radiánokká alakítása
úszó xPos = 90 + (cos (deg) * sugár);
// xPos = kerek (xPos);
úszó yPos = 90 + (sin (deg) * sugár);
// yPos = kerek (yPos);
Serial.print ("degGap ="); Serial.print (degGap); Serial.print ("deg ="); Serial.print (deg); Serial.print ("cos ="); Serial.print (cos (deg)); Serial.print ("degStart ="); Serial.print (degStart); Serial.print ("x ="); Serial.print (xPos); Serial.print ("y ="); Serial. println (yPos);
// interpolate2Servos (1, xPos, 2, yPos, 1, servoDelay); // semleges
myservo1.write (xPos);
myservo2.write (yPos);
késleltetés (timingDelay);
if (degStart> = degEnd) {
degStart = 0;
ha (degGap> 180)
degGap = 180;
// degGap = 0;
más
degGap = degGap + 2;
degGap = degGap - 2;
// degStart = degStart +degGap;
}
degStart = degStart + degGap;
}
void spin4 () {
(int i = 0; i <= 360; i ++) {
úszó j = 20 * (cos ((3,14 * i)/180)) + 90;
úszó k = 20 * (sin ((3,14 * i)/180)) + 90;
myservo1.write (j);
myservo2.write (k);
Sorozatnyomat (j);
Serial.print (",");
Soros.println (k);
késleltetés (100);
}
}
Ajánlott:
Fókuszálja a Pi kiváló minőségű kamerát Legóval és szervóval: 4 lépés (képekkel)
![Fókuszálja a Pi kiváló minőségű kamerát Legóval és szervóval: 4 lépés (képekkel) Fókuszálja a Pi kiváló minőségű kamerát Legóval és szervóval: 4 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-2223-10-j.webp)
Fókuszáljon a Pi kiváló minőségű kamerára a Legóval és a szervóval: Egy kissé feltört Lego darabbal, folyamatos szervóval és néhány Python kóddal a Raspberry Pi kiváló minőségű fényképezőgépét a világ bármely pontjáról fókuszálhatja! A Pi HQ kamera fantasztikus darab készlet, de ahogy a legutóbbi Merlin -en dolgozva találtam
Hogyan építsünk egy 8x8x8 LED -es kockát és vezéreljük egy Arduino segítségével: 7 lépés (képekkel)
![Hogyan építsünk egy 8x8x8 LED -es kockát és vezéreljük egy Arduino segítségével: 7 lépés (képekkel) Hogyan építsünk egy 8x8x8 LED -es kockát és vezéreljük egy Arduino segítségével: 7 lépés (képekkel)](https://i.howwhatproduce.com/images/003/image-6458-j.webp)
Hogyan készítsünk 8x8x8 LED -es kockát és vezéreljük azt egy Arduino -val: 2020. január szerkesztés: Hagyom, ha valaki ötletek generálására szeretné használni, de már nincs értelme kocka építeni ezen utasítások alapján. A LED -illesztőprogram -IC -k már nem készülnek, és mindkét vázlatot a régi verzióban írták
Egyszerű gimbal Micro: bit és 2 szervóval: 4 lépés
![Egyszerű gimbal Micro: bit és 2 szervóval: 4 lépés Egyszerű gimbal Micro: bit és 2 szervóval: 4 lépés](https://i.howwhatproduce.com/images/007/image-20706-j.webp)
Egyszerű gimbal Micro: bit és 2 szervóval: Szia! Ma megmutatom, hogyan készíts egy egyszerű kardántengely -stabilizátort. Itt láthatod a YouTube videót. Könnyű kamerát tartalmaz. De ha egy erősebb szervót és szerkezetet helyez el, akkor elfér az okostelefon vagy akár egy megfelelő kamera. A következő lépésekben
Sétáló robot 3 szervóval: 4 lépés (képekkel)
![Sétáló robot 3 szervóval: 4 lépés (képekkel) Sétáló robot 3 szervóval: 4 lépés (képekkel)](https://i.howwhatproduce.com/images/011/image-31301-j.webp)
Sétáló robot 3 szervóval: Ez egy egyszerű kétlábú robot tud járni. Arduino -ból, három szervóból és egyszerű mechanizmusból készült. Parancsolja a robotnak, hogy előre, hátra, akár foroghat vagy fordulhat. Az egyik szervó a súlypont mozgatása. A másik kettő mindkét lábát csavarja
Trófealabda óra szervóval: 18 lépés
![Trófealabda óra szervóval: 18 lépés Trófealabda óra szervóval: 18 lépés](https://i.howwhatproduce.com/images/002/image-4896-36-j.webp)
Trófealabda óra a szervo használatával: Az óra minden formában megtalálható. De szeretnék valami új gömb alakú órát csinálni, ahol a perctárcsázó mutató a gömb alsó fele, az óramutató pedig a gömb felső fele. Először is gondolja át a normál óra átalakítását. De míg a percek órával haladnak