Bu basit tank ile 8 metreye kadar ister kendi kumandanızdan ister akıllı telefonunuzdan kontrol edebilirsiniz. Akıllı telefondan kontrol edebilmek için ır kızılötesi sensörün kendi kumandasındaki tuşları telefonunuza öğretmeniz gerekmektedir.
IR kızılötesi sensörün kütüphanesini buradan indirebilirsiniz.
PROGRAMIN KODLARI :
#include <IRremote.h>
#include <LiquidCrystal.h>
int RECV_PIN = 10; // 10. pin alıcı dijital
IRrecv irrecv(RECV_PIN); // hazır kod
decode_results results; // hazır kod
LiquidCrystal lcd(9,8,7,6,5,16); // lcd pin bağlantıları
int kumanda(int k) // k harfina kumandanın butonlarını aktarıyorum
{
if(k==255)
return 1;
if(k==-32641)
return 2;
if(k==16575)
return 3;
if(k==8415)
return 4;
if(k==-24481)
return 5;
if(k==24735)
return 6;
if(k==4335)
return 7;
if(k==-28561)
return 8;
if(k==20655)
return 9;
if(k==12495)
return 10;
if(k==-20401)
return 11;
if(k==28815)
return 12;
if(k==2295)
return 13;
if(k==-30601)
return 14;
if(k==18615)
return 15;
if(k==10455)
return 16;
if(k==-22441)
return 17;
if(k==26775)
return 18;
if(k==6375)
return 19;
if(k==-26521)
return 20;
if(k==22695)
return 21;
return -1;
}
#define sol_motor_hiz_pin 11 // sol motor hızının ayarlandığı pwm bacağı
#define sol_motor_yon_pin 13 // sol motor yonu ayar bacağı
#define sag_motor_hiz_pin 3 // sag motor hızının ayarlandığı pwm bacağı
#define sag_motor_yon_pin 12 // sag motor yonu ayar bacağ
void setup()
{
pinMode(sol_motor_hiz_pin, OUTPUT);
analogWrite(sol_motor_hiz_pin,0);
pinMode(sol_motor_yon_pin, OUTPUT);
digitalWrite(sol_motor_yon_pin, HIGH);
pinMode(sag_motor_hiz_pin, OUTPUT);
analogWrite(sag_motor_hiz_pin,0);
pinMode(sag_motor_yon_pin, OUTPUT);
digitalWrite(sag_motor_yon_pin, HIGH);
lcd.begin(16, 2);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(kumanda(results.value));
if(kumanda(results.value) == 1)
{
digitalWrite(sol_motor_yon_pin, HIGH);
digitalWrite(sag_motor_yon_pin, HIGH);
analogWrite(sol_motor_hiz_pin,0);
analogWrite(sag_motor_hiz_pin,0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("sensor ve motor");
lcd.setCursor(5,1);
lcd.print("pasif");
}
if(kumanda(results.value) == 2) // İLERİ
{
digitalWrite(sol_motor_yon_pin, HIGH);
digitalWrite(sag_motor_yon_pin, HIGH);
analogWrite(sol_motor_hiz_pin,255);
analogWrite(sag_motor_hiz_pin,255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(5,1);
lcd.print("ileri");
}
if(kumanda(results.value) == 8) // GERİ
{
digitalWrite(sol_motor_yon_pin, LOW);
digitalWrite(sag_motor_yon_pin, LOW);
analogWrite(sol_motor_hiz_pin,255);
analogWrite(sag_motor_hiz_pin,255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(7,1);
lcd.print("geri");
}
if(kumanda(results.value) == 6) // KESKİN SAĞA DÖÜŞ
{
digitalWrite(sol_motor_yon_pin, HIGH);
digitalWrite(sag_motor_yon_pin, LOW);
analogWrite(sol_motor_hiz_pin,255);
analogWrite(sag_motor_hiz_pin,255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(0,1);
lcd.print("keskin sag");
}
if(kumanda(results.value) == 4) //KESKİN SOLA DÖÜŞ
{
digitalWrite(sol_motor_yon_pin, LOW);
digitalWrite(sag_motor_yon_pin, HIGH);
analogWrite(sol_motor_hiz_pin,255);
analogWrite(sag_motor_hiz_pin,255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(0,1);
lcd.print("keskin sol");
}
if(kumanda(results.value) == 16) // HAFİF SOLA DÖÜŞ
{
digitalWrite(sol_motor_yon_pin, LOW);
digitalWrite(sag_motor_yon_pin, HIGH);
analogWrite(sol_motor_hiz_pin,0);
analogWrite(sag_motor_hiz_pin,255);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(0,1);
lcd.print("hafif sol");
}
if(kumanda(results.value) == 18) // HAFİF SAĞA DONUŞ
{
digitalWrite(sol_motor_yon_pin, HIGH);
digitalWrite(sag_motor_yon_pin, LOW);
analogWrite(sol_motor_hiz_pin,255);
analogWrite(sag_motor_hiz_pin,0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("hareket yonu");
lcd.setCursor(0,1);
lcd.print("hafif sag");
}
irrecv.resume(); // Receive the next value
}
}
Hiç yorum yok:
Yorum Gönder