فهرست مطالب:
- مرحله 1: پایه نگهدارنده پایه و لولا را بسازید
- مرحله 2: سروو را بلندتر کرده و سروو را وصل کنید
- مرحله 3: بارگیری و اجرای طرح
تصویری: غلتک توپ اتوماتیک با آردوینو و یک سروو: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
این یک پروژه کوچک آردوینو و سروو است که تکمیل آن حدود دو ساعت طول می کشد. از سروو برای بالا بردن یک سر کلاهک شیشه ای استفاده می کند تا یک توپ فولادی به دور محیط بچرخد. این خود شروع می شود ، می تواند سرعت را تغییر دهد و می تواند دو (یا چند توپ) را به طور همزمان بچرخاند. سرگرم کننده برای ساختن و کار کردن. پارامترهای زمان بندی را می توان با احتمال زیاد حتی سریعتر بازی کرد. از چند سنسور اثر هال با یک توپ مغناطیسی می توان برای ساختن آن به دستگاهی هوشمندتر استفاده کرد که بتواند بهترین پارامترها را تعیین کند.
لازم به ذکر است که کسی در اینجا در trainables.com یک دستگاه غلتک پیچیده تر دارد:
مواد مورد نیاز:
Arduino Uno (یا هر Arduino)
سپر سروو (اختیاری)
سرو 9 گرم
درپوش شیشه
توپ فولادی
مقداری چوب قراضه
مرحله 1: پایه نگهدارنده پایه و لولا را بسازید
پایه فقط یک تکه چوب است تا تکه چوب لولایی را روی آن نصب کنید. چوب لولایی باید بزرگتر از کلاهک شیشه ای باشد که از آن استفاده می کنید و فضای کافی برای لولا و نصب سروو دارد.
من از لولا های پلاستیکی rc کوچک هواپیما استفاده کردم و فقط آنها را به چوب لولایی و پایه چسباندم.
مرحله 2: سروو را بلندتر کرده و سروو را وصل کنید
برای ساختن بازوی سروو بلندتر ، فقط یک قطعه چوب 5 سانتی متری را با چند پیچ و مهره کوچک به بازوی سروو وصل کردم. بازوی سرو باید در حالت افقی 90 درجه روی سروو قرار گیرد.
من فقط سروو را به نگهدارنده چوب لولایی چسباندم اما متوجه شدم که اگر اجازه دهید بیش از چند دقیقه کار کند ، سروو چسب حرارتی را گرم کرده و از چوب رها می شود. بنابراین یک روش دلبستگی بهتر موجه است.
مرحله 3: بارگیری و اجرای طرح
من سروو را با استفاده از سپر به پین 7 وصل کردم زیرا فقط راحت است و هزینه آنها فقط چند دلار است. اگر سپر ندارید ، سیم سروو سیگنال را به پین 7 در آردوینو ، سیم قرمز را به 5 ولت در آردوینو و سیم زمین را به GND در آردوینو وصل کنید. آردوینو باید جریان کافی را برای کارکرد سروو فراهم کند. من از سپر استفاده می کنم زیرا استفاده از ولتاژ خارجی فقط برای سروو آسان است.
در اینجا طرح است. من یک روتین کنترل سرعت سرو نوشتم تا سرعت سروو تغییر کند ، زیرا احتمالاً با سرعت کامل خوب کار نمی کند.
برای به دست آوردن سرعت های مختلف چرخش توپ ، می توانید زمان تاخیر را تغییر دهید. همچنین می توانید پارامتر سوم تابع myServo () را تغییر دهید تا سرعت نیز تغییر کند.
//////////////////////////////////////////////// //////////////////////////////////////////////// /////////////// // ایجاد شده توسط جیم دملو ، دانشگاه شانگلو ، 2017
// شما آزاد هستید که استفاده کنید ، دستکاری کنید ، هر کاری که می خواهید با این کد انجام دهید ، نام من مورد نیاز نیست
// این روال اجازه می دهد تا هر تعداد سروو درون یابی شود ، فقط اگر تعداد سرویس ها از 4 بیشتر شود خطوط جدید اضافه کنید
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#عبارتند از
سرو myservo1 ، myservo2 ؛ // ایجاد شیء سروو برای کنترل سروو
int servoRead (int servoNumber) {
int servoCurrent؛
if (servoNumber == 1) {servoCurrent = myservo1.read ()؛ }
if (servoNumber == 2) {servoCurrent = myservo2.read ()؛ }
return servoCurrent؛
}
void servoWrite (int servoNumber ، int offset) {
if (servoNumber == 1) {myservo1.write (آفست) ؛ }
if (servoNumber == 2) {myservo2.write (آفست)؛ }
}
void myServo (int newAngle ، int angleInc ، int incDelay ، int servoNum) {
int curAngle؛
if (servoNum == 1) {curAngle = myservo1.read ()؛ }
if (servoNum == 2) {curAngle = myservo2.read ()؛ }
if (curAngle <newAngle) {
for (int angle = curAngle؛ angle <newAngle؛ angle += angleInc) {
if (servoNum == 1) myservo1.write (زاویه) ؛
if (servoNum == 2) myservo2.write (زاویه) ؛
تاخیر (incDelay) ؛ }
}
else if (curAngle> newAngle) {
for (int angle = curAngle؛ angle> newAngle؛ angle -= angleInc) {
if (servoNum == 1) myservo1.write (زاویه) ؛
if (servoNum == 2) myservo2.write (زاویه) ؛
تاخیر (incDelay) ؛ }
}
}
void interpolate2Servos (int servo1 ، int servo1Position ،
int servo2 ، int servo2Position ،
شماره int مراحل ، int زمان تاخیر) {
int servo1Current ، servo2Current ؛
servo1Current = servoRead (servo1) ؛
servo2Current = servoRead (servo2) ؛
// Serial.print ("Servo3Pos و جاری") ؛ Serial.print (servo3Position) ؛ Serial.print ("")؛ Serial.println (servo3Current) ؛
// Serial.print ("Servo4Pos و جاری") ؛ Serial.print (servo4Position) ؛ Serial.print ("")؛ Serial.println (servo4Current) ؛
// Serial.print ("Servo5Pos و جاری") ؛ Serial.print (servo5Position) ؛ Serial.print ("")؛ Serial.println (servo5Current) ؛
// Serial.print ("Servo6Pos و جاری") ؛ Serial.print (servo6Position) ؛ Serial.print ("")؛ Serial.println (servo6Current) ؛
// Serial.println ("")؛
int cOffset = (servo1Position - servo1Current) ؛ cOffset = abs (cOffset)/numberSteps؛
int dOffset = (servo2Position - servo2Current) ؛ dOffset = abs (dOffset)/numberSteps؛
int cOffsetTotal = 0 ، dOffsetTotal = 0 ؛
cOffsetTotal = servo1Current؛
dOffsetTotal = servo2Current؛
برای (int x = 0؛ x
if (servo1Position> servo1Current) {cOffsetTotal = cOffsetTotal + cOffset؛ }
else {cOffsetTotal = cOffsetTotal - cOffset؛ }
if (servo2Position> servo2Current) {dOffsetTotal = dOffsetTotal + dOffset؛ }
else {dOffsetTotal = dOffsetTotal - dOffset؛ }
if (servo1Position! = servo1Current) servoWrite (servo1، cOffsetTotal) ؛
if (servo2Position! = servo2Current) servoWrite (servo2، dOffsetTotal) ؛
// Serial.print ("a and b Offset") ؛ Serial.print (aOffsetTotal) ؛ Serial.print ("") ؛ Serial.println (bOffsetTotal) ؛ تأخیر (10) ؛
تاخیر (زمان تاخیر) ؛
} // پایان برای
//////////////////////////////////////
// مراقبت از باقی مانده modulo //
/////////////////////////////////////
if (servo1Position! = servo1Current) servoWrite (servo1، servo1Position) ؛
if (servo2Position! = servo2Current) servoWrite (servo2، servo2Position) ؛
}
int timingDelay = 100؛
int servoDelay = 100 ؛
int degGap = 10؛
// این درجه شروع است (باید کمتر از درجه پایان باشد)
int degStart = 0؛
// این درجه های پایانی است (باید بیشتر از درجه شروع باشد)
int degEnd = 360؛
// این شعاع دایره است
شعاع int = 8 ؛
void setup ()
{
Serial.begin (9600)؛
تأخیر (100) ؛
myservo1.attach (7) ؛ // سروو را روی پین 7 به شیء سروو متصل می کند
myservo1.write (90)؛
myservo2.attach (8)؛ // سروو روی پین 8 را به شیء سروو متصل می کند
myservo2.write (90)؛
تاخیر (1000) ؛ // منتظر است تا سروو به آنجا برسد
interpolate2Servos (1 ، 90 ، 2 ، 90 ، 10 ، 60) ؛ // خنثی
تاخیر (1000) ؛
}
حلقه خالی () {
timingDelay = 15؛ // در 10 کار می کند
servoDelay = 4 ؛
spin4 ()؛
// interpolate2Servos (1 ، 90 ، 2 ، 90 ، 1 ، 60) ؛ // خنثی
// تأخیر (1000) ؛
// خروج (0) ؛ // مکث برنامه - برای ادامه گزینه reset را فشار دهید
}
void spin3 () {
interpolate2Servos (1 ، 90 ، 2 ، 110 ، 1 ، 60) ؛ // خنثی
تاخیر (timingDelay) ؛
interpolate2Servos (1 ، 90 ، 2 ، 80 ، 1 ، 60) ؛ // خنثی
تاخیر (timingDelay) ؛
}
void spin2 () {
// interpolate2Servos (1 ، 80 ، 2 ، 90 ، 1 ، 50) ؛ // خنثی
تاخیر (timingDelay) ؛
interpolate2Servos (1 ، 80 ، 2 ، 80 ، 1 ، 60) ؛ // خنثی
تاخیر (timingDelay) ؛
interpolate2Servos (1 ، 110 ، 2 ، 80 ، 1 ، 60) ؛ // خنثی
تاخیر (timingDelay) ؛
// interpolate2Servos (1 ، 110 ، 2 ، 110 ، 1 ، 60) ؛ // خنثی
تاخیر (timingDelay) ؛
}
void spin1 () {
// int deg = (degStart / (180 / 3.14)) ؛
float deg = (degStart * 3.141592 / 180) ؛ // تبدیل درجه به رادیان
شناور xPos = 90 + (cos (درجه) * شعاع) ؛
// xPos = گرد (xPos) ؛
شناور yPos = 90 + (sin (درجه) * شعاع) ؛
// yPos = گرد (yPos) ؛
Serial.print ("degGap =")؛ Serial.print (degGap)؛ Serial.print ("deg =")؛ Serial.print (deg)؛ Serial.print ("cos =")؛ Serial.print (cos (deg)) ؛ Serial.print ("degStart =") ؛ Serial.print (degStart) ؛ Serial.print ("x =") ؛ Serial.print (xPos) ؛ Serial.print ("y =") ؛ سریال println (yPos) ؛
// interpolate2Servos (1 ، xPos ، 2 ، yPos ، 1 ، servoDelay) ؛ // خنثی
myservo1.write (xPos) ؛
myservo2.write (yPos) ؛
تاخیر (timingDelay) ؛
if (degStart> = degEnd) {
degStart = 0؛
if (degGap> 180)
degGap = 180؛
// degGap = 0؛
دیگری
degGap = degGap + 2؛
degGap = degGap - 2 ؛
// degStart = degStart +degGap؛
}
degStart = degStart + degGap؛
}
void spin4 () {
برای (int i = 0؛ i <= 360؛ i ++) {
شناور j = 20 * (cos ((3.14 * i)/180)) + 90 ؛
شناور k = 20 * (گناه ((3.14 * i)/180)) + 90 ؛
myservo1.write (j)؛
myservo2.write (k)؛
Serial.print (j)؛
Serial.print ("،") ؛
Serial.println (k)؛
تأخیر (100) ؛
}
}
توصیه شده:
توپ پنوماتیک اتوماتیک. قابل حمل و دارای آردوینو: 13 مرحله
توپ پنوماتیک اتوماتیک. قابل حمل و دارای آردوینو: سلام به همه! این دستورالعمل مونتاژ یک توپ پنوماتیک قابل حمل است. ایده این بود که یک توپ ایجاد شود که بتواند چیزهای مختلف را شلیک کند. من چند هدف اصلی را تعیین کردم. بنابراین ، توپ من باید چه باشد: خودکار. برای فشرده نشدن هوا به صورت دستی با
پرتاب کننده توپ اتوماتیک برای سگ: 6 مرحله
پرتاب کننده توپ اتوماتیک برای سگ ها: ما هر دو سگ داریم و همانطور که همه می دانند ، سگ ها می توانند تمام روز را با توپ بازی کنند. به همین دلیل ، ما راهی برای ساخت یک پرتاب کننده توپ اتوماتیک فکر کردیم
آموزش آردوینو - کنترل موتور سروو با آردوینو: 5 مرحله
آموزش آردوینو - کنترل موتور سروو با آردوینو: این دستورالعمل نسخه مکتوب & quot؛ آردوینو: نحوه کنترل سروو موتور با آردوینو & quot؛ ویدیوی YouTube که اخیراً بارگذاری کرده ام. من اکیداً به شما توصیه می کنم که آن را بررسی کنید. از کانال YouTube دیدن کنید
منجنیق اتوماتیک برای پرتاب غذای حیوانات خانگی (سگ ، گربه ، مرغ ، و غیره) ، پرتاب توپ و موارد دیگر!: 4 مرحله (همراه با تصاویر)
منجنیق اتوماتیک برای پرتاب غذای حیوانات خانگی (سگ ، گربه ، مرغ ، و غیره) ، پرتاب توپ و موارد دیگر! من روش هایی را برای کاهش این سرعت طراحی کرده ام ، از توپ هایی با غذای داخل گرفته تا پرتاب آن در تمام حیاط. به طرز شگفت انگیزی ، او
ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)
ارزان ترین آردوینو || کوچکترین آردوینو || آردوینو پرو مینی || برنامه نویسی || آردوینو ننو: …………………………. لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید ……. .این پروژه در مورد نحوه ارتباط با کوچکترین و ارزانترین آردوینو است. کوچکترین و ارزان ترین آردوینو arduino pro mini است. شبیه آردوینو