Arduino İle Kendi Kendine (Otonom) Park Eden Araba Yapımı
Kendi Robotunu Yap projelerimizin bu bölümünde arduino otonom park eden araba projesini yapacağız. Otonom park etme işleminde belirli varsayımlara göre algoritmayı oluşturup sensörleri konumlandırmamız gerekiyor. Varsayımlarımız bu projemizde şu şekilde olacak. Senaryoda yolun sol kısmı duvar ve park alanlarından oluşacak. Videoda da göreceğiniz üzere arabanın sol tarafında 2 tane, arka ve ön kısmında da birer tane olmak üzere toplamda 4 tane sensörle etrafı algılamaktadır. Araba harekete başladığında sol taraftaki sensörler sürekli mesafe ölçerek park alanına uygun genişlik ararlar. Her iki sensör de park için uygun mesafe tespit ederse park işlemi algoritması devreye girer. Bu projede arabanın nasıl park edeceği iki farklı yöntemden oluşuyor.
veya
Sistemin Algoritması:
Arabanın sol kenarındaki iki sensörün ölçtüğü değer 15cm den küçük ise duvar olduğunu anlar ve ileri hareket eder.Bunu hafızasına kaydeder. Daha sonra park aramaya başlar.İleri giderken Kenardaki iki sensör sürekli ölçüm yapar ve bu ölçümler sonucu ikisinin de değeri aynı anda 15cm den büyük ise, nasıl park edeceğine karar vermesi gerekiyor.
Park Yöntemi Seçimi Algoritması
- 1. durum : Eğer ölçülen değer arabanın eninden büyük ve arabanın uzunluğundan küçük ise paralel park sistemini çalıştıracak.
- 2. durum : Eğer ölçülen değer arabanın uzunluğundan büyük ise robot dik şekilde park edecektir.
Paralel Park Etme Algoritması:
Bu durumda araba park alanını geçerek, kenardaki iki sensör tekrar duvar gördüğünde araba durur. Biraz geri gelir. ve sağa 45 derece döner. Geriye hareket ederken arka sensör ölçüm yaparak park alanına girer ve sola doğru dönemeye başlar. Sola hareketi sırasında kenarlardaki sensörler sürekli ölçüm yapar ve iki sensörün ölçtüğü değer birbirine eşit oluncaya kadar sola dönmeye devam eder. Eşit olduğunda durur. Ön sensör ölçüm yapar ve 10 cm den küçük olana kadar ileri gider. ve 10 cm den küçük ise durur. ve park etme işlemi sona erer.
Dik Park Etme Algoritması
Kenarlardaki sensörler aynı anda arabanın uzunluğundan fazla değer ölçmüş ise araba durur. ve sola 90 derece dönüş yapar. Park alanına doğru hareket etmeye başlar. Bu esnada ön sensör sürekli ölçüm yapar ve ölçülen değer 10cm den küçük ise araba durur. park işlemi tamamlanmış olur.
Malzemeler:
- Arduino Mega
- Adafruit Motor Shield
- 4 Dc Motorlu Robot Kit
- 4 Adet HC-SR04 Ultrasonik Sensör
- LM 393 Kızılötesi Hız Sensörü
- Lipo Pil ( 7.4V 850 mah yeterlidir)
- Jumper Kablolar
Mekanik Kısım:
Sistemde bulunan kızılötesi sensör motorun devrini ölçmektedir. Bu sayede park ederken tekerleklerin tur sayısını ölçerek hatasız park etmesini sağlamaktır. Robot kitinizde enkoder disk yoksa ek olarak alıp takabilirsiniz. Burada dikkat edilmesi gereken nokta enkoder disk üzerindeki delik sayısıdır. Bu projedeki enkoder diskin delik sayısı 20 dir. Sizdeki farklı sayıda ise arabanın dönüşlerini tekrar ayarlamanız gerekiyor.
LM393 Hız sensörünü yukarıdaki şekildeki gibi yerleştiriniz. Enkoder disk deliklerinin hızasında olmasına dikkat ediniz.
Sol kenardaki sensörleri yukarıdaki gibi konumlandırın. Sensörlerin köşelerde olması arabanın uzunluğuna göre park alanı bulmasını sağlamaktadır. Diğer iki sensörün birini öne diğerini de arkaya yerleştiriniz.
Devre Şeması:
Ultrasonik Sensörlerin Pin Bağlantıları
Ön Sensör => Trig Pin : D34 , Echo Pin : D35
Sol Ön Sensör => Trig Pin : D36 , Echo Pin : D37
Sol Arka Sensör => Trig Pin : D38 , Echo Pin : D39
Arka Sensör => Trig Pin : D40 , Echo Pin : D41
Motor Shield Dc Motor Pin Bağlantıları
Sol Ön Motor => M4
Sağ Ön Motor => M3
Sol Arka Motor => M1
Sağ Arka Motor => M2
LM393 Hız Sensörü Pin Bağlantıları
VCC => 5V : OUT => D21 : GND => GND
Yazılım Kısmı:
Ultrasonik Sensör Kütüphanesi : Ultrasonic.zip
Arduino Yazılımı:
// Otonom Park Eden Araba // Developed by Sezgin GÜL //motorların tanımları #include <AFMotor.h> AF_DCMotor Sol_On_Motor(4); AF_DCMotor Sag_On_Motor(3); AF_DCMotor Sol_Arka_Motor(1); AF_DCMotor Sag_Arka_Motor(2); #include <Ultrasonic.h> Ultrasonic ultrasonic_arka(40,41),ultrasonic_sol_arka(38,39),ultrasonic_sol_on(36,37),ultrasonic_on(34,35); // ultrasomik sensörlerin tanımlamamalrı #define Sol 0 //sol yön komutu #define Sag 1 //sağ yön komutu #define Ileri 2 //ileri yön komutu #define Geri 3 //geri yön komutu #define minimum_limit 15 //Arabanın genişliği (cm) #define minimum_limit1 28 //arabanın uzunluğu (cm) byte park_durumu = 0; int sinyalpin = 21; volatile int val; int sayac = 0; int guncel_durum = 0; int onceki_durum = 0; void say(int saydir) { for (int i = 0 ; i <= saydir; i+1) { val = digitalRead(sinyalpin); if (val == LOW) { guncel_durum = 0; } else { guncel_durum = 1; } if(guncel_durum != onceki_durum) { if(guncel_durum == 1) { sayac = sayac + 1; Serial.println(sayac); i = i+1; } else { i = i ; } onceki_durum = guncel_durum; } if (i == saydir) { Sol_On_Motor.run(RELEASE); Sag_On_Motor.run(RELEASE); Sol_Arka_Motor.run(RELEASE); Sag_Arka_Motor.run(RELEASE); } } } void motor_pinSetup() { Sol_On_Motor.run(RELEASE); Sag_On_Motor.run(RELEASE); Sol_Arka_Motor.run(RELEASE); Sag_Arka_Motor.run(RELEASE); } // Hareket fonksiyonları void Robot_Hareket(byte motor, byte spd) { if (motor == Ileri) { Sol_On_Motor.setSpeed(spd); Sag_On_Motor.setSpeed(spd); Sol_Arka_Motor.setSpeed(spd); Sag_Arka_Motor.setSpeed(spd); Sol_On_Motor.run(FORWARD); Sag_On_Motor.run(FORWARD); Sol_Arka_Motor.run(FORWARD); Sag_Arka_Motor.run(FORWARD); } if (motor == Geri) { Sol_On_Motor.setSpeed(spd); Sag_On_Motor.setSpeed(spd); Sol_Arka_Motor.setSpeed(spd); Sag_Arka_Motor.setSpeed(spd); Sol_On_Motor.run(BACKWARD); Sag_On_Motor.run(BACKWARD); Sol_Arka_Motor.run(BACKWARD); Sag_Arka_Motor.run(BACKWARD); } if (motor == Sol) { Sol_On_Motor.setSpeed(spd); Sag_On_Motor.setSpeed(spd); Sol_Arka_Motor.setSpeed(spd); Sag_Arka_Motor.setSpeed(spd); Sol_On_Motor.run(BACKWARD); Sag_On_Motor.run(FORWARD); Sol_Arka_Motor.run(BACKWARD); Sag_Arka_Motor.run(FORWARD); } if (motor == Sag) { Sol_On_Motor.setSpeed(spd); Sag_On_Motor.setSpeed(spd); Sol_Arka_Motor.setSpeed(spd); Sag_Arka_Motor.setSpeed(spd); Sol_On_Motor.run(FORWARD); Sag_On_Motor.run(BACKWARD); Sol_Arka_Motor.run(FORWARD); Sag_Arka_Motor.run(BACKWARD); } } void Robot_Dur() { Sol_On_Motor.run(RELEASE); Sag_On_Motor.run(RELEASE); Sol_Arka_Motor.run(RELEASE); Sag_Arka_Motor.run(RELEASE); } // Park yeri araması bool Park_Yeri_Kontrol() { long on_Sensor = ultrasonic_on.Ranging(CM); long sag_Sensor = ultrasonic_sol_on.Ranging(CM); long sag_arka_Sensor =ultrasonic_sol_arka.Ranging(CM); if( (sag_Sensor <= minimum_limit)&&(sag_arka_Sensor <= minimum_limit)&&(park_durumu == 0)) { Robot_Hareket(Ileri, 100); park_durumu = 1; Serial.println(park_durumu); } if((sag_Sensor > minimum_limit)&&(sag_Sensor < minimum_limit1)&&(sag_arka_Sensor > minimum_limit)&&(sag_arka_Sensor < minimum_limit1)&&(park_durumu == 1)) { Robot_Hareket(Ileri, 100); park_durumu = 2;Serial.println(park_durumu); } if((sag_Sensor >= minimum_limit1)&&(sag_arka_Sensor >= minimum_limit1)&&(park_durumu == 1)) { /* Dik Park Etme Kararı */ Robot_Dur() ; delay(500); park_durumu = 10;Serial.println(park_durumu); } if((sag_Sensor <= minimum_limit)&&(sag_arka_Sensor <= minimum_limit)&&(park_durumu == 2)) { /* Paralel Park Etme Kararı */ park_durumu = 3; Serial.println(park_durumu); } return park_durumu; } void Park_bul() { Park_Yeri_Kontrol(); if(park_durumu == 3 ) { Robot_Dur();Serial.println(park_durumu); delay(400); park_durumu = 4; } if(park_durumu == 4 ) { Robot_Hareket(Geri,120); say(18); Robot_Dur();Serial.println(park_durumu); delay(500); Robot_Hareket(Sag,150); say(9); Robot_Dur(); delay(500); park_durumu = 5; } if(park_durumu == 5) { Robot_Hareket(Geri,120); long arka_Sensor = ultrasonic_arka.Ranging(CM);Serial.println(arka_Sensor); if(arka_Sensor>0 && arka_Sensor <= 13) { Robot_Dur(); delay(400); park_durumu = 6; } return arka_Sensor; } if(park_durumu == 6) { Robot_Hareket(Sol,150); long sag_Sensor = ultrasonic_sol_on.Ranging(CM); Serial.println(sag_Sensor); long sag_arka_Sensor = ultrasonic_sol_arka.Ranging(CM); Serial.println(sag_arka_Sensor); if(sag_Sensor == sag_arka_Sensor) { Robot_Dur(); park_durumu = 7; } return sag_Sensor,sag_arka_Sensor; } if(park_durumu == 7) { long on_Sensor = ultrasonic_on.Ranging(CM); if(on_Sensor<=6) { Robot_Dur(); park_durumu = 8; } else { Robot_Hareket(Ileri,100); } return on_Sensor; } if (park_durumu ==10) { Robot_Hareket(Sol,180); say(14); Robot_Dur(); delay(500); park_durumu = 7; } } void setup() { Serial.begin(9600); attachInterrupt(5, say, CHANGE); pinMode (sinyalpin, INPUT) ; motor_pinSetup(); } void loop() { Park_bul(); }
Projenin Bütün Yazılımını Buradan İndirebilirsiniz.>> Otonom Park Eden Araba
Kendi Robotunu Yap projelerimizin bu bölümünde otonom park eden araba yapımından bahsettik. Bir sonraki projede görüşmek üzere..
Hi sir. what are the lengths you used for the
ultrasonic_on.Ranging(cm)
ultrasonic_sol_on.Ranging(cm);
ultrasonic_sol_arka.Ranging(cm);
ultrasonic_arka.Ranging(cm)
Hi. Can you post which sections i need to put in the values for the length and width of the car
Aşağıdaki hataları alıyorum yardımcı olurmusunuz
Arduino:1.8.8 (Windows 10), Kart:”Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega
2560)”
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino: In function ‘void Park_bul()’:
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino:242:10: warning: return-statement with a value, in function
returning ‘void’ [-fpermissive]
return arka_Sensor;
^
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino:257:21: warning: return-statement with a value, in function
returning ‘void’ [-fpermissive]
return sag_Sensor,sag_arka_Sensor;
^
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino:272:10: warning: return-statement with a value, in function
returning ‘void’ [-fpermissive]
return on_Sensor;
^
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino: In function ‘void setup()’:
C:\Users\Hp\Desktop\meb robot\Arduino-ile-Kendi-Kendine—Otonom—Park-Eden-Arabamaster\
otonom_park\otonom_park.ino:291:33: warning: invalid conversion from ‘void (*)(int)’ to
‘void (*)()’ [-fpermissive]
attachInterrupt(5, say, CHANGE);
^
In file included from sketch\otonom_park.ino.cpp:1:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:150:6: note:
initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t, void (*)(void), int mode);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘void RobotMotorBoard::begin()’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:37:21:
error: ‘MUXA’ was not declared in this scope
uint8_t MuxPins[]={MUXA,MUXB,MUXC};
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:37:26:
error: ‘MUXB’ was not declared in this scope
uint8_t MuxPins[]={MUXA,MUXB,MUXC};
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:37:31:
error: ‘MUXC’ was not declared in this scope
uint8_t MuxPins[]={MUXA,MUXB,MUXC};
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:38:26:
error: ‘MUX_IN’ was not declared in this scope
this->IRs.begin(MuxPins,MUX_IN,3);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:39:10:
error: ‘MUXI’ was not declared in this scope
pinMode(MUXI,INPUT);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘uint8_t RobotMotorBoard::parseCodename(uint8_t)’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:136:11:
error: ‘TK1’ was not declared in this scope
return TK1;
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:138:11:
error: ‘TK2’ was not declared in this scope
return TK2;
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:140:11:
error: ‘TK3’ was not declared in this scope
return TK3;
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:142:11:
error: ‘TK4’ was not declared in this scope
return TK4;
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘void RobotMotorBoard::motorsWrite(int, int)’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:192:15:
error: ‘IN_A1’ was not declared in this scope
analogWrite(IN_A1,speedR);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:193:15:
error: ‘IN_A2’ was not declared in this scope
analogWrite(IN_A2,0);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:195:15:
error: ‘IN_A1’ was not declared in this scope
analogWrite(IN_A1,0);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:196:15:
error: ‘IN_A2’ was not declared in this scope
analogWrite(IN_A2,-speedR);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:200:15:
error: ‘IN_B1’ was not declared in this scope
analogWrite(IN_B1,speedL);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:201:15:
error: ‘IN_B2’ was not declared in this scope
analogWrite(IN_B2,0);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:203:15:
error: ‘IN_B1’ was not declared in this scope
analogWrite(IN_B1,0);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:204:15:
error: ‘IN_B2’ was not declared in this scope
analogWrite(IN_B2,-speedL);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘virtual void RobotMotorBoard::motorsStop()’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:212:14:
error: ‘IN_A1’ was not declared in this scope
analogWrite(IN_A1,255);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:213:14:
error: ‘IN_A2’ was not declared in this scope
analogWrite(IN_A2,255);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:215:14:
error: ‘IN_B1’ was not declared in this scope
analogWrite(IN_B1,255);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:216:14:
error: ‘IN_B2’ was not declared in this scope
analogWrite(IN_B2,255);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘void RobotMotorBoard::_readTrim()’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:271:23:
error: ‘TRIM’ was not declared in this scope
int value=analogRead(TRIM);
^
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In
member function ‘void RobotMotorBoard::_refreshMotorAdjustment()’:
C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:278:33:
error: ‘TRIM’ was not declared in this scope
motorAdjustment=map(analogRead(TRIM),0,1023,-30,30)/100.0;
^
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
arduino ve motor sürücü arasındaki bağlantı paylaşılmamış rica etsem alabilir miyim
motor sürücüyü ve arduinoyu nasıl bağnacakğı anlatılmamış, rica etsem görselini ya da pin girişlerini alabilirmiyim
Böyle hatalar alıyorum sebebi nedir ?
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino: In function ‘void Park_Find()’:
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino:231:16: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino:245:31: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino:259:18: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino: In function ‘void setup()’:
C:\Users\UĞUR CAVNAR\Documents\Arduino\sketch_nov27a\sketch_nov27a.ino:273:43: warning: invalid conversion from ‘void ()(int)’ to ‘void ()()’ [-fpermissive]
In file included from sketch\sketch_nov27a.ino.cpp:1:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
^~~~~~~
Sorunu çözebildiniz mi acaba Uğur Bey? Aynı sorunu yaşıyorum
Merhaba bu projeyi yapmaya çalışıyoruz yardımcı olabilecek var mı?
Normal uno kart ile yapılabilir mi hız sensörü de yok.
Merhaba, aşağıdaki hatayı alıyorum ve robot güç düğmesini açınca ışık yanmasına rağmen çalışmıyor.
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino: In function ‘void Park_bul()’:
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino:217:8: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return arka_Sensor;
^~~~~~~~~~~
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino:232:19: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return sag_Sensor,sag_arka_Sensor;
^~~~~~~~~~~~~~~
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino:247:8: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return on_Sensor;
^~~~~~~~~
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino: In function ‘void setup()’:
C:\Users\GKAYNAK\Desktop\Autonomous_vehicle\Autonomous_vehicle.ino:265:31: warning: invalid conversion from ‘void (*)(int)’ to ‘void (*)()’ [-fpermissive]
attachInterrupt(2, say, CHANGE);
^
In file included from sketch\Autonomous_vehicle.ino.cpp:1:0:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
^~~~~~~~~~~~~~~
merhabalar kodu arduinoya attığımda derlediğimde “arduino mega için derleme hatası” alıyorum port seçimim doğru kart seçimim doğru ama elimde arduino mega olmadığı takıp derleyemiyorum.Arduino kartı takılı olmadığı için mi hata alıyorum.
İyi günler derleme yap dedikten sonra bu problem çıktı nasıl düzelir
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino: In function ‘void Park_bul()’:
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino:238:10: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return arka_Sensor;
^~~~~~~~~~~
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino:261:21: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return sag_Sensor,sag_arka_Sensor;
^~~~~~~~~~~~~~~
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino:273:10: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
return on_Sensor;
^~~~~~~~~
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino: In function ‘void setup()’:
C:\Users\CASPER\AppData\Local\Temp\Rar$DIa21124.421\otonom_park\otonom_park.ino:292:33: warning: invalid conversion from ‘void (*)(int)’ to ‘void (*)()’ [-fpermissive]
attachInterrupt(5, say, CHANGE);
^
In file included from sketch\otonom_park.ino.cpp:1:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
^~~~~~~~~~~~~~~
Burak Bey sorunu çözebildiniz mi ?
Merhabalar
Kodu derleme yaparken aşağıdaki hatayı veriyor
exit status 1
Arduino Mega or Mega 2560 kartı için derleme hatası.
TEKRARDAN MERHABALAR
MEGA SORUNUNU HALLETTİM
ARABA ŞUAN SADECE DİK OLARAK PARK EDİLİYOR
PARALEL PARK OLMUYOR
YARDIMCI OLABİLİR MİSİNİZ
sir, pls explain the use of speed sensor and encoder .I didnt understand this
LM393 sensörü olmadan aynı kodu kullanamaz ve çalışamaz mıyım? LM393 sensörü olmadan sürüm kodunu istiyorum.
Araba hiç hareket etmiyor ve böyle bir hata alıyorum:
C:\Users\gurka\Desktop\otonom_park\otonom_park.ino: In function ‘void setup()’:
C:\Users\gurka\Desktop\otonom_park\otonom_park.ino:286:34: warning: invalid conversion from ‘void (*)(int)’ to ‘void (*)()’ [-fpermissive]
attachInterrupt( 5, say, CHANGE);
^
In file included from sketch\otonom_park.ino.cpp:1:0:
C:\Users\gurka\Desktop\arduino\hardware\arduino\avr\cores\arduino/Arduino.h:151:6: note: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
Öncelikle elinize sağlık çok güzel bir proje tüm malzemeleri satın alıp kendim projeyi yaptım. Fakat şöyle bir sorum var öncelikle park yeri algılamasında bazen algılıyor bazen algılamıyor. Algılandığında ise mesela dikey parkta 90 derece dönmeli ama araç kafasına göre dönüyor bazen çok bazen az. Yardımcı olabilecek var mı?
benim sol ön ve sol arka sensörlerin girişlerini voltaj değerlerini ölçtüğümde 0.68 degerini alıyorum diger sensörlerde 5.68 değerini alıyorum. Bide motor sürücünün çıkış voltaj değerlerini ölçtüğümde herhangi bir değer alamadım .
iyi günler kolay gelsin. Biz bitirme projesi olarak bu projeyi yapıyoruz bütün malzemeleri aldık mekanik kurulumu da tamamladık fakat kodları yüklediğimizde araba da hiçbir hareket olmuyor ne gibi bir hata olabilir acaba? Kod yüklenirken de hiçbir hata vermiyor. Yardımcı olursanız çok mutlu oluruz.
Videodaki gibi park yeri oluşturun. Robotun sol taraftaki iki sensör duvarı aynı anda görmesi gerekmektedir. Duvara yakınlığı 15cm den az olmalı.
Dediğiniz gibi de yaptım fakat pili bağladıktan sonra çok zayıf bir ses dışında hiçbir tepki vermiyor
Güç kaynağınız yetersiz olduğundan kaynaklanabilir. Koddaki motor hız değerlerini arttırın ya da güç kaynağı olarak 7.4v 1000 mah civarı lipo pil kullanın.
Sorunu anlamanıza yardımcı olabilir belki bizde mesela hız sensöründede herhangi bir ışık yanmıyor
hız sensörünün ışığı yanıyor ama siz de ki gibi yeşil değil sadece kırmızı yanıyor
Gökhan bey, modül üreticileri farklı olduğundan ışık renkleri farklı olabilir. Enkoder diski çevirdiğinizde ışık yanıp sönüyorsa çalışıyor demektir.
sorunu görebilmeniz için sizinle nasıl bir iletişime geçebilirim ? video olarak size göstersem veya görüntülü arama tarzında nasıl bir şey yapabiliriz ?
Benzer sıkıntı bende de var ses geliyor, ışık yanıp sönüyor dediğiniz gibi, sadece sol arka tekerlek dönmeye çalışıyor ama o da çok güçsüz havaya kaldırınca dönüyor sadece. 4 tane AA pil kullandım Lipo almadan çözemez miyiz acaba ?
herşey çalıştı sonunda tam anlamıyla parkı her seferinde düzgün yapmasa da yapıyor artık fakat birşey sormak istiyorum bu kodlar da kesme var mı?
Hocam aynı şekilde bizimde bitirme projemiz siz hangi duruma geldiniz yapılabiliyor mu yada hiç bulaşmayalım mı bu arada Instagram adresinizi verirseniz tecrübeleriniz hakkında bilgi almak istiyorum
Arduino:1.8.10 (Windows 10), Kart:”Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino: In function ‘void Park_bul()’:
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino:240:10: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino:257:21: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino:272:10: warning: return-statement with a value, in function returning ‘void’ [-fpermissive]
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino: In function ‘void setup()’:
C:\Users\Tunahan KARAGÜL\Documents\Arduino\otonompark\otonompark.ino:291:31: warning: invalid conversion from ‘void (*)(int)’ to ‘void (*)()’ [-fpermissive]
In file included from sketch\otonompark.ino.cpp:1:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:150:6: note: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’
void attachInterrupt(uint8_t, void (*)(void), int mode);
^~~~~~~~~~~~~~~
bu hata mesajını alıyorum nasıl çözebilirim?
‘class Ultrasonic’ has no member named ‘Ranging’
hatasını veriyor bunun için ne yapmak gerekiyor
Ultasonik sensör kütüphanesini eklemeniz gerekir. Buradan indirip ekleyebilirsiniz : https://www.robimek.com/wp-content/uploads/Ultrasonic.zip
Bu proje için kaç adet hız sensörü lazım. Eğer bir tane yeterli ise hız sensörü hangi tekere takılmalı.
Merhaba, bir adet hız sensörünü istediğiniz motorun enkoder diskine takabilirsiniz.
Merhaba, otonom mayın tarama robotu yapmak istiyorum sitenizde bulamadım yardımcı olabilir misiniz rica etsem fikirlerinizi öğrenmek istiyorum.
byte park_durumu = 0;
int sinyalpin = 21;
volatile int val;
int sayac = 0;
int guncel_durum = 0;
int onceki_durum = 0;
void say(int saydir)
{
for (int i = 0 ; i <= saydir; i+1)
{
val = digitalRead(sinyalpin);
if (val == LOW) {
guncel_durum = 0;
}
else {
guncel_durum = 1;
}
if(guncel_durum != onceki_durum)
{
if(guncel_durum == 1)
{
sayac = sayac + 1;
Serial.println(sayac);
i = i+1;
}
else
{
i = i ;
}
onceki_durum = guncel_durum;
}
if (i == saydir)
{
Sol_On_Motor.run(RELEASE);
Sag_On_Motor.run(RELEASE);
Sol_Arka_Motor.run(RELEASE);
Sag_Arka_Motor.run(RELEASE);
}
}
}
void motor_pinSetup()
{
Sol_On_Motor.run(RELEASE);
Sag_On_Motor.run(RELEASE);
Sol_Arka_Motor.run(RELEASE);
Sag_Arka_Motor.run(RELEASE);
}
Bu bölümde yaptığımız işlem tam olarak nedir ?
please tell me that in the command attachInterrupt(5,say,CHANGE) , nothing has been connected to the digital pin 5. can you explain it?
Projenin malzemelerini satın alırsak eğer , hepsi elimize ulaşacak mı ?
Merhaba , Proje malzeme kiti, projeyi yapmak için gerekli bütün malzemeleri içermektedir.
ARDUİNO sürümü ile alakalı bir durum imiş. Yeni sürümde kodlar çalışıyor.
Sezgin bey bu güzel çalışmanız çok teşekkür ediyorum.
Kod derlenince aşağıdaki hatayı veriyor:
Arduino:1.6.5 Hourly Build 2015/05/14 11:25 (Windows 8.1), Kart:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”
OtomatikPark.ino: In function ‘void Park_bul()’:
OtomatikPark:219: error: return-statement with a value, in function returning ‘void’ [-fpermissive]
OtomatikPark:234: error: return-statement with a value, in function returning ‘void’ [-fpermissive]
OtomatikPark:249: error: return-statement with a value, in function returning ‘void’ [-fpermissive]
OtomatikPark.ino: In function ‘void setup()’:
OtomatikPark:267: error: invalid conversion from ‘void (*)(int)’ to ‘void (*)()’ [-fpermissive]
In file included from OtomatikPark.ino:8:0:
C:\arduino-nightly\hardware\arduino\avr\cores\arduino/Arduino.h:141:6: error: initializing argument 2 of ‘void attachInterrupt(uint8_t, void (*)(), int)’ [-fpermissive]
void attachInterrupt(uint8_t, void (*)(void), int mode);
^
return-statement with a value, in function returning ‘void’ [-fpermissive]
Rapor daha fazla veri içermeli
“Derleme sırasında ayrıntılı çıktı göster”
Dosya > Tercihler’de etkinleştirilmiş.
Öncelikle böyle bir proje yaptığınız için teşekkür ederim. Yapabilirsem aynısını yapmak istiyorum.Kullanılan motor shield hangisi acaba? Ben hangisi olduğunu çözemedim de 🙂
1 Numara
robotistan.com/arduino-motor-surucu-shield-arduino-motor-driver-shield
2 Numara
robotistan.com/adafruit-motorstepperservo-shield-for-arduino-v2-kit
3 Numara
robotistan.com/adafruit-dcstep-motor-shield
İlk Baştaki Kardeşim
Arduino uno ile yapılabilirmi
4 ultrasonic hepsinden deger alamıyoruz nasıl sorunu cözecegiz en fazla 2 tane ultrasonicten deger alabiliyoruz.
herşeyi yaptık tek sorun 4 ultrasonic aynı anda algılamyor en fazla 2 tane algılıyor
öncelikle tebrik ederim elinize sağlık. Adafruit Motor Shield yerine l293d shild kullanabilirmiyiz ?
2 dc motorlu robot kit için en değerleri nsıl olur?
2 DC motorlu kit,boy kodları nasıl olur?
Öncelikle böyle bir projeyi paylaştığınız için teşekkürler. fakat kodu yüklemeye çalışınca hata veriyor.
acaba arduino uno kullanabilirmyiz bu projede yoksa mega kullanmak şart mı?
böylesi bir projeyi paylaştığınız için öncelikle teşekkür ederim
bu kodu alıp derlediğimde hatalar çıkıyor kütüphanelerden başka birşey eklemelimiyim
4 dc motorlu robot kit yerine 2 dc motorlu robot kit kullansak işe yarar mı?
Kullanabilirsin Sinan. Sol ve sağ taraftaki motorlar ikili olarak aynı hareketi yapıyor. Kodda değişiklik yapmak istemiyorsan bir motor sol diğerini de sağ girişlerden birine takabilirsin. Diğer önemli nokta ise robotun boy ve en değerleridir. Arabanın boyutları farklı ise kodda belirtilen değişkenlere yeni değerleri yazmalısın.
Merhaba bu projeyi başlatma tuşu nedir yardimci olurmusunuz.
Çok güzel , lm393 ve kızılötesi vericilerden 4 tane mi kullandınIz? O kısmın mantığını biraz açıklarsanız çok sevinirim…amaç 4 tekerleğinde aynı hızda gitmesini sağlamak mı? Pwm yerine bu şekilde mi hız ayarlaması yapıyoruz2?
sadece bir motora bağlamanız yeterli. Amaç ne kadar hızda gitmesi değil ne kadar mesafe gideceğini belirlemek Örneğin dikey parkta 90 derece dönmesi için tekerleklerin ne kadar tur atması gerektiğini kodda belirtmek. Enkoder delik sayısına göre her delik arası mesafeyi bir adım olarak adlandırabiliriz. Tıpkı step motorlardaki gibi . Kodda da ne kadar adım atacağını belirterek o kadar hareket etmesini sağladım.
Tebrik ederim güzel bir çalışma olmuş. elinize sağlık. Paylaşım için de ayrıca teşekkür ederim.
teşekkürler. rica ederim.
Sezgin yaptım fakat yatay park etmiyor.