આ ટ્યુટોરિયલ આનો ભાગ છે: સર્વો મોટર્સ
સર્વો મોટર્સ સંબંધિત તમામ વિડિઓઝ અહીં સૂચિબદ્ધ છે. અન્ય વિડિઓઝની લિંક્સ આ લેખની નીચે છે.
પોટેન્ટિઓમીટર અને LCD1602 નો ઉપયોગ કરીને આર્ડુઇનો સાથે સર્વોને નિયંત્રિત કરવું
આ ટ્યુટોરિયલમાં, આપણે પોટેન્શિયોમીટરનો ઉપયોગ કરીને સર્વો મોટરને કેવી રીતે નિયંત્રિત કરવી અને LCD1602 સ્ક્રીન પર પોટેન્શિયોમીટરનું મૂલ્ય તેમજ સર્વોનો કોણ કેવી રીતે પ્રદર્શિત કરવો તે શીખીશું. આ પ્રોજેક્ટ બહુવિધ ઘટકોને જોડવાનો અને તેઓ કેવી રીતે સાથે મળીને ઇન્ટરેક્ટિવ સિસ્ટમ બનાવી શકે છે તે સમજવાનો એક શ્રેષ્ઠ માર્ગ છે. આ ટ્યુટોરિયલના અંત સુધીમાં, તમારી પાસે એક કાર્યરત સેટઅપ હશે જે તમને નોબ વડે સર્વોનો કોણ ગોઠવવાની અને સાથે સાથે LCD પર મૂલ્યો પ્રદર્શિત કરવાની મંજૂરી આપશે.

વાયરિંગ અને કોડમાં ઊંડા ઉતરતા પહેલા, આપણે ઉપયોગ કરવાના ઘટકોને સમજવું ઉપયોગી છે. પોટેન્શિયોમીટર એક ચલ રેઝિસ્ટર તરીકે કાર્ય કરે છે જે તેની સ્થિતિના આધારે વોલ્ટેજ આઉટપુટને સમાયોજિત કરી શકે છે, જેનો ઉપયોગ આપણે સર્વોનો કોણ નક્કી કરવા માટે કરીશું. LCD1602 વર્તમાન પોટેન્શિયોમીટર મૂલ્ય અને સર્વોનો અનુરૂપ કોણ પ્રદર્શિત કરશે. સમગ્ર પ્રક્રિયાની વિઝ્યુઅલ માર્ગદર્શિકા માટે તમે વિડિયો (વિડિયોમાં 00:00 પર) નો સંદર્ભ લઈ શકો છો.
હાર્ડવેર સમજાવ્યું
આ પ્રોજેક્ટમાં આપણે ઉપયોગ કરીશું તે મુખ્ય ઘટકો છે:
- આર્ડુઇનો બોર્ડ: આ સમગ્ર સિસ્ટમ માટે કંટ્રોલર તરીકે સેવા આપશે, પોટેન્શિયોમીટરમાંથી ઇનપુટ્સ પ્રોસેસ કરશે અને તે ઇનપુટ્સના આધારે સર્વોની સ્થિતિને નિયંત્રિત કરશે.
- પોટેન્શિયોમીટર: આર્ડુઇનોને એનાલોગ ઇનપુટ પ્રદાન કરવા માટે 10k ઓહ્મ પોટેન્શિયોમીટરનો ઉપયોગ કરવામાં આવશે. તેના ત્રણ ટર્મિનલ છે: એક 5V સાથે જોડાયેલ છે, એક ગ્રાઉન્ડ સાથે, અને મધ્યમ એક આર્ડુઇનો પર એનાલોગ પિન (A0) સાથે જોડાયેલ છે.
- સર્વો મોટર: આ સર્વોને પોટેન્શિયોમીટરની સ્થિતિના આધારે કોણ મોકલીને નિયંત્રિત કરવામાં આવશે. સિગ્નલ વાયર આર્ડુઇનો પર ડિજિટલ પિન (પિન 9) સાથે જોડાય છે.
- LCD1602 ડિસ્પ્લે: આ ડિસ્પ્લે પોટેન્શિયોમીટર મૂલ્ય અને સર્વોનો કોણ બતાવશે. તે નિયંત્રણ માટે આર્ડુઇનો પર ઘણી ડિજિટલ પિન સાથે જોડાય છે.
પોટેન્શિયોમીટર રેઝિસ્ટન્સ અને આમ તેના મધ્યમ ટર્મિનલ પર વોલ્ટેજ બદલીને કાર્ય કરે છે, જેને આર્ડુઇનો એનાલોગ ઇનપુટ તરીકે વાંચે છે. સર્વો મોટરને ઇચ્છિત કોણને અનુરૂપ ચોક્કસ પલ્સ વિડ્થ મોડ્યુલેશન (PWM) સિગ્નલ મોકલીને નિયંત્રિત કરવામાં આવે છે. LCD1602 એક લાઇબ્રેરીનો ઉપયોગ કરે છે જે આપણને તેના ડિસ્પ્લેને સરળતાથી નિયંત્રિત કરવાની અને પોટેન્શિયોમીટર અને સર્વો વિશે માહિતી આઉટપુટ કરવાની મંજૂરી આપે છે.
ડેટાશીટ વિગતો
| ઉત્પાદક | વિવિધ |
|---|---|
| ભાગ નંબર | LM016L |
| લોજિક/IO વોલ્ટેજ | 5 V |
| સપ્લાય વોલ્ટેજ | 4.5 – 5.5 V |
| આઉટપુટ કરંટ (પ્રતિ ચેનલ) | 2 mA સુધી |
| પીક કરંટ (પ્રતિ ચેનલ) | 20 mA |
| PWM ફ્રીક્વન્સી માર્ગદર્શન | 50 Hz |
| ઇનપુટ લોજિક થ્રેશોલ્ડ | 0.3 x Vcc (નીચું), 0.7 x Vcc (ઊંચું) |
| વોલ્ટેજ ડ્રોપ / RDS(on) / સેચ્યુરેશન | 0.2 V મહત્તમ |
| થર્મલ મર્યાદાઓ | 85 °C |
| પેકેજ | 16-પિન DIP |
| નોંધો / વેરિઅન્ટ્સ | 16x2 કેરેક્ટર ડિસ્પ્લે |
- પોટેન્શિયોમીટરના મધ્યમ પિનને એનાલોગ પિન A0 સાથે જોડો.
- ખાતરી કરો કે સર્વો 5V સપ્લાય સાથે પાવર થયેલ છે અને ડિજિટલ પિન 9 સાથે જોડાયેલ છે.
- LCD માટે યોગ્ય લાઇબ્રેરીનો ઉપયોગ કરો અને ખાતરી કરો કે તે તમારા આર્ડુઇનો IDE માં શામેલ છે.
- શોર્ટ સર્કિટ ટાળવા માટે વાયરિંગ સાથે સાવચેત રહો, ખાસ કરીને સર્વો કનેક્શન્સ સાથે.
- ડિસ્પ્લે સમસ્યાઓ ટાળવા માટે કોડમાં LCD યોગ્ય રીતે ઇનિશિયલાઇઝ થયેલ છે તે તપાસો.

