Arduino İle Çizgi İzleyen Robot
-
Selamlar Mürid(e)ler ;
Arduino konusunda yavaş yavaş kendimi geliştirmye çalışmaktayım. Geçenlerde elime qtr-8 pololu'nun çizgi izleme sensörü geçti. Bununla bir çizgi izleyen robot yapmaya çalışıyorum ama sensörü analog yada digital tam olarak çalıştıramadım. Nasıl yapmalıyım sizce yada daha önce yapan varmı aceba, motor sürücü olarak aşağı linkdeki sürücüyü kullanmaktayım. Bunu nasıl yapabilirim sizce pek becefremedim.
http://hobikod.com/wp-content/uploads/L293D-motor-shield-2.jpg Motor Sürücü Kartı
http://www.robotistan.com/qtr-8a-8li-kizilotesi-sensor-analog-4397-18-B.jpg Sensör Kartı
-
Ben henüz arduinoyla yapmadım ama baskı devreyle uğraşmaktan daha iyidir :)
-
Hangi kısımda takılıyorsun? Motor kontrolünde mi yoksa sensörden veri okumakta mı?
-
YeniHarman bunu yazdı
Hangi kısımda takılıyorsun? Motor kontrolünde mi yoksa sensörden veri okumakta mı?
Sensörden verileri çekmekte zorlanıyorum, hatta yapamıyorum diyebilirim. Analog veya digital olup olmadığını tam bilmiyorum sensör kartının, ama bana digital değerler lazım. Nasıl yapmalıyım
-
istnbullu bunu yazdı
Ben henüz arduinoyla yapmadım ama baskı devreyle uğraşmaktan daha iyidir :)
Yanii biraz daha kolay gibi ama baskı devrenin yerini hiç bişey tutmaz :))
-
Arduino senin için daha iyi olur diye düşünüyorum en azından zaman kazanma konusunda ama çok farkı oldugunu düşünmüyorum.
-
bunuda bitek yapmayan bir bakkal rıfkı abi ile komşumuz hatice abla yapmamıştır heralde
-
mkyyldrm bunu yazdıYeniHarman bunu yazdı
Hangi kısımda takılıyorsun? Motor kontrolünde mi yoksa sensörden veri okumakta mı?
Sensörden verileri çekmekte zorlanıyorum, hatta yapamıyorum diyebilirim. Analog veya digital olup olmadığını tam bilmiyorum sensör kartının, ama bana digital değerler lazım. Nasıl yapmalıyım
O sensör analog gibi. Arduinonun 5V pinini sensör üstündeki VCC'ye, GND'yi sensördeki GND'ye bağla. 1-8 arasındaki sensörlerden seçtiğin 6 tanesini arduinonun A0-A5 pinlerine bağla. Sonra analogRead ile okunacak.
-
Selamlar hocalar;
Geçenlerde bahsettiğim sensör olayını çözdüm, istediğim değerleri alıyorum fakat şuan tek sorunum belli değer aralıklarına göre motorları hareket ettirmek için kodları yazdım fakat hiç bi şekilde motorlar hareket etmiyor sizce neden olabilir.
#include <QTRSensors.h> #define NUM_SENSORS 3 // number of sensors used #define TIMEOUT 2500 // waits for 2500 us for sensor outputs to go low #define EMITTER_PIN QTR_NO_EMITTER_PIN // emitter is controlled by digital pin 2 // sensors 0 through 7 are connected to digital pins 3 through 10, respectively QTRSensorsRC qtrrc((unsigned char[]) {3, 4, 5}, NUM_SENSORS, TIMEOUT, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; int ena=10; int in1=6; int in2=7; int enb=11; int in3=8; int in4=9; void setup() { pinMode(ena,OUTPUT); pinMode(in1,OUTPUT); pinMode(in2,OUTPUT); pinMode(enb,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); delay(500); int i; pinMode(13, OUTPUT); digitalWrite(13, HIGH); // turn on LED to indicate we are in calibration mode for (i = 0; i < 400; i++) // make the calibration take about 10 seconds { qtrrc.calibrate(); // reads all sensors 10 times at 2500 us per read (i.e. ~25 ms per call) } digitalWrite(13, LOW); // turn off LED to indicate we are through with calibration // print the calibration minimum values measured when emitters were on Serial.begin(9600); for (i = 0; i < NUM_SENSORS; i++) { Serial.print(qtrrc.calibratedMinimumOn[i]); Serial.print(' '); } Serial.println(); // print the calibration maximum values measured when emitters were on for (i = 0; i < NUM_SENSORS; i++) { Serial.print(qtrrc.calibratedMaximumOn[i]); Serial.print(' '); } Serial.println(); Serial.println(); delay(1000); } void loop() { unsigned int position = qtrrc.readLine(sensorValues); //qtrrc.read(sensorValues); unsigned char i; for (i = 0; i < NUM_SENSORS; i++) { Serial.print(sensorValues[i] * 10 / 1001); Serial.print(' '); } Serial.print(" "); Serial.println(position); if (sensorValues[3] < 5 && sensorValues[4] < 5) { analogWrite(ena, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } else { analogWrite(enb, 255); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(ena, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } }