Projektas #4: Valdykite 2 vykdomuosius variklius (nuo 0º iki 180º) 1 vairasvirte
Išmokite sukonstruoti ir užprogramuoti grandin?, kad 2 vykdom?j? varikli? pad?ties valdymui, naudotum?te tik 1 vairasvirt?.
Atminkite, kad vairasvirt?je yra 2 potenciometrai, tod?l kiekvienas potenciometras bus susietas su skirtingu vykdomuoju varikliu. Vykdomojo variklio pad?tis svyruos nuo 0º iki 180º, priklausomai nuo vairasvirt?s kreipimo iš kair?s ? dešin?.
SUD?TINGUMO LYGIS: Vidutiniams.
PRATIMO TRUKM?: 30 min.
MEDŽIAGOS:
- 1 Vairasvirt?
- 2 Vykdomieji varikliai
- 1 „Build & Code UNO“ plokšt?
- 1 „Build&Code“ jutiklio apsauga
- 1 USB - USB B tipo kabelis
- 1 Kompiuteris
JUNGTYS:
- Prijunkite vairasvirt? prie „Build & Code 4in1“ plokšt?s analogini? jung?i? A0 ir A1.
Prijungimai prie analogin?s jungties A0:
- Prijunkite ?ŽEMINIM? (GND) prie G kontakto.
- Prijunkite Vcc prie V kontakto.
- Prijunkite VRx prie S kontakto.
Prijungimai prie analogin?s jungties A1:
- Prijunkite VRy prie S kontakto.
Kaip ir prisimenate, prijung?me vairasvirt? prie analogini? jung?i? A0 ir A1, nes joje yra du potenciometrai, kurie yra analoginiai jutikliai.
- Prijunkite vykdomuosius variklius prie „Build & Code 4in1“ plokšt?s.
- Prijunkite vykdom?j? varikl? S1 prie skaitmenin?s jungties 6. Prijunkite rud? kabel? prie G kontakto, raudon? kabel? prie V kontakto, o oranžin? kabel? prie S kontakto.
- Prijunkite vykdom?j? varikl? S2 prie skaitmenin?s jungties 9. Prijunkite rud? kabel? prie G kontakto, raudon? kabel? prie V kontakto, o oranžin? kabel? prie S kontakto.
Prijung?me vykdomuosius variklius prie skaitmenini? jung?i? 6 ir 9, nes jie turi PPM išvest?. Ši išvestis bus atsakinga už vykdomojo variklio sukim?si, kuris daugiau ar mažiau priklausys nuo iš vairasvirt?s gaut? ver?i?.
- 3. Toliau pateiktame paveiksl?lyje parodytos jungtys. Remkit?s juo kaip vadovu.
PROGRAMOS KODAS
Galite atlikti š? projekt? naudodami „Arduino“ program? arba suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Toliau pateikiamas reikiamas kodas.
„Arduino“ kodas
Sukursite program?, kuri nuolat nuskaitys informacij? iš 2 vairasvirt?s išves?i? ir remiantis iš vairasvirt?s gautomis vert?mis kreips vykdomuosius variklius viena ar kita kryptimi. Atleidus vairasvirt? vykdomasis variklis sugr?š ? savo pradin? pad?t?.
- Potenciometras yra analoginis jutiklis, tod?l jo rodmenys bus nuo 0 iki 1023, priklausomai nuo to, kiek j? pasuksite
- Skaitmeniniai PPM kontaktai veiks kaip išvesties kontaktai, ta?iau vietoj nuolat siun?iamos aukštos arba žemos vert?s, jie gal?s atlikti labai greitus pakeitimus, kad gal?t? pasi?sti tarpines vertes. Tai leis išsi?sti skirtingo lygio išvesties ?tamp?.
- Nor?dami naudoti vykdomuosius variklius, naudosite vykdom?j? varikli? bibliotek? „#include“, nes ji supaprastins vis? proces?.
- Vykdomasis variklis gali pasisukti nuo 0º iki 180º, tod?l tur?site susieti analogines skaitymo vertes su vykdomojo variklio jud?jimo vert?mis, naudodami „žem?lapio“ instrukcijas.
Dabar atlikite šiuos veiksmus:
- Parsisi?skite ir ?diekite „Arduino IDE“ program?. Ji si?loma „Windows“, „Mac OS“ ir „Linux“.
- Sukonfig?ruokite ir ?kelkite kod? vadovaudamiesi instrukcijomis pateiktomis „Arm Robot“ roboto rankos pirm?j? veiksm? vadove.
- Paleiskite „Arduino“ program? ir nukopijuokite ? j? toliau pateikt? kod?:
#include <Servo.h> int valueX = 0; // X-AXIS LECTURE int valueY = 0; // Y-AXIS LECTURE int pinJX = A0; // X-AXIS CONNECTED TO ANALOG PIN A0 int pinJY = A1; // Y-AXIS CONNECTED TO ANALOG PIN A1 Servo motor1; // DECLARE SERVO 1 Servo motor2; // DECLARE SERVO 2 int degree1 = 0; // SERVO 1 DEGREES int degree2 = 0; // SERVO 2 DEGREES void setup() { Serial.begin(9600); // ACTIVATE THE COMMUNICATION WITH THE BUILD&CODE UNO BOARD motor1.attach (6); // PWM 9 DIGITAL PIN CONNECTED TO SERVO 1 motor1.write (0); motor2.attach (9); // PWM 10 DIGITAL PIN CONNECTED TO SERVO 2 motor1.write (0); } void loop() { valueX = analogRead (pinJX); // STORES THE READINGS OF THE X-AXIS OF THE ANALOG PORT A0 valueY = analogRead (pinJY); // STORES THE READINGS OF THE Y-AXIS OF THE ANALOG PORT A1 degree1 = map(valorX, 0, 1023, 0, 180); degree2 = map(valorY, 0, 1023, 0, 180); motor1.write (grados1); // SEND DEGREES TO SERVO 1 motor2.write (grados2); // SEND DEGREES TO SERVO 2 //Show on the screen the variables we are working with Serial.print (valueX); // SHOW ON SCREEN THE X-AXIS VALUES FROM 0 TO 1023 Serial.print("\t"); Serial.print (valueY); // SHOW ON SCREEN THE Y-AXIS VALUES FROM 0 TO 1023 Serial.print("\t"); Serial.print (degrees1); // SHOW ON SCREEN THE X-AXIS VALUES FROM 0 TO 180 Serial.print("\t"); Serial.println(degrees2); // SHOW ON SCREEN THE Y-AXIS VALUES FROM 0 TO 180
Paspauskite didinam?j? stikl?, kad pamatytum?te, kok? poveik? manipuliavimas vairasvirte daro vykdomojo variklio pad??iai.
Kodas vaizdinio programavimo programinei ?rangai naudojan?iai blokus
- Parsisi?skite ir ?diekite program?
- Paleiskite programin? ?rang?
- Sukonfig?ruokite program?, kad išsaugotum?te kod? „Build & Code UNO“ plokšt?je. Instrukcijos pateikiamos „Arm Robot“ roboto rankos vadovo pirmuosiuose veiksmuose.
- 2. Paleiskite program? ir nukopijuokite toliau pateikt? kod?:
- 3. Nor?dami pakeisti vykdomojo variklio pad?t? pagal vairasvirt?s judes?, atlikite š? matematin? veiksm?:
Vykdomojo variklio vert? = (vairasvirt?s vert? * didžiausia vykdomojo variklio vert?) / didžiausia vairasvirt?s vert?
Vykdomasis variklis S1 = (Analogin?s jungties nuskaityta vert? A0 * 180)/1023
Vykdomasis variklis veikia, kai vert?s yra nuo 0 iki 180, o vairasvirt? siun?ia vertes nuo 0 iki 1023. Norint pajudinti vykdom?j? varikl?, turite susieti vairasvirt?s vertes.
Tam, kad paleistum?te program?, turite sukonfig?ruoti valdymo plokšt? kitokiu b?du. Atlikite šiuos veiksmus:
- Atverkite skyri? „Plokšt?s“ ir pasirinkite „Arduino UNO“.
- Atverkite „Prisijungimas“ ir pasirinkite „Nuoseklioji jungtis“. Tada pasirinkite COM jungt?, prie kurio yra prijungta „Build & Code UNO“ plokšt?.
- „Jung?i?“ parinktyje pasirinkite „Atnaujinti integruot? programin? ?rang?“ ir palaukite, kol ryši? programa bus visiškai parsi?sta.
Užbaig? program?, spustel?kite žali? v?liav?l?, pajudinkite vairasvirt? ir steb?kite kaip juda „Arm Robot“ roboto ranka.
PRATIMO REZULTATAS:
Programa nuolat nuskaitys informacij? iš 2 vairasvirt?s išves?i? ir remiantis iš vairasvirt?s gautomis vert?mis, ji kreips vykdomuosius variklius viena ar kita kryptimi, nuo 0º iki 180º. Atleidus vairasvirt?, vykdomieji varikliai sugr?š ? savo pradin? pad?t?.