SMARS Funkempfänger

nRF24NanoHinweis
GNDGND
VCC3.3V ❗
CED9
CSND10
MOSID11
MISOD12
SCKD13
Kondensator +3.3V10–100µF
Kondensator −GNDdirekt am Modul
L298NUNO
ENAD5
ENBD6
IN1D2
IN2D3
IN3D4
IN4D7

#include <SPI.h>
#include <RF24.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

#define ENA 5
#define ENB 6
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 7

unsigned long lastReceiveTime = 0;
byte currentCommand = 0;

void stopMotors() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
}

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

  radio.begin();
  radio.setPALevel(RF24_PA_MIN);
  radio.setDataRate(RF24_1MBPS);
  radio.setChannel(108);

  radio.openReadingPipe(0, address);
  radio.startListening();
}

void loop() {

  if (radio.available()) {
    radio.read(&currentCommand, sizeof(currentCommand));
    lastReceiveTime = millis();
  }

  // Failsafe: wenn 300ms nichts kommt → Stop
  if (millis() - lastReceiveTime > 300) {
    currentCommand = 0;
  }

  stopMotors();

  switch (currentCommand) {

    case 1: // Vorwärts
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENA, 200);
      analogWrite(ENB, 200);
      break;

    case 2: // Rückwärts
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENA, 200);
      analogWrite(ENB, 200);
      break;

    case 3: // Links
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENA, 200);
      analogWrite(ENB, 200);
      break;

    case 4: // Rechts
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENA, 200);
      analogWrite(ENB, 200);
      break;

    default:
      stopMotors();
      break;
  }
}

Schreibe einen Kommentar