Përmbajtje:

Krah i thjeshtë dhe i zgjuar robotik duke përdorur Arduino !!!: 5 hapa (me fotografi)
Krah i thjeshtë dhe i zgjuar robotik duke përdorur Arduino !!!: 5 hapa (me fotografi)

Video: Krah i thjeshtë dhe i zgjuar robotik duke përdorur Arduino !!!: 5 hapa (me fotografi)

Video: Krah i thjeshtë dhe i zgjuar robotik duke përdorur Arduino !!!: 5 hapa (me fotografi)
Video: ESP32 Tutorial 45- Custom Streamign Server with LED control CAM-3 l SunFounder's ESP32 Learnig kit 2024, Qershor
Anonim
Image
Image
Gjërat që ju nevojiten
Gjërat që ju nevojiten

Në këtë udhëzues do të bëj një krah të thjeshtë robotik. Kjo do të kontrollohet duke përdorur një krah kryesor. Krahu do të kujtojë lëvizjet dhe do të luajë me radhë. Koncepti nuk është i ri Unë e mora idenë nga "mini krahu robotik -nga Stoerpeak" Doja ta bëja këtë për një kohë të gjatë, por atëherë isha krejtësisht noob dhe nuk kisha njohuri për programimin. Tani më në fund po ndërtoj një, duke e mbajtur të thjeshtë, të lirë dhe duke e ndarë me të gjithë ju.

Pra, le të fillojmë….

Hapi 1: Gjërat që ju nevojiten:-

Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten
Gjërat që ju nevojiten

Këtu është një listë e gjërave që do t'ju nevojiten:-

1. Servo motorët x 5 Link për SHBA:- https://amzn.to/2OxbSH7Lidhje për Evropën:-

2. Potenciometra x 5 (kam përdorur 100k.) Lidhje për SHBA:- https://amzn.to/2ROjhDMLink për Evropën:-

3. Arduino UNO. (Mund të përdorni edhe Arduino Nano) Lidhje për SHBA:- https://amzn.to/2DBbENWLidhje për Evropën:-

4. Tabela e bukës. (Unë sugjeroj këtë çantë) Lidhje për SHBA:- https://amzn.to/2Dy86w4Lidhje për Evropën:-

5. Bateria. (opsionale, unë jam duke përdorur një përshtatës 5v)

6. Karton/Dru/Dërrasë dielli/akrilik gjithçka që është në dispozicion ose e lehtë për tu gjetur.

Dhe gjithashtu do t'ju duhet të instaloni Arduino IDE.

Hapi 2: Bërja e krahut:-

Bërja e krahut
Bërja e krahut
Bërja e krahut
Bërja e krahut

Këtu kam përdorur shkopinj Popsicle për të bërë krahun. Ju mund të përdorni çdo material që është në dispozicion për ju. Dhe mund të provoni modele të ndryshme mekanike për të bërë krah më të mirë. dizajni im nuk është shumë i qëndrueshëm.

Unë thjesht përdor kasetë të dyanshme për të ngjitur servot në shkopin e Popsicle dhe për t'i lidhur ato duke përdorur vida.

Për krahun Master unë ngjita potenciometra në shkopinj të akullit dhe bëra krahun.

Referimi i fotografive do t'ju japë një ide më të mirë.

Unë kam montuar gjithçka në një tabelë kanavacë me madhësi A4, e përdorur si bazë.

Hapi 3: Krijimi i lidhjeve:-

Krijimi i lidhjeve
Krijimi i lidhjeve
Krijimi i lidhjeve
Krijimi i lidhjeve
Krijimi i lidhjeve
Krijimi i lidhjeve

Në këtë hap ne do të bëjmë të gjitha lidhjet e nevojshme, Referojuni fotografive të mësipërme.

  • Së pari lidhni të gjitha servos paralelisht me furnizimin me energji elektrike (Teli i Kuq në +ve dhe Tela e Zezë ose Kafe në Gnd)
  • Pastaj lidhni telat e sinjalit, domethënë tela të Verdhë ose Portokalli me kunjin PWM të arduino.
  • Tani lidhni potenciometrat në +5v dhe Gnd të arduino paralelisht.
  • Lidhni terminalin e mesëm me pinin analog të ardunio.