વાયરિંગ સૂચનાઓ
ઘટકોને એકસાથે વાયર કરવા માટે, પોટેન્શિયોમીટરને જોડીને શરૂ કરો. પોટેન્શિયોમીટરના એક બાહ્ય પિનને આર્ડુઇનો પર 5V પિન સાથે અને બીજા બાહ્ય પિનને ગ્રાઉન્ડ સાથે જોડો. મધ્યમ પિન એનાલોગ પિન A0 પર જાય છે.
આગળ, સર્વો મોટર માટે, ભૂરા અથવા કાળા વાયરને ગ્રાઉન્ડ સાથે, લાલ વાયરને 5V પિન સાથે, અને પીળા અથવા નારંગી વાયરને આર્ડુઇનો પર ડિજિટલ પિન 9 સાથે જોડો. LCD1602 માટે, VDD પિનને 5V સાથે, RW ને ગ્રાઉન્ડ સાથે, અને V0 ને કોન્ટ્રાસ્ટ એડજસ્ટમેન્ટ માટે પોટેન્શિયોમીટરના મધ્યમ પિન સાથે જોડો. RS ને પિન 12 સાથે, EN ને પિન 11 સાથે, D4 ને પિન 5 સાથે, D5 ને પિન 4 સાથે, D6 ને પિન 3 સાથે, અને D7 ને પિન 2 સાથે જોડો.
જો તમે LED નો ઉપયોગ કરી રહ્યા છો, તો તેને 5V સપ્લાય સાથે જોડીને શ્રેણીમાં 220-ઓહ્મ રેઝિસ્ટર શામેલ કરવાની પણ ભલામણ કરવામાં આવે છે. વધુમાં, ઓપરેશન દરમિયાન કોઈપણ અવાજને ફિલ્ટર કરવા માટે સર્વોના પાવર અને ગ્રાઉન્ડ પર 470 µF કેપેસિટર જોડી શકાય છે.
કોડ ઉદાહરણો અને વોકથ્રુ
કોડ જરૂરી લાઇબ્રેરીઓ શામેલ કરીને અને LCD અને સર્વો માટે પિન ઇનિશિયલાઇઝ કરીને શરૂ થાય છે. નીચેનો અંશ LCD અને સર્વોનું સેટઅપ બતાવે છે:
void setup() {
lcd.begin(16, 2);
myservo.attach(9); // સર્વો ઑબ્જેક્ટ સાથે પિન 9 પર સર્વોને જોડે છે
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}
આ સ્નિપેટ LCD ને 16 કૉલમ અને 2 પંક્તિઓ માટે ઇનિશિયલાઇઝ કરે છે, સર્વોને પિન 9 સાથે જોડે છે, અને LCD પર સ્વાગત સંદેશ પ્રદર્શિત કરે છે. lcd.clear() ફંક્શન ખાતરી કરે છે કે કોઈપણ અગાઉના સંદેશાઓ દૂર કરવામાં આવ્યા છે.
આગળ, લૂપ સતત પોટેન્શિયોમીટરનું મૂલ્ય વાંચે છે અને સર્વોની સ્થિતિ અને LCD ડિસ્પ્લેને અપડેટ કરે છે:
void loop() {
val = analogRead(potpin); // પોટેન્શિયોમીટરનું મૂલ્ય વાંચે છે
angle = map(val, 0, 1023, 0, 180); // સર્વો સાથે ઉપયોગ કરવા માટે તેને સ્કેલ કરે છે
myservo.write(angle); // સ્કેલ કરેલ મૂલ્ય અનુસાર સર્વો સ્થિતિ સેટ કરે છે
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("પોટ. મૂલ્ય:");
lcd.setCursor(11, 0);
lcd.print(val);
lcd.setCursor(0, 1);
lcd.print("કોણ :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
}
આ લૂપ પોટેન્શિયોમીટરનું મૂલ્ય વાંચે છે, તેને સર્વો માટે અનુરૂપ કોણમાં મેપ કરે છે, અને પોટેન્શિયોમીટર મૂલ્ય અને સર્વો કોણ બંને સાથે LCD ડિસ્પ્લે અપડેટ કરે છે. લૂપના અંતે delay(500) ડિસ્પ્લેને ખૂબ ઝડપથી અપડેટ થતું અટકાવે છે.
પ્રદર્શન / શું અપેક્ષા રાખવી
જ્યારે તમે સિસ્ટમને પાવર કરો છો, ત્યારે LCD 2 સેકન્ડ માટે "Robojax સર્વો નોબ" દર્શાવશે, ત્યારબાદ પોટેન્શિયોમીટર મૂલ્ય અને સર્વો કોણ દર્શાવશે. જેમ તમે પોટેન્શિયોમીટર ફેરવો છો, તેમ સર્વો કોણ તે મુજબ બદલાશે, અને નવું પોટેન્શિયોમીટર મૂલ્ય LCD પર પ્રતિબિંબિત થશે. જો તમને કોઈ અણધારી વર્તણૂક અનુભવાય, જેમ કે સર્વો ખોટી દિશામાં ફરે છે, તો પોટેન્શિયોમીટર અને સર્વો કનેક્શનની વાયરિંગ તપાસો (વિડિયોમાં 10:00 પર).
આ ટ્યુટોરિયલ આનો ભાગ છે: સર્વો મોટર્સ
- આર્ડુઇનોનો ઉપયોગ કરીને પુશ બટનો વડે સર્વોને નિયંત્રિત કરવું
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- પોટેન્શિયોમીટર વડે આર્ડુઇનોનો ઉપયોગ કરીને સર્વોને નિયંત્રિત કરવું
- ઇન્ફ્રારેડ રિમોટ અને આર્ડુઇનોનો ઉપયોગ કરીને સર્વો મોટર્સને નિયંત્રિત કરવું
- પોટેન્શિયોમીટરનો ઉપયોગ કરીને આર્ડુઇનો સર્વો મોટર નિયંત્રણ
- આર્ડુઇનો માટે હાથના હાવભાવથી સર્વો સ્થિતિ નિયંત્રિત કરવી
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- કન્ટિન્યુઅસ 360° સર્વોને આર્ડુઇનો સાથે કેવી રીતે ઉપયોગ કરવો
- આર્ડુઇનો કોડ અને વિડિઓ PCA9685 16-ચેનલ 12-બિટ સર્વો કંટ્રોલર V1 માટે
- એક પુશ બટન સાથે આર્ડુઇનો સર્વો ટોગલ સ્વિચ બનાવો
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
// May 20, 2018 20:08
// Written by Ahmad S. for Robojax.com at Ajax, Ontario, Canada
// Watch the video for this code at https://youtu.be/DN1LPMSZtNA
// This code is taken from http://robojax.com/learn/arduino
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// start of servo settings *******
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int angle; // the angle servo is sent to
// END of servo settings *******
void setup() {
// Robojax Servo knob with LCD1602 Test
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
// Robojax Servo knob with LCD1602 Test
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}
void loop() {
// Robojax Servo knob with LCD1602 Test
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
angle = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(angle); // sets the servo position according to the scaled value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pot. Value:");
// set the cursor to column 0, line 1
lcd.setCursor(11, 0);
lcd.print(val);
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Angle :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
// Robojax Servo knob with LCD1602 Test
}
સંસાધનો અને સંદર્ભો
-
બાહ્યLCD1602 library (from GitHub)github.com
-
બાહ્યUsing LCD1602 LCD display for Arduinoyoutube.com
ફાઇલો📁
કોઈ ફાઇલો ઉપલબ્ધ નથી.