Casharka 86: Xakamaynta booska matoorka servo iyadoo la isticmaalayo potentiometer
Ka balan inaad u rogtid qabqabsi fudud oo aad daawato gacan makaanik ah oo si sax ah u raacaya dhaqaaq kasta oo aad samayso. Taasi waa sixirka isku darka potentiometer-ka iyo servo motor-ka. Mashruucan, oo qayb ka ah Koorsada Arduino Step by Step ee Robojax, wuxuu muujinayaa fikrad aasaasi ah oo aad waxtar u leh elektaroonigga: u turjumaanshaha gelinta analog-ga ah ee dhaqaaq jireed oo sax ah. Waxaad baran doontaa sida loo akhriyo danab doorsooma oo ka yimaada potentiometer-ka, inaad u sawirto qiimahaas ilaa xad xaglo ah, oo aad amarto servo motor-ka inuu ku wareego booskaas saxda ah. Kani waa albaabkaaga ku aadista dhismaha mashruucyo is-dhexgal ah oo xasaasi ah halkaasoo kontoroolka gacanta uu kula kulmo otomaatigga.

Codsiyada xirfaddan ayaa ah kuwo ballaaran oo wax ku ool ah. Waa kuwan dhawr fikradood oo kugu dhiirigelinaya:
- Kontoroolka Gacanta Robotic: Isticmaal potentiometer-ka si aad gacanta ugu dhigto booska wadajir kasta oo gacan robotic ah si aad u samayso hawlo qaadis iyo dhigis oo sax ah.
- Nidaamka Kamarada Pan iyo Tilt: Dhis qaab kamarad oo laga maamulo fog si loogu talagalay waqti-dhaaf ama ilaalin, si habsami leh u wareejiya oo u janjeera iyadoo la rogayo qabqabsi.
- Soo-celinta Qiyaasta Analog-ga: Abuur qiyaas dashboard jireed (sida speedometer ama heer-kul) oo dhaqaaqa ku salaysan xogta dareemaha, iyadoo potentiometer-ku u shaqeeyo sidii qalab gacmeed ama qalab wax lagu hagaajiyo.
- Farshaxanka Is-dhexgalka: Abuur farshaxan dhaqaaqa ah oo ka jawaabaya gelinta daawadaha, halkaasoo rogista qabqabsi ay beddesho booska qaybaha dhaqaaqa.
- Isteerinka Gaadhiga Moodeelka: Kontorool xagasha isteerinka gaadhi moodeel ah ama doon meel fog, oo bixiya dareen analog ah oo dhab ah oo ka fiican badhamada dijitaalka ah.
Hagahan wuxuu ku salaysan yahay casharka fiidiyowga ah Casharka 86: Kontorool booska servo motor-ka iyadoo la isticmaalayo potentiometer ee Robojax (fiidiyowga 00:00). Wuxuu ku hagayaa habka oo dhan, laga bilaabo fahamka fiilooyinka ilaa sharaxaadda koodhka wax walba ka shaqeeya. Aan bilowno.
Qalabka iyo Qaybaha
Si aad ula socotid mashruucan, waxaad u baahan doontaa qaybahan soo socda:
- Guddi Arduino ah (tusaale, Uno, Nano)
- Servo motor caadi ah (tusaale, SG90 ama MG996R)
- Potentiometer (iska caabbi doorsooma, caadi ahaan 10kΩ)
- Fiilooyin jumper ah
- Breadboard (ikhtiyaar, si fudud loogu xiro)
Fahamka Fiilooyinka
Fiilooyinka mashruucan waa kuwo toos ah. Muhiimadu waxay tahay in la siiyo ku xirnaanta korontada iyo calaamadda ee saxda ah labadaba servo-ga iyo potentiometer-ka. Servo-gu waa qalab koronto badan cuna, sidaas darteed wuxuu korontadiisa ka helaa si toos ah pin-ka 5V ee Arduino-ga. Potentiometer-ku wuxuu u shaqeeyaa sidii qaybiye koronto, waxaanan akhrinnaa korontada wiper-kiisa (pin-ka dhexe) si aan u ogaanno booskiisa. (fiidiyowga 01:05)
Xeelad caqli-gal ah oo mashruucani isticmaalo ayaa ah abuurista ilo 5V dheeri ah oo ku yaal pin dijitaal ah si loo shideeyo potentiometer-ka, maxaa yeelay qaar ka mid ah guddiyada Arduino-ga waxay leeyihiin hal pin 5V oo kaliya oo loogu talagalay. Tan waxaa lagu sameeyaa koodhka iyadoo la dejinayo pin dijitaal ah (pin 8) ilaa HIGH, kaas oo soo saara 5V. (fiidiyowga 00:39)
Waa kuwan jaantuska fiilooyinka ee lagu sheegay fiidiyowga:
Aan u kala qaadno ku xirnaanta:
- Servo Motor-ka:
- Koronto (fiil cas) → Pin-ka 5V ee Arduino-ga
- Dhul (fiil bunni/madow) → Pin-ka GND ee Arduino-ga
- Calaamad (fiil orange/jaalle) → Pin-ka 3 ee Arduino-ga (pin awood u leh PWM)
- Potentiometer-ka:
- Pin-ka bidix → Pin-ka GND ee Arduino-ga
- Pin-ka dhexe (Wiper) → Pin-ka analog-ga A0 ee Arduino-ga
- Pin-ka midig → Pin-ka 8 ee Arduino-ga (loo qoondeeyay VCC2 koodhka)
Sharaxaadda Koodhka
Koodhka mashruucan waa mid si quruxsan u fudud. Wuxuu ka faa'iideystaa dhawr hawlood oo muhiim ah oo Arduino ah si uu u akhriyo potentiometer-ka oo uu u kontoroolo servo-ga. Aan diiradda saarno qaybaha isticmaaluhu wax ka beddeli karo si uu ugu habboonaado mashruucyadaada. (fiidiyowga 03:00)
Xagga sare ee qoraalka, waxaad qeexi doontaa pin-yada oo abuuri doontaa shayga servo-ga. Kuwani waa doorsoomayaasha aasaasiga ah ee aad beddeli doonto iyadoo ku xiran fiilooyinkaaga:
#include <Servo.h>
Servo myservo; // abuur shay servo ah si loo kontoroolo servo
int potpin = A0; // pin analog ah oo loo isticmaalo in lagu xiro potentiometer-ka
int servoPin = 3; // qeex pin dijitaal ah (oo leh PWM) servo-ga. Waxaad isticmaali kartaa kaliya pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// qeex VCC dheeri ah oo loogu talagalay potentiometer-ka
int val; // doorsoome si loo akhriyo qiimaha ka yimaada pin-ka analog-ga
Waa kuwan waxa qayb kastaa samayso:
- Servo myservo;: Sadarkan waxay abuurtaa shay la yiraahdo
myservokaas oo aan u isticmaali doonno si aan u kontoroolo servo motor-keena gaarka ah. Waad magac beddeli kartaa, laakiin waa inaad isticmaashaa isla magacaas markii dambe koodhka. - int potpin = A0;: Tani waxay qeexaysaa pin-ka analog-ga ah ee wiper-ka potentiometer-ka ku xiran yahay. Haddii aad fiilada u guurto pin analog oo kala duwan, waa inaad cusboonaysiisaa lambarkan.
- int servoPin = 3;: Tani waxay dejisaa pin-ka dijitaalka ah ee fiilada calaamadda servo-ga. Waa muhiim in la isticmaalo pin awood u leh PWM (caadi ahaan kuwa lagu calaamadeeyay '~' guddiga). Faallada waxay taxaysaa pin-yada saxda ah ee inta badan Arduino-yada.
- int VCC2 = 8;: Kani waa pin-ka aan u isticmaalayno ilo 5V labaad oo loogu talagalay potentiometer-ka. Haddii aad haysato guddi leh pin-yo 5V badan, waxaad si toos ah ugu xiri kartaa oo qaybtan koodhka ka saari kartaa.
Shayga setup() function, koodku wuxuu bilaabaa servo-ga oo wuxuu dejiyaa pin-ka korontada dheeraadka ah. Shaqada myservo.attach(servoPin) waa mid lama huraan ah, waxay u sheegtaa Arduino-ga pin-ka ku xiran fiilada signal-ka ee servo-ga.
void setup() {
Serial.begin(9600); // deji serial-ka
myservo.attach(servoPin); // ku xidh servo-ga pin-ka 3 ee shayga servo-ga
pinMode(VCC2, OUTPUT);// deji pin 8 sidii output
digitalWrite(VCC2, HIGH);// deji pin 8 HIGH si uu u noqdo pin 5V
}
Mantigga asaasiga ah wuxuu ku jiraa shaqada loop(). Waxay akhrisaa qiimaha potentiometer-ka, waxay u qiyaastaa xagal, waxayna amartaa servo-ga inuu dhaqaaqo. Labada shaqo ee muhiimka ah halkan waa analogRead() iyo map(). (fiidiyowga 04:27)
void loop() {
val = analogRead(potpin); // akhri qiimaha potentiometer-ka (qiimaha u dhexeeya 0 iyo 1023)
val = map(val, 0, 1023, 0, 180); // u qiyaas si loogu isticmaalo servo-ga (qiimaha u dhexeeya 0 iyo 180)
myservo.write(val); // deji booska servo-ga marka loo eego qiimaha la qiyaasay
Serial.print(val);
Serial.println();
delay(50); // sug servo-ga uu halkaas gaaro
}
Sida ay u shaqeyso waa sidan:
- analogRead(potpin): Shaqadani waxay akhrisaa danabka ka yimaada wiper-ka potentiometer-ka waxayna soo celisaa qiime u dhexeeya 0 (0V) iyo 1023 (5V).
- map(val, 0, 1023, 0, 180): Kani waa furaha mashruuca oo dhan. Waxay qaadataa qiimaha cayriin ee potentiometer-ka (0 ilaa 1023) waxayna si saami ah ugu beddeshaa xagal servo (0 ilaa 180 darajo). Tusaale ahaan, haddii potentiometer-ku akhriyo 511 (qiyaastii badh), shaqada
map()waxay soo celin doontaa 90, iyadoo servo-ga u dhaqaaqinaysa booskiisa dhexe. - myservo.write(val): Shaqadani waxay qaadataa xagasha la xisaabiyay (hadda ku kaydsan
val) waxayna u sheegtaa servo-ga inuu u wareego booskaas. - delay(50): Tani waxay ku darsaa hakad yar dhamaadka loop kasta. Waxay xakameysaa heerka cusboonaysiinta. Hakad weyn (sida 200ms) wuxuu ka dhigayaa servo-ga inuu u dhaqaaqo tillaabooyin, halka hakad yar (sida 50ms) uu ka dhigayo dhaqaaqa mid aad u siman. Waad hagaajin kartaa tan si aad u beddesho jawaab-celinta. (fiidiyowga 07:26)
Muuujinta Mashruuca Tooska ah
Fiidiyowga, waxaad arki kartaa mashruuca shaqeynaya. Marka gacanta potentiometer-ka la rogo, gacanta matoorka servo-ga waxay raacdaa booskiisa si saami ah. Kormeeraha serial-ka wuxuu daabacaa xagasha hadda jirta, isagoo xaqiijinaya in qiyaastu si sax ah u shaqeyneyso. Marka potentiometer-ku ku jiro booskiisa ugu hooseeya, servo-gu wuxuu ku jiraa 0 darajo. Markaad gacanta u rogto heerka ugu sarreeya, servo-gu si siman ayuu ugu wareegaa 180 darajo. (fiidiyowga 06:33)
Loop-ka jawaab-celinta tooska ah wuxuu muujinayaa isku-dhafka aan kala go' lahayn ee dareeme analog ah iyo qalab dhaqaaq ah oo dijitaal ah, isagoo abuuraya nidaam xakameyn oo jawaab-celin leh oo fudud.
Cutubyada
- [00:00] Hordhac iyo Dulmarka Mashruuca
- [01:05] Jaantuska iyo Nakhshadka Xiriirinta
- [02:07] Muujinta Xiriirinta Jirka
- [03:00] Sharaxaadda Koodka
- [06:33] Muujinta Tooska ah iyo Tijaabinta
- [07:26] Hagaajinta Xawaaraha Jawaabta Servo-ga
/*
* Lesson 88: Controlling Servo motor a with Potentiometer
* 📚⬇️ Download and resource page https://robojax.com/RJT763
watch full video tutroial: https://www.youtube.com/watch?v=ntRW77mNFFk
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri on Jan 01, 2019 in Ajax, Ontario, Canada
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int servoPin = 3; // define a digital pin (with PWM) for servo. Can use only pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// define extra VCC for potentiometer
int val; // variable to read the value from the analog pin
void setup() {
//
Serial.begin(9600); // setup serial
myservo.attach(servoPin); // attaches the servo on pin 3 to the servo object
pinMode(VCC2, OUTPUT);// set pin 8 as output
digitalWrite(VCC2, HIGH);// set pin 8 HIGH so it acts as 5V pin
}
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
Serial.print(val);
Serial.println();
delay(50); // waits for the servo to get there
}
Waad u baahan tahay
-
Amaazon
-
Amaazon
-
eBay
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Kheyraadka & Tixraacyada
Faylasha📁
Faylal kale
-
SG90 Seroo motor warbixin
robojax-servo-SG90_datasheet.pdf0.12 MB