Këtu kunjat dixhitale 3, 5, 6, 9 & 10 përdoren për kontrollin e servos

Kunjat analoge A0 deri A4 përdoren për hyrje nga potenciometrat.

Servo e lidhur me pin 3 do të kontrollohet me potenciometër të lidhur me A0

Servo e lidhur me pin 5 do të kontrollohet nga tenxhere në A1, dhe kështu me radhë….

Shënim:- Edhe pse Servos nuk mundësohen nga arduino, Sigurohuni që të lidhni Gnd të servos me arduino ose përndryshe krahu nuk funksionon.

Hapi 4: Kodimi:-

Kodimi
Kodimi

Logjika e këtij kodi është mjaft e thjeshtë, vlerat e potenciometrave ruhen në një grup, të dhënat pastaj përshkohen duke përdorur një lak for dhe servos bëjnë hapat sipas vlerave. Ju mund të shikoni këtë tutorial që kam përdorur për referencën "Arduino Potentiometer Servo Control & Memory"

Kodi:- (Skedari i shkarkueshëm i bashkangjitur më poshtë.)

Së pari ne do të deklarojmë të gjitha ndryshoret e nevojshme në nivel global, në mënyrë që t'i përdorim ato gjatë gjithë programit. Asnjë shpjegim i veçantë nuk nevojitet për këtë

#përfshi

// Servo Objects Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Objektet e Potenciometrit int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Variabël për ruajtjen e Servo Position në Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Variabël për të ruajtur vlerat e pozicionit të mëparshëm int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Variabël për të ruajtur vlerat e pozicionit aktual int Current_0_Pos; int Aktual_1_Pos; int Aktual_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Pozicioni; // Ruan këndin në Servo_Number; // Magazinon numrin e servo int Storage [600]; // Grup për ruajtjen e të dhënave (Rritja e madhësisë së grupit do të konsumojë më shumë memorie) int Index = 0; // Indeksi i grupit fillon nga të dhënat e pozicionit 0 char = 0; // ndryshore për të ruajtur të dhënat nga hyrja serike.

Tani do të shkruajmë një funksion të konfigurimit, ku vendosim kunjat dhe funksionet e tyre. Ky është funksioni kryesor që ekzekutohet së pari

void setup ()

