• 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

Praxisbericht Lichtsteuerung mit Arduino für RC Modell - Nachbauthema

danielegal

Mitglied
@danielegal
Hi Daniel, poste mal das Programm das Du benutzt, damit ich auch im richtigen Programm ändere. Am WE sollte ich etwas Zeit haben.
Hmm ja gute Frage
Bin mir da jetzt nicht mehr ganz sicher welcher das war.auf jeden Fall habe ich den von hier runtergeladen.
Ich meine MST_Rainer
Müsste ich später mal schauen.
Aber eigentlich ist es auch nicht mehr so wichtig habe jetzt endlich nach 5wochen mein tbs mini bekommen.habe damit absolut nicht mehr gerechnet.habe da aber schon das erste größere Problem.
Nur nach der Umstellung hier finde ich den Beitrag nicht mehr über Handy
 

danielegal

Mitglied
Code:
//MST Rainer
// by dqb312

int Gas;        //Variable für Gasstellung
int Lenk;        //Variable für Lenkung
int Schalt;        //Variable für Schaltkanal
int Dimm = 50;        //Variable Dimmer (Rücklicht und Fernlicht normal)
int Dimmrand = 15;      //Variable Dimmer (Rücklicht und Fernlicht Effekt)
boolean Blink = LOW;    //Variable für Blinker
int Wait = 3000;    //Zeit bis Warnblinker oder Blinker an geht
long Waitmillis = 0;    //Variable für Wartezeitermittlung, auf 0 für erste Verwendung
int Blinkspeed = 500;    //Blinkgeschwindigkeit
long Blinkmillis = 0;    //Variable zur Ermittlung der Blinkerschaltung, auf 0 für erste Verwendung
int Monitor = 1;        //Werte an seriellen Monitor senden (0=aus, 1=an)
long An = 0;            //Fernsteuerung aus?
int Gasup = 4;          //oberer Gaswert
int Gasdown = -4;       //unterer Gaswert
int randNumber;         //Variable für Zufallswert

void setup()
{
  if (Monitor==1)
  {
    Serial.begin(9600);    //startet Serielle Kommunikation
  }
  pinMode(0, INPUT);    //Rauschen empfangen
  pinMode(2, INPUT);    //Gas vom Empfänger
  pinMode(3, OUTPUT);    //Scheinwerfer
  pinMode(4, INPUT);    //Lenkung vom Empfänger
  pinMode(5, OUTPUT);    //Rücklicht
  pinMode(6, OUTPUT);    //Rücklicht
  pinMode(7, INPUT);    //Schaltkanal vom Empfänger
  pinMode(8, OUTPUT);    //Blinker links
  pinMode(9, OUTPUT);    //Blinker links
  pinMode(10, OUTPUT);    //drittes Bremslicht
  pinMode(11, OUTPUT);    //Scheinwerfer
  pinMode(12, OUTPUT);    //Blinker rechts
  pinMode(13, OUTPUT);    //Blinker rechts
  //pinMode(A0, OUTPUT);  //
  //pinMode(A1, OUTPUT);  //
  pinMode(A2, OUTPUT);  //Bremslicht
  pinMode(A3, OUTPUT);  //Bremslicht
  pinMode(A4, OUTPUT);  //Bremslicht
  pinMode(A5, OUTPUT);  //Bremslicht
}

void loop()
{
  An = millis();
  Gas = pulseIn(2, HIGH);    //PWM vom Empfänger messen Gas
  Lenk = pulseIn(4, HIGH);    //PWM vom Empfänger messen Lenkung
  Schalt = pulseIn(7, HIGH);    //PWM vom Empfänger messen Schaltkanal
  An = millis() - An;
  if (Monitor==1)
  {
    Serial.print(Gas);
    Serial.print("     ");
    Serial.print(Lenk);
    Serial.print("     ");
    Serial.print(Schalt);
    Serial.print("     ");
  }

  Gas = map(Gas, 890, 2074, -100, 100);        //Arbeitswerte erzeugen (die ersten beiden Werte aus min / max des Kanals ableiten)
  Lenk = map(Lenk, 890, 2074, 100, -100);    //Arbeitswerte erzeugen (die ersten beiden Werte aus min / max des Kanals ableiten)
  Schalt = map(Schalt, 890, 2074, 100, -100);    //Arbeitswerte erzeugen (die ersten beiden Werte aus min / max des Kanals ableiten)
  if (Monitor==1)
  {
    Serial.print(Gas);
    Serial.print("     ");
    Serial.print(Lenk);
    Serial.print("     ");
    Serial.println(Schalt);
  }

  if (An > 500)   //wenn die Funke aus ist
  {
    //alles aus
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(10, LOW);
    digitalWrite(8, LOW);
    digitalWrite(3, LOW);
    digitalWrite(11, LOW);
    digitalWrite(A2, LOW);
    digitalWrite(A3, LOW);
    digitalWrite(A4, LOW);
    digitalWrite(A5, LOW);
    //Blinker 3x blinken
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    delay(100);
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    delay(100);    
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    analogWrite(3, Dimm);
    analogWrite(5, Dimm);
    analogWrite(6, Dimm);
    digitalWrite(10, HIGH);
    analogWrite(11, Dimm);
    digitalWrite(A2, HIGH);
    digitalWrite(A3, HIGH);
    digitalWrite(A4, HIGH);
    digitalWrite(A5, HIGH);
    delay(100);
  }
  else    //wenn die Funke an ist
  {
    //Normales Licht
    if (Schalt > -70)
    {    
      //Scheinwerfer
      if (Schalt <= 70)
      {
        digitalWrite(3, HIGH);
        digitalWrite(11, HIGH);
      }
      else
      {
        digitalWrite(3, LOW);
        digitalWrite(11, LOW);
      }
      //Blinker
      if(Gas > Gasdown && Gas < Gasup)        //ausführen, wenn Gas im Neutralbereich ist
      {
        //Timer für Wartezeit vor Blinken
        if (millis() - Waitmillis > Wait)        //ausführen, wenn Timer für Wartezeit um ist
        {
          //Scheinwerfer dimmen
          if (Schalt <= 70)
          {
            analogWrite(3, Dimm);
            analogWrite(11, Dimm);
          }
          //Timer für Blinkfrequenz
          if (millis() - Blinkmillis > Blinkspeed)        //ausführen, wenn Blinktimer um ist
          { 
            Blinkmillis = millis();
            Blink = !Blink;
            if(Lenk >=-10)    //linker Blinker
            {
              digitalWrite(8, Blink);
              digitalWrite(9, Blink);
            }
            else
            {
              digitalWrite(8, LOW);
              digitalWrite(9, LOW);
            }
            if(Lenk <=10)    //rechter Blinker
            {
              digitalWrite(12, Blink);
              digitalWrite(13, Blink);
            }
            else
            {
              digitalWrite(12, LOW);
              digitalWrite(13, LOW);
            }
          }
        }
      }
      else    //ausführen, Wenn Gas nicht im Neutralbereich ist
      {
        digitalWrite(8, LOW);
        digitalWrite(9, LOW);
        digitalWrite(12, LOW);
        digitalWrite(13, LOW);
        Waitmillis = millis();   // aktuelle Zeit abspeichern
      }

      //Rücklicht
      if (Schalt <=70)
      {
        analogWrite(5, Dimm);
        analogWrite(6, Dimm);
      }
      else
      {
        analogWrite(5, 0);
        analogWrite(6, 0);
      }

      //Bremslicht
      if (Gas > Gasdown && Gas < Gasup)
      {

        digitalWrite(10, HIGH);
        digitalWrite(A2, HIGH);
        digitalWrite(A3, HIGH);
        digitalWrite(A4, HIGH);
        digitalWrite(A5, HIGH);
      }
      else
      {
        digitalWrite(10, LOW);
        digitalWrite(A2, LOW);
        digitalWrite(A3, LOW);
        digitalWrite(A4, LOW);
        digitalWrite(A5, LOW);
      }
    }
    else //Effektprogramm
    {
      delay(100);
      randNumber = random(0,2);
      if (randNumber > 0)
      {
        digitalWrite (3, HIGH);
        digitalWrite (11, HIGH);
      }
      else
      {
        analogWrite (3, Dimmrand);
        analogWrite (11, Dimmrand);
      }
      randNumber = random(0,2);
      if (randNumber > 0)
      {
        digitalWrite (5, HIGH);
        digitalWrite (6, HIGH);
      }
      else
      {
        analogWrite (5, Dimmrand);
        analogWrite (6, Dimmrand);
      }
      randNumber = random(0,2);
      if (randNumber > 0)
      {
        digitalWrite (8, HIGH);
        digitalWrite (9, HIGH);
        digitalWrite (12, HIGH);
        digitalWrite (13, HIGH);
      }
      else
      {
        digitalWrite (8, LOW);
        digitalWrite (9, LOW);
        digitalWrite (12, LOW);
        digitalWrite (13, LOW);
      }
      randNumber = random(0,2);
      if (randNumber > 0)
      {
        digitalWrite (10, HIGH);
        digitalWrite (A2, HIGH);
        digitalWrite (A3, HIGH);
        digitalWrite (A4, HIGH);
        digitalWrite (A5, HIGH);
      }
      else
      {
        digitalWrite (10, LOW);
        digitalWrite (A2, LOW);
        digitalWrite (A3, LOW);
        digitalWrite (A4, LOW);
        digitalWrite (A5, LOW);
      }
    }
  }
}
 

Kasi-Hasi

Moderator
Mitarbeiter
wenn ich das richtig sehe ist da ein Vorzeichenfehler. da steht lenk>=-10 und lenk <=10

das sollte eigtl <= -10 oder >= 10 sein, sonst blinkt der, wenn man nicht lenkt.
Hab aber jetzt nur grob drübergelesen...
 

BAXL

Admin
Mitarbeiter
Kasi Hasi hat ja schon was dazu geschrieben, würde ich aus dem Strand auch so sehen. Was Dir jetzt noch passieren kann ist, dass die Blinker falsch herum Blinken. Also Blinker links, wenn Du rechtsherum fährst und Blinker rechts wenn Du linksherum fährst.
Das liegt dann an folgender Zeile.

Lenk = map(Lenk, 890, 2074, 100, -100); //Arbeitswerte erzeugen (die ersten beiden Werte aus min / max des Kanals ableiten)

Wenn der Blinker falsch herum blinkt mußt Du die Zeile so ändern:

Lenk = map(Lenk, 890, 2074, -100, 100); //Arbeitswerte erzeugen (die ersten beiden Werte aus min / max des Kanals ableiten)
 

Kapehu

Mitglied
Hallo zusammen,

mein Name ist Klaus.

Ich habe dieses Forum angesehen.
Ich bastel auch gerade an einer Lichtsteuerung.
Hat jemand mal eine kleine Zeichnung der gesamten Spannungsversorung?
Also was schließe ich am Empfänger, am Fahrakku und wo?

Ich würde mich über eine Hilfe freuen

Gruß
Klaus
 

BAXL

Admin
Mitarbeiter
Hallo zusammen,

mein Name ist Klaus.

Ich habe dieses Forum angesehen.
Ich bastel auch gerade an einer Lichtsteuerung.
Hat jemand mal eine kleine Zeichnung der gesamten Spannungsversorung?
Also was schließe ich am Empfänger, am Fahrakku und wo?

Ich würde mich über eine Hilfe freuen

Gruß
Klaus
Guck mal hier https://www.rc-modellbau-portal.de/...rung-für-unter-5-eur-arduino.2231/post-508079

Ich male dir aber mal was.
 
Top Bottom