» Elektronica » Arduino »Robot op Arduino!

Robot op Arduino!


Goede dag allemaal! Dit artikel zal gewijd zijn aan liefhebbers van elektronica, robotica en mensen met een niet-standaard blik op de omliggende dingen!

Dus nu zal ik proberen het proces van creatie, assemblage zo duidelijk mogelijk te beschrijven de robot met e vulling namelijk op Arduino! Laten we gaan!

Wat we nodig hebben:
Driedraads lus (3 stuks). Het is raadzaam om authentieker te nemen.

Gewone draden

Potentiometers

Weerstanden (220 ohm)

Knop

Batterijcompartiment

Broodplank

Nou, natuurlijk mezelf arduinka

En ook een uitbreidingsbord - zoiets MultiservoShieldom een ​​groot aantal servo's te besturen

En meer constructeur, wat de basis zal zijn van onze robot, dus het is raadzaam om "sterk" te kiezen

Van de tools die je nodig hebt:
Een set schroevendraaiers, sleutels, etc.

Evenals een soldeerbout, soldeer en flux


Laten we beginnen!
Stap # 1. Fabricage van het hoofdframe
Verzamel om te beginnen de "twee letters H" Het ziet er zo uit:

Dan een constructie waarop onze de robot zal blijven staan. Het is helemaal niet nodig zoals op de foto - naar eigen goeddunken .. Het bleek als volgt:

We installeren onze "N" op de steun

Van onderen draaien we de bouten vast

Op de andere "H" repareren we de eerste servo, die verantwoordelijk is voor het draaien van de hoofden van onze toekomstige robot






Het blijkt zoiets als het volgende:

Bijna het frame is klaar! Het blijft om deze twee structuren met metalen platen te bevestigen en de robot hoogte te geven!





Stap # 2: een frame maken voor toekomstige robotoren
Om dit te doen, moeten we twee vergelijkbare structuren samenstellen en de servo's erop bevestigen, zoals weergegeven in de afbeelding:



Maak vervolgens met bouten en moeren verbinding met het hoofdframe. Het zal het volgende blijken te zijn:




Bovenaanzicht:


Welnu, een bepaald prototype van de robot is bijna klaar! Ga je gang ..
Stap # 3. Ogen maken en het hele hoofd van onze robot!
Hiervoor heb ik de oude handset van de intercom gebruikt. Persoonlijk doet ze me denken aan een gezicht! Zie meer ..

We maken twee gaten en bevestigen de wip voor de servo aan de buis


We lijmen de leds direct aan de zijkanten en solderen de draden eraan


Ik heb dunne gebruikt:

Dat is er gebeurd!

Stap # 4 Oren maken
We gebruiken gewone doppen uit kleine doosjes
Maak ook de schommelstoelen vast voor serv




Nu bevestigen we moedig de delen van het lichaam van de robot op de servers
Zoals dit:


Bovenaanzicht:



Terug:


In principe kun je nu van de robot genieten, maar we zullen de taak ingewikkelder maken. We zullen de ogen en oren van de robot draaien met behulp van potentiometers en onze arduinka
Stap # 5 Elektronica
Door de arduino te combineren met het multiservice-schild, plaatsen we een driedraads lus van elke servo in de pinnen 9, 10, 11 (linkeroor, rechteroor, cent, als je de robot naar ons toe richt)
Dan installeren we op het breadboard een potentiometer, een knop, weerstanden .. Het zal er zo uitzien, natuurlijk lelijk, maar het belangrijkste werkt)







Meer details!
Hoe de knop te installeren:


Waar de witte draad stroom is, is rood de digitale ingang van microcontroller nr. 6 en gaat de weerstand naar aarde (gele draad)

Hoe een potentiometer te installeren:


Rode draad - voeding, geel - aarde, wit - analoge ingang van microcontroller nr. 0 (we sluiten op dezelfde manier een andere potentiometer aan, alleen analoge ingang van controller nr. 1)

We installeren ook weerstanden voor LED's op het bord:

stroom wordt geleverd door 3 en 5 pinnen van de arduino, en komt door de gele en zwarte draden en door de weerstanden gaat naar de grond (controller GND)

Nou, eigenlijk alles, we zijn klaar met elektronica! Het blijft alleen om de volgende te downloaden schets en speel met de robot !!

#include
#include
Multiservo myservo1;
Multiservo myservo2;
Multiservo myservo3;
int b, k1, p1, p2;
int A = 0;
int i = 0;
ongetekende lange m2 = 0;
ongetekend lang m1 = 0;
int r1 = 70;
int r2 = 110;
int r3 = 70;
 int h1 = 0;
 int h = 0;
ongeldige setup ()
{
  myservo1.attach (9); // linker oor
  myservo2.attach (10); // rechter oor
  myservo3.attach (11); // ogen
      pinMode (6, INPUT); // knop
      pinMode (3, OUTPUT); // ogen lichten PWM op
      pinMode (5, OUTPUT);
}
 leegte lus ()
{
   
    terwijl (A == 0) // robot handmatige regelkring
    {
        b = digitalRead (6);
        als (! b) k1 = 1;
        als (b == 1 && k1 == 1)
        {
              vertraging (10);
              b = digitalRead (6);
              als (b == 1 && k1 == 1)
                {
                 A is 1;
                 k1 = 0;
                }
        }
      p1 = int (analogRead (A0) / 6);
      p2 = int (analogRead (A1) / 6);
      myservo1.write (p1);
      myservo2.write (p1);
      myservo3.write (p2);
      analogWrite (3, i);
      analogWrite (5, i);
      if (millis ()> = m1 + 70 && h1 == 0)
      {
        i = i + 4;
        m1 = millis ();
        als (i> 250) h1 = 1;
      }
     
        if (millis ()> = m1 + 70 && h1 == 1)
      {
        i = i-4;
        m1 = millis ();
        als (i == 0) h1 = 0;
      }
    }
  while (A == 1) // Robot autonome werkcyclus
   {
       digitalWrite (13.0);
       b = digitalRead (6);
        als (! b) k1 = 1;
        als (b == 1 && k1 == 1)
        {
            vertraging (10);
            b = digitalRead (6);
            als (b == 1 && k1 == 1)
            {
                A is 0;
                k1 = 0;
            }
        }
      analogWrite (3, i);
      analogWrite (5, i);
      if (millis ()> = m1 + 70 && h1 == 0)
      {
        i = i + 4;
        m1 = millis ();
        als (i> 250) h1 = 1;
      }
      if (millis ()> = m1 + 70 && h1 == 1)
      {
        i = i-4;
        m1 = millis ();
        als (i == 0) h1 = 0;
      }
   if (millis ()> = m2 + 15 && h == 0)
   {
    myservo1.write (r1);
    myservo2.write (r2);
    myservo3.write (r3);
    r1 = r1 + 1;
    r2 = r2-1;
    r3 = r3 + 1;
    als (r1 == 110) h = 1;
    m2 = millis ();
   }
   if (millis ()> = m2 + 15 && h == 1)
   {
    myservo1.write (r1); // 110
    myservo2.write (r2); // 70
    myservo3.write (r3); // 110
    r1 = r1-1;
    r2 = r2 + 1;
    r3 = r3-1;
    als (r1 == 70) h = 0;
    m2 = millis ();
   }
   }
}


De code is vrij groot, maar geloof me, het is het waard!
Kortom, wat doet dit programma:
We hebben een knop die verantwoordelijk is voor 2 toestanden van het systeem: ofwel sturen we de robot handmatig aan, ofwel voert hij de bewegingen die al van tevoren zijn geregistreerd uit. Wanneer een knop wordt ingedrukt, veranderen de toestanden voor ons en in de code veranderen 2 cycli onderling, waarin de bijbehorende opdrachten worden geregistreerd. De ogen van onze robot lichten geleidelijk op, worden helderder en helderder en vervagen vervolgens. daarom hebben we de leds gedupliceerd naar de pinnen die PWM ondersteunen - pulsbreedtemodulatie.

Foto's van de robot:




Klein video-opname, hoe en wat draait uiteindelijk:

Concluderend wil ik zeggen dat deze robot natuurlijk lang bij je op kan komen, maar dit is de smaak van ieder mens. Doe het! Uitvinden! Evolueer! Veel geluk voor iedereen!
7
6.7
5.7

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten

We raden je aan om te lezen:

Geef het voor de smartphone ...