Hallo zusammen,
ich versuche ein ferngesteuertes Auto ohne Fernbedienung lauffähig zu machen. Ich habe mich viel an dem unten angefügten Youtube Video orientiert.
Das Auto lässt sich bereits fernsteuern.
Da bisher geringe bis keine Programmkenntnisse vorhanden sind, orientiere ich mich an andere Programmschnipseln.
- Ich hätte gerne die Möglichkeit, dasss das Auto stoppt, sollte die Funkverbindung abreißen. Sollte die Verbindung abbrechen, muss meiner Meinung nach das folgende Unterprogramm ausgeführt werden.
void stop()
{
analogWrite(ena, 0);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(in5, LOW);
digitalWrite(in6, LOW);
}
- Ich hätte noch eine allgemeine Verständnisfrage. Der Sender (Fernbedienung) sowie der Empfänger (Auto) haben bei die Adresse 0xE8E8F0F0E1LL. Kann ich diese Adresse individuell ändern?
#include <SPI.h>
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
int data;
int pos;
int motorSpeedF;
int motorSpeedB;
int left1;
int right1;
const int in1 = 7;
const int in2 = 8;
const int in3 = 4;
const int in4 = 2;
const int in5 = 3;
const int in6 = 6;
const int ena = 5; // PWM pin to change speed
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(ena, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available())radio.read(msg, 1);
if (msg[0] >=128 && msg[0] <=185)data = msg[0], motorSpeedB = map(data, 185, 128, 0, 255), backward(motorSpeedB);
if (msg[0] >=201 && msg[0] <=255)data = msg[0], motorSpeedF = map(data, 201, 255, 0, 255), forward(motorSpeedF);
if (msg[0] >=0 && msg[0] <=60)data = msg[0], left1 = map(data, 60, 0, 0, 255), left();
if (msg[0] >=65 && msg[0] <=127)data = msg[0], right1 = map(data, 65, 127, 0, 255), right();
if (msg[0] >185 && msg[0] <200)data = msg[0], stop();
}
void stop()
{
analogWrite(ena, 0);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(in5, LOW);
digitalWrite(in6, LOW);
}
void forward(int motorSpeedF)
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(ena, motorSpeedF);
}
void backward(int motorSpeedB)
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(ena, motorSpeedB);
}
void left()
{
digitalWrite(in5, HIGH);
digitalWrite(in6, LOW);
}
void right()
{
digitalWrite(in5, LOW);
digitalWrite(in6, HIGH);
}