oner86
Üye
- Katılım
- 18 Mar 2024
- Mesajlar
- 7
- Puanları
- 1
- Yaş
- 38
Merhaba joystiği ve beyni arızalı bir tekerlekli sandalyeyi uzaktan kumanda ile hareket ettirmeye çalışıyorum.
Kullandığım parçalar ; 2 adet 250w 24v 13,4 ah dc fırçalı motor
2 adet BTS7960b motor sürücü kartı
2 adet 24v 24 ah jel akü
1 Flysky fs-i6x kumanda ve FS-IA6B algılayıcı
1 arduino uno
kullandığım arduino pinler
Kullanıdığım kod ise ;
// Motor sürücü kartları için pin atamaları
const int RPWM = 9; // Sağ motor için PWM pin
const int R_EN = 8; // Sağ motor için etkinleştirme pin
const int LPWM = 10; // Sol motor için PWM pin
const int L_EN = 7; // Sol motor için etkinleştirme pin
// Flysky FS-i6X vericisinden joystick sinyallerini okumak için pin atamaları
const int throttlePin = A0; // Gaz kontrolü için pin
const int directionPin = A1; // Yön kontrolü için pin
void setup() {
// Motor sürücü kartı pinlerini çıkış olarak ayarla
pinMode(RPWM, OUTPUT);
pinMode(R_EN, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(L_EN, OUTPUT);
// Gaz ve yön kontrolü pinlerini giriş olarak ayarla
pinMode(throttlePin, INPUT);
pinMode(directionPin, INPUT);
// Seri haberleşmeyi başlat
Serial.begin(9600);
}
void loop() {
// Gaz ve yön kontrol sinyallerini oku
int throttleValue = analogRead(throttlePin);
int directionValue = analogRead(directionPin);
// Gaz kontrol sinyalini sağ motor hızına dönüştür
int rightSpeed = map(throttleValue, 0, 1023, -255, 255);
// Yön kontrol sinyalini sol motor hızına dönüştür
int leftSpeed = map(directionValue, 0, 1023, -255, 255);
// Sağ motorun hızını kontrol et
if (rightSpeed >= 0) {
digitalWrite(R_EN, HIGH); // Sağ motoru etkinleştir
analogWrite(RPWM, rightSpeed); // Sağ motoru ileri yönde çalıştır
} else {
digitalWrite(R_EN, LOW); // Sağ motoru etkisiz hale getir
analogWrite(RPWM, -rightSpeed); // Sağ motoru geri yönde çalıştır
}
// Sol motorun hızını kontrol et
if (leftSpeed >= 0) {
digitalWrite(L_EN, HIGH); // Sol motoru etkinleştir
analogWrite(LPWM, leftSpeed); // Sol motoru ileri yönde çalıştır
} else {
digitalWrite(L_EN, LOW); // Sol motoru etkisiz hale getir
analogWrite(LPWM, -leftSpeed); // Sol motoru geri yönde çalıştır
}
// Verileri seri monitöre yazdır
Serial.print("Throttle: ");
Serial.print(throttleValue);
Serial.print(", Direction: ");
Serial.println(directionValue);
}
hatayı bir türlü bulamadım konu kusra bakmayın yeniyim paylaşımda hatalarım olduysa
Kullandığım parçalar ; 2 adet 250w 24v 13,4 ah dc fırçalı motor
2 adet BTS7960b motor sürücü kartı
2 adet 24v 24 ah jel akü
1 Flysky fs-i6x kumanda ve FS-IA6B algılayıcı
1 arduino uno
kullandığım arduino pinler
- Sağ Motorun RPWM pini: Arduino'nun 9. pinine
- Sol Motorun LPWM pini: Arduino'nun 10. pinine
- Her iki BTS7960 kartının R_EN ve L_EN pinleri: Sırasıyla Arduino'nun 8. ve 7. pinlerine
- Her iki BTS7960 kartının VCC (güç) pini: Arduino'nun 5V pinine veya harici bir güç kaynağına
- Her iki BTS7960 kartının gnd (toprak) pini: Arduino'nun GND pinine
- Flysky ı ise A0 ve A1 pinlerine
Kullanıdığım kod ise ;
// Motor sürücü kartları için pin atamaları
const int RPWM = 9; // Sağ motor için PWM pin
const int R_EN = 8; // Sağ motor için etkinleştirme pin
const int LPWM = 10; // Sol motor için PWM pin
const int L_EN = 7; // Sol motor için etkinleştirme pin
// Flysky FS-i6X vericisinden joystick sinyallerini okumak için pin atamaları
const int throttlePin = A0; // Gaz kontrolü için pin
const int directionPin = A1; // Yön kontrolü için pin
void setup() {
// Motor sürücü kartı pinlerini çıkış olarak ayarla
pinMode(RPWM, OUTPUT);
pinMode(R_EN, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(L_EN, OUTPUT);
// Gaz ve yön kontrolü pinlerini giriş olarak ayarla
pinMode(throttlePin, INPUT);
pinMode(directionPin, INPUT);
// Seri haberleşmeyi başlat
Serial.begin(9600);
}
void loop() {
// Gaz ve yön kontrol sinyallerini oku
int throttleValue = analogRead(throttlePin);
int directionValue = analogRead(directionPin);
// Gaz kontrol sinyalini sağ motor hızına dönüştür
int rightSpeed = map(throttleValue, 0, 1023, -255, 255);
// Yön kontrol sinyalini sol motor hızına dönüştür
int leftSpeed = map(directionValue, 0, 1023, -255, 255);
// Sağ motorun hızını kontrol et
if (rightSpeed >= 0) {
digitalWrite(R_EN, HIGH); // Sağ motoru etkinleştir
analogWrite(RPWM, rightSpeed); // Sağ motoru ileri yönde çalıştır
} else {
digitalWrite(R_EN, LOW); // Sağ motoru etkisiz hale getir
analogWrite(RPWM, -rightSpeed); // Sağ motoru geri yönde çalıştır
}
// Sol motorun hızını kontrol et
if (leftSpeed >= 0) {
digitalWrite(L_EN, HIGH); // Sol motoru etkinleştir
analogWrite(LPWM, leftSpeed); // Sol motoru ileri yönde çalıştır
} else {
digitalWrite(L_EN, LOW); // Sol motoru etkisiz hale getir
analogWrite(LPWM, -leftSpeed); // Sol motoru geri yönde çalıştır
}
// Verileri seri monitöre yazdır
Serial.print("Throttle: ");
Serial.print(throttleValue);
Serial.print(", Direction: ");
Serial.println(directionValue);
}
hatayı bir türlü bulamadım konu kusra bakmayın yeniyim paylaşımda hatalarım olduysa