- Mesajlar
- 625
hocam beslemeyi l298 de 9 v pillerle yapamazsınız akım yetmez... Kullandıgınız motorlarda redüktör var ise eğer 1 A kadar bi akıma ihtiyacınız olacaktır. normal bi 9v pilde 300mA akım var tam dolu olmak şartı ile.... eğer motorlrdan ses geliyo ama hareket etmiyo ise akım yetmiyo olabilir. ayrıca ultrasonik sensörü kontrol edin ölçüm yapıyomu yapmıyomu diye bazıları bozuk geliyo ölçüm yapmıyo benim başıma gelmişti...
Kod:
#include <Servo.h>
//motor pinleri
int SolMotorileri = 9;
int SolMotorGeri = 10;
int SagMotorileri = 11;
int SagMotorGeri = 12;
//sensör pinleri
int trigpin = 6;
int echopin = 7;
int olcum = 0;
Servo servo;
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
void setup()
{
Serial.begin(9600);
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorGeri, OUTPUT);
pinMode(SagMotorileri, OUTPUT);
pinMode(SagMotorGeri, OUTPUT);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
servo.attach(4);
}
void loop()
{
delay(500);
servo.write(90);
sensor_olcum();
on_uzaklik = uzaklik;
if (on_uzaklik > 35)
{
ileri();
}
else
{
dur();
servo.write(140);
delay(500);
sensor_olcum();
delay(50);
sol_uzaklik = uzaklik;
servo.write(40);
delay(500);
sensor_olcum();
delay(50);
sag_uzaklik = uzaklik;
servo.write(90);
delay(500);
if(sag_uzaklik <35 && sol_uzaklik<35)
{
geri();
delay(500);
}
else if (sag_uzaklik < sol_uzaklik)
{
sol();
delay(3000);
ileri();
}
else if (sol_uzaklik < sag_uzaklik)
{
sag();
delay(3000);
ileri();
}
else
{
geri();
}
}
}
// robotun yön komutları
void ileri()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void geri()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
delay(500);
}
void sol()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}
void sag()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void dur()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, LOW);
}
void sensor_olcum()
{
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(2);
digitalWrite(trigpin, LOW);
olcum = pulseIn(echopin, HIGH);
uzaklik = olcum / 58.2;
delay(50);
}