Robotik kodlamadaki hata ne olabilir?

Della.dd

Decipat
Katılım
25 Ağustos 2024
Mesajlar
2.285
Çözümler
22
Daha fazla  
Cinsiyet
Erkek
Kod:
#include "IRremote.h"
// Motor pinleri
int ena = 3;
int enb = 6;
int in1 = 2;
int in2 = 4;
int in3 = 5;
int in4 = 7;
// IR sensör pini
int sensor = A5;
// Buton kodları
String buton_yukari = "E718FF00";
String buton_asagi = "AD52FF00";
String buton_sol = "F708FF00";
String buton_sag = "A55AFF00";
String buton_ok = "E31CFF00";
String kod, sonkod;
void setup() {
  Serial.begin(9600);
  IrReceiver.begin(sensor, 0);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(ena, OUTPUT);
  pinMode(enb, OUTPUT);
}
void ileri() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(ena, 255);
  analogWrite(enb, 255);
}
void geri() {
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(ena, 255);
  analogWrite(enb, 255);
}
void sag() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(ena, 172);
  analogWrite(enb, 244);
  delay(50);
}
void sol() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(ena, 244);
  analogWrite(enb, 172);
  delay(50);
}
void dur() {
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  analogWrite(ena, LOW);
  analogWrite(enb, LOW);
}
void loop() {
  if (IrReceiver.decode()) {
    kod = String(IrReceiver.decodedIRData.decodedRawData, HEX);
    if (kod != "0") {
      sonkod = kod;
    } else {
      kod = sonkod;
    }
    kod.toUpperCase();
    Serial.print("Okunan Kod: ");
    Serial.println(kod);
    if(kod == buton_yukari){ ileri(); }
    else if(kod == buton_asagi){ geri(); }
    else if(kod == buton_sag){ sag(); }
    else if(kod == buton_sol){ sol(); }
    else if(kod == buton_ok){ dur(); }
    else { dur(); }
    IrReceiver.resume();
  }
}

Şimdi bu kodda ben kumandamı tanımladım, üstünde ileri geri sağ sol ve ok var. Sağ sağa döndürücek sol sola döndürücek ileri ileri gittirecek geri ise geri gittirecek arabayı. OK'a basınca da duracak çünkü ileri geri sağ sol tuşlarından herhangi birine basınca motorlar sürekli hareket ediyor ok'a basınca duruyor. Ben sağa ve sola dönerken yavaş olsunlar diye pwm'i kıstım ama bu sefer de dur (OK) tuşu işe yaramadı. Ama ileri geri de çalışıyor onların pwm'i full, yani pwm'i kısınca ok tuşu çalışmıyor.
 
Motor sürücüsünde sorun olabilir. Void loop içerisini dönüp bir kaç saniye bekleyip dur komutu yapacak şekilde değiştirip deneyin bir de.
 

Technopat Haberler

Yeni konular

Geri
Yukarı