
Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:44



Tässä ohjeessa teen yksinkertaisen robottivarren. Sitä ohjataan päävarren avulla. Käsi muistaa liikkeet ja pelaa peräkkäin. Konsepti ei ole uusi Sain idean "minirobotti -käsivarsilta" Stoerpeakilta. Halusin tehdä tämän jo pitkään, mutta silloin olin täysin noob ja minulla ei ollut tietoa ohjelmoinnista. Nyt vihdoin rakennan sellaisen, pidän sen yksinkertaisena, halvalla ja jaan sen teidän kaikkien kanssa.
Aloitetaan siis….
Vaihe 1: Tarvitsemasi asiat:-


Tässä on luettelo tarvitsemistasi asioista:-
1. Servomoottorit x 5 Linkki Yhdysvaltoihin:- https://amzn.to/2OxbSH7Link for Europe:-
2. Potentiometrit x 5 (olen käyttänyt 100 kt.) Linkki Yhdysvaltoihin:- https://amzn.to/2ROjhDMLink for Europe:-
3. Arduino UNO. (Voit käyttää myös Arduino Nanoa) Linkki Yhdysvalloille:- https://amzn.to/2DBbENWLink for Europe:-
4. Leipälauta. (Ehdotan tätä sarjaa) Linkki meille:- https://amzn.to/2Dy86w4Link for Europe:-
5. Akku. (valinnainen, käytän 5v -sovitinta)
6. Pahvi/puu/aurinkopaneeli/akryyli mitä tahansa on saatavilla tai helppo löytää.
Ja tarvitset myös Arduino IDE: n asennettuna.
Vaihe 2: Varren valmistus:-


Tässä olen käyttänyt Popsicle -tikkuja käsivarren valmistamiseen. Voit käyttää mitä tahansa saatavilla olevaa materiaalia. Ja voit kokeilla erilaisia mekaanisia malleja tehdäksesi vielä paremman käsivarren. suunnitteluni ei ole kovin vakaa.
Kiinnitin vain kaksipuolista teippiä servojen kiinnittämiseen Popsicle -tikkuun ja kiinnitin ne ruuveilla.
Master -käsivarteen liimasin potentiometrit popsicle -tikkuihin ja tein varren.
Kuviin viittaaminen antaa sinulle paremman idean.
Olen asentanut kaiken A4 -kokoiselle kankaalle, jota käytetään pohjana.
Vaihe 3: Yhteyksien luominen:-



Tässä vaiheessa teemme kaikki tarvittavat liitännät, katso yllä olevat kuvat.
- Liitä ensin kaikki servot rinnakkain virtalähteen kanssa (punainen johto +ve: hen ja musta tai ruskea johto Gnd: ään)
- Liitä seuraavaksi signaalijohdot eli keltainen tai oranssi johto arduinon PWM -nastaan.
- Kytke nyt potentiometrit arduinon +5v ja Gnd rinnakkain.
- Liitä keskiliitin ardunion analogiseen nastaan.
Tässä digitaalisia nastoja 3, 5, 6, 9 ja 10 käytetään servojen ohjaamiseen
Analogisia nastoja A0 - A4 käytetään tuloon potentiometreistä.
Nastaan 3 kytkettyä servoa ohjataan potentiometrillä, joka on kytketty A0: een
Nastaan 5 kytkettyä servoa ohjataan potilla A1: llä ja niin edelleen.
Huomaa:- Vaikka servoja ei käytetä arduino, varmista, että liität servojen Gnd: n arduinoon, muuten varsi ei toimi.
Vaihe 4: Koodaus:-

