• برچسب ها: آردوینو | ساخت ربات
  • 0.0/5 rating (0 votes)
  • سه شنبه, 03 شهریور 1394

در این قسمت آموزش ساخت یک ربات را مشاهده می کنید که به صورت رندوم و سرگردان به دور خودش می چرخد و از برخورد به موانع نیز خودداری می کند. ما را همراهی کنید.

 

قطعات مورد نیاز

آردوینو uno یا Mega × 1  
سنسور التراسونیک SRF04 × 1  
موتور گیربکس دار به همراه با چرخ × 2  
سیم جامپر × 1  
کابل USB × 1  
شیلد درایور موتور آردوینو H-Bridge × 1  
یک صفحه ی پلاستیکی به عنوان شاسی ربات × 1  
چرخ کاستور × 1  
باتری 9 ولتی × 3  
چسب × 1  

 

طرز ساخت

ابتدا باید قطعات را بر روی شاسی ربات سوار کنیم. به این منظور چرخ ها را به شافت موتورها متصل کرده و به قسمت زیر و عقب بدنه ربات وصل می کنیم. همینطور چرخ کاستور را به قسمت زیر و جلوی بدنه ربات می چسبانیم.
برای سوار کردن و اتصال قطعات به بدنه ربات می توانید از توضیحات قسمت " آموزش ساخت ربات ساده برای تازه کارها" استفاده کنید.

ساخت ربات ساده برای تازه کارها - کافه ربات

سیم بندی و اتصالات

پس از اتصال قطعات بر روی بدنه ربات نوبت به سیم بندی مدار می رسد. ابتدا شیلد درایور موتور را بر روی آردوینو قرار دهید. دقت کنید که پین های آردوینو و شیلد درایور موتور به درستی روی هم قرار گرفته باشند.


سپس سنسور آلتراسونیک را مطابق شکل فوق به شیلد متصل کنید به طوری که پایه "trig" سنسور به پین شماره 10 شیلد درایور موتور و پایه "echo" سنسور به پین شماره 9 شیلد متصل شود.
همچنین پایه "GND" سنسور را به پین GND و پایه مثبت سنسور را به پین +5V شیلد وصل کنید.

پس از آن دو باتری 9 ولتی را با هم سری کرده و به شیلد متصل کنید.

سپس موتورهای دی سی را مطابق شکل فوق به پایه های ورودی شیلد متصل کنید.

پس از انجام سیم بندی بردها و سنسور را بر روی بدنه قرار دهید به گونه ای که سنسور در قسمت جلوی بدنه قرار گیرد. ساختمان نهایی ربات و نحوه ی اتصالات باید شبیه به شکل زیر شود.

برنامه نویسی آردوینو

پس از اتمام سیم بندی و اتصالات یک اسکچ جدید در نرم افزار آردوینوی خود باز نموده و کد زیر را در آن کپی نمایید و بر روی آردوینو آپلود کنید.

 


const int channel_a_enable = 6;
const int channel_a_input_1 = 4;
const int channel_a_input_2 = 7;
const int channel_b_enable = 5;
const int channel_b_input_3 = 3;
const int channel_b_input_4 = 2;
#define trigPin 10
#define echoPin 9
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode( channel_a_enable, OUTPUT ); // Channel A enable
pinMode( channel_a_input_1, OUTPUT ); // Channel A input 1
pinMode( channel_a_input_2, OUTPUT ); // Channel A input 2
pinMode( channel_b_enable, OUTPUT ); // Channel B enable
pinMode( channel_b_input_3, OUTPUT ); // Channel B input 3
pinMode( channel_b_input_4, OUTPUT ); // Channel B input 4
Serial.begin( 9600 );
Serial.println("Starting up"); }
void loop() {
//Ping/Ultra Sonic Sensor
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
delay(0);
//Forwards
if(distance>5) {Serial.println("forwards :)");
analogWrite( channel_a_enable, 255);
digitalWrite( channel_a_input_1, HIGH);
digitalWrite( channel_a_input_2, LOW);
analogWrite( channel_b_enable, 255);
digitalWrite( channel_b_input_3, HIGH);
digitalWrite( channel_b_input_4, LOW);
delay(50);
allInputsOff();}
else if(distance<5)
{ }
else {Serial.println("Channel A Idle");
analogWrite( channel_a_enable, 0);
digitalWrite( channel_a_input_1, LOW);
digitalWrite( channel_a_input_2, LOW);
delay(50);
allInputsOff();}
if(distance<5)
{Serial.println("Turing");
analogWrite( channel_a_enable, 255);
digitalWrite( channel_a_input_1, LOW);
digitalWrite( channel_a_input_2, HIGH);
analogWrite( channel_b_enable, 255);
digitalWrite( channel_b_input_3, HIGH);
digitalWrite( channel_b_input_4, LOW);
delay(50);
allInputsOff();}
else if (distance>5) { }
else
{Serial.println("Channel A reverse Idle");
analogWrite( channel_a_enable, 0);
digitalWrite( channel_a_input_1, LOW);
digitalWrite( channel_a_input_2, LOW);
delay(50);
allInputsOff();}
}
void allInputsOff()
{
digitalWrite( 4, LOW );
digitalWrite( 7, LOW );
digitalWrite( 6, LOW );
digitalWrite( 3, LOW );
digitalWrite( 2, LOW );
digitalWrite( 5, LOW );
}
 
نوشته شده توسط
افزودن نظر