merhaba. Bu gün TÜbitak 4006+ bilim fuarı için yapmaya çalıştığımız robovale adlı uygulamada yaşadığımız kod sorunundan bahsedeceğim.
olay tam olarak şöyle;
Telefondan arduino uno'ya bağlı hc-05 adlı modüle sinyal göderdiğimizde arduino o sinyalle bir tür çizgi izleyen robot gibi davranmalı. Ancak sinyali gönderdiğimizde çok kısa bir süre çalışıp duruyor. Aşağıya kodları atacağım. Sadece nasıl yapabileceğimi anlatsanız yeterli.
Teşekkürler.
olay tam olarak şöyle;
Telefondan arduino uno'ya bağlı hc-05 adlı modüle sinyal göderdiğimizde arduino o sinyalle bir tür çizgi izleyen robot gibi davranmalı. Ancak sinyali gönderdiğimizde çok kısa bir süre çalışıp duruyor. Aşağıya kodları atacağım. Sadece nasıl yapabileceğimi anlatsanız yeterli.
Teşekkürler.
Kod:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int led1 = 7;
const int sag_i = 4; // motor sürücü ve sensör pinleri tanımlandı
const int sag_g = 5;
const int sol_i = 7;
const int sol_g = 6;
const int sol_sensor = 2;
const int sag_sensor = 3;
int sol_durum, sag_durum;
void setup()
{
pinMode(led1, OUTPUT);
mySerial.begin(9600);
mySerial.println("LED uygulamasi");
pinMode(sag_i, OUTPUT); // motor sürücü pinleri çıkış olarak atandı
pinMode(sag_g, OUTPUT);
pinMode(sol_i, OUTPUT);
pinMode(sol_g, OUTPUT);
pinMode(sag_sensor, INPUT); // sensör pinleri giriş pini olarak atandı
pinMode(sol_sensor, INPUT);
}
void loop()
{
char ch = mySerial.read();
sol_durum = digitalRead(sol_sensor); // sol ve sağ sensör okunup değişkenlere kaydedildi.
sag_durum = digitalRead(sag_sensor);
if (ch == 'z')
{
digitalWrite(led1, LOW);
mySerial.println("Tum LED'ler sondu");
}
if (ch == 'x')
{
if (sol_durum == LOW && sag_durum == LOW) // iki sensör de siyah görmüyor ise motorlar ileri gidecek şekilde çalışıtırıldı.
{
digitalWrite(sag_i, HIGH);
digitalWrite(sag_g, LOW);
digitalWrite(sol_i, HIGH);
digitalWrite(sol_g, LOW);
delay(50);
}
else if (sol_durum == LOW && sag_durum == HIGH) // sağ sensör siyah görüyor ise motorlar sağa dönecek şekilde çalıştırıldı.
{
digitalWrite(sag_i, HIGH);
digitalWrite(sag_g, HIGH);
digitalWrite(sol_i, HIGH);
digitalWrite(sol_g, LOW);
}
else if (sol_durum == HIGH && sag_durum == LOW) // sol sensör siyah görüyor ise motorlar sola dönecek şekilde çalıştırıldı.
{
digitalWrite(sag_i, HIGH);
digitalWrite(sag_g, LOW);
digitalWrite(sol_i, HIGH);
digitalWrite(sol_g, HIGH);
}
else //eğer yukarıda şartların 3 üde değilse dur.
{
digitalWrite(sag_i, LOW);
digitalWrite(sag_g, LOW);
digitalWrite(sol_i, LOW);
digitalWrite(sol_g, LOW);
}
delay(25); // ivme kırıcı kodlar, bunların mantığı videolarda anlatıldı arkadaşlar.
digitalWrite(sag_i, LOW);
digitalWrite(sag_g, LOW);
digitalWrite(sol_i, LOW);
digitalWrite(sol_g, LOW);
delay(50);
mySerial.println("Tum LED'ler yandi");
}
}