{Serial.fillo (9600); // Për komunikim serik midis arduino dhe IDE. // Objektet servo janë bashkangjitur në kunjat PWM. Servo_0.tash (3); Servo_1.tash (5); Servo_2.attach (6); Servo_3.shtoj (9); Servo_4.shtoj (10); // Servos janë vendosur në pozicionin 100 në fillimin. Servo_0.shkruaj (100); Servo_1.shkruaj (100); Servo_2.shkruaj (100); Servo_3.shkruaj (100); Servo_4.shkruaj (100); Serial.println ("Shtypni 'R' për të Regjistruar dhe 'P' për të luajtur"); }

Tani duhet të lexojmë vlerat e potenciometrave duke përdorur kunjat Anput Input dhe t'i hartojmë ato për të kontrolluar servos. Për këtë ne do të përcaktojmë një funksion dhe do ta emërojmë Map_Pot ();, mund ta emërtoni atë që dëshironi, është një funksion i përcaktuar nga përdoruesi

e pavlefshme Map_Pot ()

{ / * Servotët rrotullohen në 180 gradë, por përdorimi i tij në kufij nuk është një ide e mirë pasi bën që servot të gumëzhijnë vazhdimisht, gjë që është e bezdisshme, kështu që ne e kufizojmë servon të lëvizë midis: 1-179 * / Pot_0 = analogRead (A0); // Lexoni hyrjen nga tenxhere dhe ruajeni në Variable Pot_0. Servo_0_Pos = hartë (Tenxhere_0, 0, 1023, 1, 179); // Hartoni servot sipas vlerës nga 0 në 1023 Servo_0.write (Servo_0_Pos); // Zhvendoseni servo në atë pozicion. Pot_1 = analogRead (A1); Servo_1_Pos = hartë (Pot_1, 0, 1023, 1, 179); Servo_1.shkruaj (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = hartë (Pot_2, 0, 1023, 1, 179); Servo_2.shkruaj (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = hartë (Tenxhere_3, 0, 1023, 1, 179); Servo_3.shkruaj (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = hartë (Tenxhere_4, 0, 1023, 1, 179); Servo_4.shkruaj (Servo_4_Pos); }

Tani do të shkruajmë funksionin e lakut:

lak void ()

{Harta_Pot (); // Funksioni i thirrjes për të lexuar vlerat e tenxhere ndërsa (Serial.available ()> 0) {data = Serial.read (); if (të dhënat == 'R') Serial.println ("Regjistrimi i Lëvizjeve …"); nëse (të dhënat == 'P') Serial.println ("Luajtja e lëvizjeve të regjistruara …"); } nëse (të dhënat == 'R') // Nëse futet 'R', filloni regjistrimin. {// Ruani vlerat në një ndryshore Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Harta_Pot (); // Funksioni i hartës i kujtuar për krahasim nëse (abs (Prev_0_Pos == Servo_0_Pos)) // vlera absolute fitohet duke krahasuar {Servo_0.write (Servo_0_Pos); // Nëse vlerat përputhen servo ripozicionohet nëse (Current_0_Pos! = Servo_0_Pos) // Nëse vlerat nuk përputhen me {Storage [Index] = Servo_0_Pos + 0; // Vlera i shtohet grupit Index ++; // Vlera e indeksit e shtuar me 1} Current_0_Pos = Servo_0_Pos; } /* Ngjashëm krahasimi i vlerës bëhet për të gjithë servot, +100 shtohet çdo për hyrje si vlerë diferenciale. */ if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.shkruani (Servo_1_Pos); nëse (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.shkruani (Servo_2_Pos); nëse (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.shkruani (Servo_3_Pos); nëse (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.shkruani (Servo_4_Pos); nëse (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Indeksi ++; } Current_4_Pos = Servo_4_Pos; } / * Vlerat shtypen në monitorin serik, '\ t' është për shfaqjen e vlerave në formatin tabelor * / 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 (Indeksi); vonesë (50); } nëse (të dhënat == 'P') // NFSE P 'futet, Filloni të luani lëvizjet e regjistruara. {për (int i = 0; i <Index; i ++) // Përshkoni grupin duke përdorur për lak {Servo_Number = Storage /100; // Gjen numrin e servo Servo_Position = Magazinimi % 100; // Gjen pozicionin e servo switch (Servo_Number) {case 0: Servo_0.write (Servo_Position); pushim; rasti 1: Servo_1.shkruani (Servo_Position); pushim; rasti 2: Servo_2.write (Servo_Position); pushim; rasti 3: Servo_3.shkruani (Servo_Position); pushim; rasti 4: Servo_4.shkruaj (Servo_Position); pushim; } vonesë (50); }}}

Pasi kodi të jetë gati, Tani ngarkojeni atë në bordin arduino

Krahu Smart është gati për të punuar. Funksioni nuk është ende aq i qetë sa ai i bërë nga Stoerpeak.

Nëse mund ta bëni kodin më të mirë ose keni ndonjë sugjerim për mua, ju lutem më tregoni në seksionin e komenteve.

Me sa u tha, Le të kalojmë në testimin….

Hapi 5: Testimi:-

Pasi të keni ngarkuar me sukses kodin në tabelë, Hapni 'Serial Monitor' mund ta gjeni në opsionin Tools. Kur të fillojë monitori serik, arduino do të rivendoset. Tani mund të kontrolloni krahun robotik duke përdorur krahun kryesor. Por asgjë nuk regjistrohet.

Për të filluar regjistrimin, futni 'R' në monitor tani mund të kryeni lëvizjet që dëshironi të regjistroni.

Pasi të bëhen lëvizjet, duhet të futni 'P' në mënyrë që të luani lëvizjet e regjistruara. Servos do të vazhdojnë të kryejnë lëvizjet për aq kohë sa bordi nuk është rivendosur.

Recommended: