• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Baubericht Fpv summit mit Bordcomputer

LordSchinken

Mitglied
Hallo liebe community.
Ich bin gerade dabei mit ein Fpv summit aufzubauen. Und brauche HILFE aus dem kollektiv.


Verwendete Hardware:
FlySky gt3c
Dji digital fpv
Arduino headtracker mit dem nano 33ble
Und der summit natürlich.

Warum eröffne ich diesen Thread?
Ich bin nicht ganz so bewandert was arduino angeht und für mein Projekt, so wie ich es mir vorstelle, kommt man einfach nicht um einen micro controller herum.


Was stelle ich mir denn vor?

Eine lichtsteuerung
(mir ist wichtig das, dass bremslicht und Rückfahrtlicht authentisch dargestellt wird. Blinker über separaten 3 wege kippschalter, Schalter auf -100 blinker links, Schalter auf +100 blinker rechts, schalter einmal wild von -100 zu + 100 zu 0 für warnblinker)

Gyro bord um die Fahrzeug lage im Cockpit abzuschätzen.
( Im cockpit 4 LED wie ein Kreuz angeordnet oder Monitor aber 4 Led würden ihren zweck schon erfüllen.)

Hupe
(Auch über einen drei wege kippschalter, ähnlich wie blinker. -100 hup hup, +100 anderen sound, wild hin und her für den dritten sound.)

Servo Mischer
(Um Differentiale wie vorgesehen differenziert schalten zu können. Zusätzlich zwei Status LED für Feedback im cockpit)
Den servo mischer habe ich schon realisieren können aber das wars dann auch schon mit meinem Latein.

Ich hoffe ihr könnt mir bei meinem Bordcomputer helfen.
Vielen dank im voraus euer Schinken
 

Kasi-Hasi

Moderator
Mitarbeiter
Moin,

hab mal in meine Lichtsteuerung geguckt, wie ich das gemacht hab, ist schon ne Weile her. Ist auch nicht alles auf meinem Mist gewachsen.
Na jedenfalls musst du für Brems- und Rückfahrlicht den Fahrzustand und den vorherigen Fahrzustand ermitteln. Also Vorwärts - Neutral - rückwärts.

von (vorher) Vorwärts zu Neutral und (vorher) Vorwärts zu Rückwärts ist bremsen. Von (vorher) Neutral zu Rückwärts ist *tadaa* Rückwärtsfahrt. Damit kannst du dann entsprechend die LEDs einschalten.
Hier ist der Teil von meinem Code dafür:

//--- Brems- und Rückfahrlicht
//--------------------------------//

// Bremslicht beim Gas wegnehmen für definierte Zeit einschalten wenn aus Vorwärtsfahrt kommend (passives Bremsen)
if (motorStopped && prevDriveFW && Passives_Bremslicht==1) // wenn vor dem Stop aus Vorwärtsfahrt kommend...
{
fx_stopLightON(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht); // dann Bremslicht einschalten...
stopLightTimer = millis(); // und den Timer setzen.
}
if (Driving_FW) // Bremslicht aus wenn bereits wieder in Vorwärtsfahrt
fx_stopLightOFF(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);

// Flag für vorhergehende Vorwärtsfahrt setzen oder zurücksetzen (benötigt für Bremslicht einschalten bei Gaswegnahme)
if (Driving_FW)
prevDriveFW = true;
else
prevDriveFW = false;


// Variable für Bremslicht und Rückfahrscheinwerfer setzen. Verhalten angepasst an Hobbywing QuicRun 1625:
// - Beim ersten Rückwärtskommando nach Vorwärtsfahrt wird nur gebremst.
// - Erst beim zweiten Rückwärtskommando wird auch rückwärts gefahren.
// - Es wird auch rückwärts gefahren, wenn eine vorhergehende Rückwärtsfahrt nur durch Stillstand unterbrochen wurde.

if (Driving_BW && driveBWstatus == 0) // 1 = in aktiver Bremsphase
driveBWstatus = 1;
if (motorStopped && driveBWstatus >= 1) // 2 = gestoppt, aktive Bremsphase beendet
driveBWstatus = 2;
if (Driving_BW && driveBWstatus >= 2) // 3 = in Rückwärtsfahrt
driveBWstatus = 3;
if (Driving_FW) // 0 = (wieder) in Vorwärtsfahrt
driveBWstatus = 0;


// Beim aktiven Bremsen Bremslicht einschalten. Ausschalten nur bei abgelaufenen Timer.
if (driveBWstatus == 1)
fx_stopLightON(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);
else if (millis() - stopLightTimer > Stop_Light_Time && BremslichtState == true)
fx_stopLightOFF(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);


// Rückwärtsfahrt/Rückfahrlicht
//--------------------------------//
if (driveBWstatus == 3) // Rückfahrscheinwerfer einschalten
{
// if (FadeRunning[8] == 0 && LED_ID_Value[8] < FadeHighTargetValue[8])
// {
// FadeRunning[8] = 1; //FadeUp(=1) starten für Rückfahrlicht [8]
// FadeSequenzStart[8] = millis(); // Startzeit festlegen
// }
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtL], HIGH);
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtR], HIGH);
}
else // Rückfahrscheinwerfer ausschalten
{
// if (FadeRunning[8] == 0 && LED_ID_Value[8] > FadeLowTargetValue[8])
// {
// FadeRunning[8] = 2; //FadeDown(=2) starten für Rückfahrlicht [8]
// FadeSequenzStart[8] = millis(); // Startzeit festlegen
// }
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtL], LOW);
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtR], LOW);
} // Ende Rückfahrt



Alles was fx_ heißt sind die Funktionen, die die einzelnen LEDs aktivieren oder deaktivieren (oder ausfaden und so weiter). Wichtig hier ist vorallem prevDriveFW, also ob der vorherige Fahrzustand vorwärts war. Damit kann man dann unterscheiden und die LEDs setzen.
 

LordSchinken

Mitglied
hier mal mein code für den mischer. ich habe schon versucht die bremslicht geschichte einzubauen. aber habe das nur kopiert und nicht kapiert.
die Ansteuerung der diff servos und der status led habe ich mir selbst erarbeitet und folglich erweise verstehe ich das auch fast was ich da gemacht habe.



#include <Servo.h>

Servo Vorne;
Servo Hinten;


int Diff;
int Gas;
int Bremslicht=6;
int Ruckfahr= A1;
int Log1=0;
int Log2=0;


void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // Öffnet die serielle Schnittstelle und stellt die Datenrate auf 9600 Bit/s ein
Serial.println("Hallo du");


pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(A1, OUTPUT);
}


void loop(){

Serial.println(Gas);

// Bremse & Rückfahrscheinwerfer

Gas = pulseIn(3, HIGH);

if (Gas > 1540) { Log1 = 1 ;}
if (Gas < 1500 && Log1 == 1 ){ digitalWrite(6, HIGH); Log1 = 0; } //Brake
if (Gas > 1510 && Log1 == 0) {digitalWrite(6, LOW); Log2 = 1; }
if (Log2== 1 && Gas < 1500) { digitalWrite(A1, HIGH);}// RFLicht
if (Log2 == 1 && Gas > 1530 ) {digitalWrite(A1, LOW);Log2 = 0; }




// Differenzial sevos

Diff = pulseIn(2, HIGH);

if (Diff < 990)
{
Vorne.attach(9);
Vorne.write(20);
}
if (Diff > 1400)
{
Vorne.attach(9);
Vorne.write(150);
}

if (Diff < 1500)
{
Hinten.attach(10);
Hinten.write(40);
}
if (Diff > 1500)
{
Hinten.attach(10);
Hinten.write(130);

}

// differenzial status led

if (Diff <990)
{
digitalWrite(4, LOW);
}
else

{
digitalWrite(4, HIGH);
}

if (Diff > 1500)
{
digitalWrite(7, HIGH);
}
else

{
digitalWrite(7, LOW);
}



}
 

LordSchinken

Mitglied
Moin,

hab mal in meine Lichtsteuerung geguckt, wie ich das gemacht hab, ist schon ne Weile her. Ist auch nicht alles auf meinem Mist gewachsen.
Na jedenfalls musst du für Brems- und Rückfahrlicht den Fahrzustand und den vorherigen Fahrzustand ermitteln. Also Vorwärts - Neutral - rückwärts.

