NRF Modül

Katılım
8 Eki 2024
Mesajlar
1
Puanları
1
Yaş
23
arkadaşlar ben nrf modül ile dc motor kontrolü yapacağım ama veri iletilmiyor ne yaptıysam başaramadım

verici kodu:
#include <SPI.h>
#include <RF24.h>
#include <RF24_config.h>
#include <nRF24L01.h>
// NRF24L01 ayarları
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "1Node"; // Adres
const int buttonForward = 2; // Buton 1
const int buttonBackward = 3; // Buton 2
// Buton durumları
int forwardButtonState = HIGH;
int backwardButtonState = HIGH;
void setup() {
pinMode(buttonForward, INPUT);
pinMode(buttonBackward, INPUT);
// Seri haberleşmeyi başlat
Serial.begin(9600);
Serial.println("Verici hazir, butona basili tutun...");
// NRF ayarları
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_HIGH);
}
void loop() {
char text[1]; // Veri gönderimi için bir dizi
// Buton durumlarını sürekli kontrol et
forwardButtonState = digitalRead(buttonForward);
backwardButtonState = digitalRead(buttonBackward);
// Motoru saat yönüne döndür
if (forwardButtonState == HIGH) {
text[0] = 'F'; // Saat yönü
radio.write(text, sizeof(text)); // Veri gönder
Serial.println("Motor saat yönünde dönüyor.");
}
// Motoru saat yönünün tersine döndür
else if (backwardButtonState == LOW) {
text[0] = 'B'; // Saat yönünün tersine
radio.write(text, sizeof(text)); // Veri gönder
Serial.println("Motor saat yönünün tersine dönüyor.");
}
// Motoru durdur
else {
text[0] = 'S'; // Motor dur
radio.write(text, sizeof(text)); // Veri gönder
Serial.println("Motor durdu.");
}
delay(100); // Gecikme
}



alıcı kodu:
#include <SPI.h>
#include <RF24.h>
// NRF24L01 ayarları
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "1Node"; // Adres
const int motorPin1 = 4; // IN1
const int motorPin2 = 5; // IN2
const int enablePin = 6; // ENA
unsigned long previousMillis = 0; // Son hata mesajı zamanı
const long interval = 1000; // Hata mesajı için 1 saniye aralık
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// Seri haberleşmeyi başlat
Serial.begin(9600);
Serial.println("Alıcı hazir, veri bekliyor...");
// NRF ayarları
radio.begin();
radio.openReadingPipe(1, address);
radio.setPALevel(RF24_PA_HIGH);
radio.startListening(); // Dinlemeye başla
}
void loop() {
// Eğer veri alınmışsa
if (radio.available()) {
char received[1];
radio.read(received, sizeof(received)); // Veriyi oku
// Alınan veriye göre motor kontrolü
switch (received[0]) {
case 'F': // Saat yönünde döndür
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(enablePin, 255); // Motoru saat yönünde döndür
Serial.println("Motor saat yönünde dönüyor.");
break;
case 'B': // Saat yönünün tersine döndür
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
analogWrite(enablePin, 255); // Motoru saat yönünün tersine döndür
Serial.println("Motor saat yönünün tersine dönüyor.");
break;
case 'S': // Motoru durdur
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(enablePin, 0); // Motoru durdur
Serial.println("Motor durdu.");
break;
default:
Serial.println("Geçersiz sinyal alındı.");
break;
}
// Hata mesajı zamanlayıcısını sıfırla
previousMillis = millis();
}
// Eğer veri yoksa hata mesajını kontrol et
else {
// Hata mesajı gönderme zamanı
if (millis() - previousMillis >= interval) {
Serial.println("Hata: Veri alınamadı.");
previousMillis = millis(); // Zamanlayıcıyı sıfırla
}
}
}


yardım edermisiniz bu konuda
 

Forum istatistikleri

Konular
129,477
Mesajlar
927,288
Kullanıcılar
452,048
Son üye
oğuzhanyldrm

Yeni konular

Geri
Üst