Szervó motor helyzetének vezérlése potenciométer segítségével 04. GYAKORLAT Szervó motor helyzetének vezérlése potenciométer segítségével
Feladat Készítsen hardvert és írjon szoftvert szervó motor vezérlésére potenciométerrel. A potenciométert a mikrovezérlő A0 kivezetésére csatlakoztassa. Használja a mikrovezérlő A/D átalakítóját.
Felhasznált alkatrészek Potenciométer: 3 lábacskája van. Földelés Tápfeszültség Vezérlő lábacska (középső) Szervó motor
Hardver
Szoftver #include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value //between 0 and 1023) val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 //and 180) myservo.write(val); // sets the servo position according to the //scaled value delay(15); // waits for the servo to get there
Programkód elemzése #include <Servo.h> // szervo motor vezerlesere szolgalo konyvtar Servo myservo; // szervo objektum letrehozasa a szervo motor // vezerlesehez int potpin = 0; // potenciometer vezerlesere szolgalo analog // labacska int val; // analog labacska ertekenek leolvasasara // szolgalo valtozo void setup() { myservo.attach(9); // szervo objektum csatlakoztatasa a // 9-es labacskara }
Programkód elemzése void loop() { val = analogRead(potpin); // leolvassa a potenciometer erteket // (0 es 1023 kozotti ertek) val = map(val, 0, 1023, 0, 180); // a (0,1023) intervallum lekepezese // a (0, 180) intervallumra myservo.write(val); // szetteli a szervo motor helyzetet a // lekepezett ertek fuggvenyeben delay(15); // varakozas hogy a szervo elerje az // adott helyzetet }
Programkód elemzése Ebben a programban a kulcsfontosságú parancs a map utasítás. A potenciométer értéke a (0, 1023) intervallumból van, a motor tengelyének elfordulásának pedig a (0, 180) intervallumból. Az automatikus leképzésre a map utasítást használjuk melynek 5 argumentuma van.
Programkód elemzése Az 5 argumentum: a szám amelyet le kell képezni (ebben az esetben val), és a bemenet (0, 1023) és kimenet (0, 180) minimális és makszimális értékei.
Az elkészített projekt
Önálló feladat Bővítse ki a programot úgy, hogy a potenciométer pillanatnyi értékét és a szervó motor helyzetét folyamatosan követni lehessen a soros monitoron. Csatlakoztason még egy potenciométert (pot2) amelyikkel úgyszintén vezérelni lehet a szervó motort. A potenciométer minden mozgatása után frissítse a szervó motor helyzetét.