von (vorher) Vorwärts zu Neutral und (vorher) Vorwärts zu Rückwärts ist bremsen. Von (vorher) Neutral zu Rückwärts ist *tadaa* Rückwärtsfahrt. Damit kannst du dann entsprechend die LEDs einschalten.
Hier ist der Teil von meinem Code dafür:

//--- Brems- und Rückfahrlicht
//--------------------------------//

// Bremslicht beim Gas wegnehmen für definierte Zeit einschalten wenn aus Vorwärtsfahrt kommend (passives Bremsen)
if (motorStopped && prevDriveFW && Passives_Bremslicht==1) // wenn vor dem Stop aus Vorwärtsfahrt kommend...
{
fx_stopLightON(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht); // dann Bremslicht einschalten...
stopLightTimer = millis(); // und den Timer setzen.
}
if (Driving_FW) // Bremslicht aus wenn bereits wieder in Vorwärtsfahrt
fx_stopLightOFF(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);

// Flag für vorhergehende Vorwärtsfahrt setzen oder zurücksetzen (benötigt für Bremslicht einschalten bei Gaswegnahme)
if (Driving_FW)
prevDriveFW = true;
else
prevDriveFW = false;


// Variable für Bremslicht und Rückfahrscheinwerfer setzen. Verhalten angepasst an Hobbywing QuicRun 1625:
// - Beim ersten Rückwärtskommando nach Vorwärtsfahrt wird nur gebremst.
// - Erst beim zweiten Rückwärtskommando wird auch rückwärts gefahren.
// - Es wird auch rückwärts gefahren, wenn eine vorhergehende Rückwärtsfahrt nur durch Stillstand unterbrochen wurde.

if (Driving_BW && driveBWstatus == 0) // 1 = in aktiver Bremsphase
driveBWstatus = 1;
if (motorStopped && driveBWstatus >= 1) // 2 = gestoppt, aktive Bremsphase beendet
driveBWstatus = 2;
if (Driving_BW && driveBWstatus >= 2) // 3 = in Rückwärtsfahrt
driveBWstatus = 3;
if (Driving_FW) // 0 = (wieder) in Vorwärtsfahrt
driveBWstatus = 0;


// Beim aktiven Bremsen Bremslicht einschalten. Ausschalten nur bei abgelaufenen Timer.
if (driveBWstatus == 1)
fx_stopLightON(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);
else if (millis() - stopLightTimer > Stop_Light_Time && BremslichtState == true)
fx_stopLightOFF(Nr_LED_Bremslicht,Nr_LED_RueckBremslicht);


// Rückwärtsfahrt/Rückfahrlicht
//--------------------------------//
if (driveBWstatus == 3) // Rückfahrscheinwerfer einschalten
{
// if (FadeRunning[8] == 0 && LED_ID_Value[8] < FadeHighTargetValue[8])
// {
// FadeRunning[8] = 1; //FadeUp(=1) starten für Rückfahrlicht [8]
// FadeSequenzStart[8] = millis(); // Startzeit festlegen
// }
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtL], HIGH);
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtR], HIGH);
}
else // Rückfahrscheinwerfer ausschalten
{
// if (FadeRunning[8] == 0 && LED_ID_Value[8] > FadeLowTargetValue[8])
// {
// FadeRunning[8] = 2; //FadeDown(=2) starten für Rückfahrlicht [8]
// FadeSequenzStart[8] = millis(); // Startzeit festlegen
// }
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtL], LOW);
digitalWrite(Pin_LED_Array[Nr_LED_RueckfahrlichtR], LOW);
} // Ende Rückfahrt



Alles was fx_ heißt sind die Funktionen, die die einzelnen LEDs aktivieren oder deaktivieren (oder ausfaden und so weiter). Wichtig hier ist vorallem prevDriveFW, also ob der vorherige Fahrzustand vorwärts war. Damit kann man dann unterscheiden und die LEDs setzen.
ich werde das morgen mal in angriff nehmen, vielen dank für die schnelle antwort
 
Top Bottom