Tämän koodin logiikka on melko yksinkertainen: potentiometrien arvot tallennetaan taulukkoon, jonka jälkeen tietueet kulkevat for -silmukan avulla ja servot suorittavat arvojen mukaiset vaiheet. Voit tarkistaa tämän opetusohjelman, jota käytin viitteeksi "Arduino Potentiometer Servo Control & Memory"
Koodi:- (Alla oleva ladattava tiedosto liitteenä.)
Ensin ilmoitamme kaikki tarvittavat muuttujat maailmanlaajuisesti, jotta voimme käyttää niitä koko ohjelman ajan. Tähän ei tarvita erityistä selitystä
#sisältää
// Servo -objektit Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potentiometrikohteet int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Muuttuja tallennettavaan servoasentoon int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Tallennettava muuttuja Edelliset sijaintiarvot int Prev_0_Pos; int Prev_1_Pos; int Edelliset_2_Pos; int Edelliset_3_Pos; int Edelliset_4_Pos; // Muuttuja tallennettavaksi Nykyisen sijainnin arvot int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Nykyiset_3_Pos; int Nykyiset_4_Pos; int Servo_Position; // Tallentaa kulman int Servo_Number; // Säilytyspalvelut varastossa [600]; // Matriisi tietojen tallentamiseen (Matriisin koon kasvattaminen kuluttaa enemmän muistia) int Index = 0; // Array -indeksi alkaa 0 -sijainnista char data = 0; // muuttuja tallentaa tietoja sarjatulosta.
Kirjoitamme nyt asetustoiminnon, jossa asetamme nastat ja niiden toiminnot. Tämä on tärkein toiminto, joka suoritetaan ensin
mitätön asennus ()
{Serial.begin (9600); // Sarjaliikenteeseen arduinon ja IDE: n välillä. // Servo -objektit on kiinnitetty PWM -nastoihin. Servo_0.kiinnitys (3); Servo_1.kiinnitys (5); Servo_2.kiinnitys (6); Servo_3.kiinnitys (9); Servo_4.liitäntä (10); // Servot on asetettu 100 asentoon alustuksen yhteydessä. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("Tallenna painamalla" R "ja toista" P "); }
Nyt meidän on luettava potentiometrien arvot käyttämällä analogisia sisääntulonappeja ja kartoitettava ne ohjaamaan servoja. Tätä varten määritämme funktion ja annamme sille nimen Map_Pot ();, voit nimetä sen haluamallasi tavalla, se on käyttäjän määrittämä toiminto
mitätön Map_Pot ()
{ / * Servot pyörivät 180 astetta, mutta niiden käyttäminen rajoihin ei ole hyvä idea, koska se saa servot surinaa jatkuvasti, mikä on ärsyttävää, joten rajoitamme servon siirtymisen välillä: 1-179 * / Pot_0 = analogRead (A0); // Lue syötteet potista ja tallenna ne muuttuvaan pottiin0. Servo_0_Pos = kartta (Pot_0, 0, 1023, 1, 179); // Karttaa servot arvon välillä 0 - 1023 Servo_0.write (Servo_0_Pos); // Siirrä servo tähän asentoon. Pot_1 = analoginenLue (A1); Servo_1_Pos = kartta (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analoginen (A2); Servo_2_Pos = kartta (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analoginen luku (A3); Servo_3_Pos = kartta (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analoginenLue (A4); Servo_4_Pos = kartta (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
Kirjoitetaan nyt silmukkafunktio:
tyhjä silmukka ()
{Map_Pot (); // Funktion kutsu potin arvojen lukemiseen, kun (Serial.available ()> 0) {data = Serial.read (); if (data == 'R') Serial.println ("Tallennusliikkeet …"); if (data == 'P') Serial.println ("Tallennettujen siirtojen toistaminen …"); } if (data == 'R') // Jos syötetään 'R', aloita tallennus. {// Tallenna arvot muuttujaan Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Edellinen_3_Pos = Servo_3_Pos; Edellinen_4_Pos = Servo_4_Pos; Map_Pot (); // Karttatoiminto palautetaan vertailuun, jos (abs (Prev_0_Pos == Servo_0_Pos)) // absoluuttinen arvo saadaan vertaamalla {Servo_0.write (Servo_0_Pos); // Jos arvot vastaavat servo sijoitetaan uudelleen, jos (Current_0_Pos! = Servo_0_Pos) // Jos arvot eivät vastaa {Storage [Index] = Servo_0_Pos + 0; // Arvo lisätään taulukkoon Index ++; // Indeksiarvoa lisätty 1} Current_0_Pos = Servo_0_Pos; } /* Samoin arvovertailu tehdään kaikille servoille, +100 lisätään joka kerta syötettäessä differentiaaliarvona. */ jos (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Current_1_Pos! = Servo_1_Pos) {Storage [Index] = Servo_1_Pos + 100; Indeksi ++; } Current_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); if (Current_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; Indeksi ++; } Current_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); if (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; Indeksi ++; } Current_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); if (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Indeksi ++; } Current_4_Pos = Servo_4_Pos; } / * Arvot tulostetaan sarjamonitoriin, '\ t' tarkoittaa arvojen näyttämistä taulukkomuodossa * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("Indeksi ="); Serial.println (hakemisto); viive (50); } jos (data == 'P') // JOS 'P' syötetään, aloita tallennettujen siirtojen toisto. {for (int i = 0; i <Index; i ++) // Kulje matriisi käyttämällä silmukkaa {Servo_Number = Storage /100; // Etsii servon määrän Servo_Position = Tallennus % 100; // Etsii servokytkimen asennon (Servonumero) {tapaus 0: Servo_0.write (Servo_Position); tauko; tapaus 1: Servo_1.write (Servo_Position); tauko; tapaus 2: Servo_2.write (Servo_Position); tauko; tapaus 3: Servo_3.write (Servo_Position); tauko; tapaus 4: Servo_4.write (Servo_Position); tauko; } viive (50); }}}
Kun koodi on valmis, lataa se nyt arduino -taululle
Smart -varsi on valmis toimimaan. Toiminto ei ole vielä yhtä sujuva kuin Stoerpeakin.
Jos voit parantaa koodia tai sinulla on ehdotuksia minulle, kerro minulle kommenttiosassa.
Tämän sanottuaan siirrytään testaukseen….
Vaihe 5: Testaus:-
Kun olet ladannut koodin taululle, avaa 'Sarjamonitori', löydät sen Työkalut -vaihtoehdosta. Kun sarjamonitori käynnistyy, arduino nollautuu. Nyt voit ohjata robottivartta päävarren avulla. Mutta mitään ei tallenneta.
Aloita tallennus kirjoittamalla 'R' näyttöön nyt, jolloin voit suorittaa tallennettavat liikkeet.
Kun liikkeet on tehty, sinun on syötettävä 'P', jotta voit toistaa tallennetut liikkeet. Servot suorittavat liikkeitä niin kauan kuin levyä ei ole nollattu.
Suositeltava:
Yksinkertainen taajuuslaskuri Arduinon avulla: 6 vaihetta

Yksinkertainen taajuuslaskuri Arduinon avulla: Tässä opetusohjelmassa opimme tekemään yksinkertaisen taajuuslaskurin Arduinon avulla. Katso video
Älykäs roskakori Arduinon, ultraäänianturin ja servomoottorin avulla: 3 vaihetta

Älykäs roskakori Arduinon, ultraäänianturin ja servomoottorin avulla: Tässä projektissa näytän sinulle kuinka tehdä älykäs roskakori Arduinolla, jossa roskakorin kansi avautuu automaattisesti, kun lähestyt roskaa. Muut tärkeät osat, joita käytetään tämän älykkään roskakorin valmistukseen, ovat HC-04-ultraääni
Älykäs herätyskello: Älykäs herätyskello, joka on valmistettu Raspberry Pi: llä: 10 vaihetta (kuvilla)

Älykäs herätyskello: älykäs herätyskello, joka on valmistettu Raspberry Pi: llä: Oletko koskaan halunnut älykkään kellon? Jos näin on, tämä on ratkaisu sinulle! Tein Smart Alarm Clockin, tämä on kello, jolla voit muuttaa herätysaikaa verkkosivuston mukaan. Kun hälytys soi, kuuluu ääni (summeri) ja 2 valoa
Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: 5 vaihetta

Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: Sony Spresense tai Arduino Uno eivät ole niin kalliita eivätkä vaadi paljon virtaa. Jos projektillasi on kuitenkin virtaa, tilaa tai jopa budjettia, voit harkita Arduino Pro Minin käyttöä. Toisin kuin Arduino Pro Micro, Arduino Pro Mi
IoT -pohjainen älykäs puutarhanhoito ja älykäs maatalous ESP32: 7 askeleen avulla

IoT -pohjainen älykäs puutarhanhoito ja älykäs maatalous ESP32: n avulla: Maailma muuttuu ajan ja maatalouden tavoin. Nykyään ihmiset integroivat elektroniikkaa kaikilla aloilla, eikä maatalous ole poikkeus tähän. Tämä elektroniikan yhdistäminen maataloudessa auttaa viljelijöitä ja puutarhoja hoitavia ihmisiä