• Die Forumsregeln und Nutzungsbedingungen findet ihr in der Navbar unter Impressum !
    Bitte unbedingt beachten!
    Wie überall im Leben gibt es Spielregeln, so auch hier!
    Die Datenschutzerklärung zum DSGVO findet ihr ebenfalls in der Navbar unter Datenschutzerklärung !
    Hinweis nach DSGVO :
    Es ist hier keinerlei Angabe erforderlich. Alle Angaben in diesem Bereich sind öffentlich sichtbar und werden freiwillig gemacht. Mit einem Eintrag in diesem Bereich erkenne ich dieses an, und bestätige die Datenschutzerklärung zur DSGVO für das Forum gelesen zu haben.

    Danke
  • Hallo Gast, beschränke dich hier bitte auf den Bereich der Elektronik. Die Fahrzeuge oder Gebäude, wo diese Elektronik eingebaut wird bitte in dem passenden Fachbereiich behandeln. Auch wenn Teile des Projektes dadurch im Forum doppelt vorhanden sind! Danke.

Arduino Lichtmodul mit vielen Funktionen, realer Blinker, verzögerungsabhängigem Bremslicht..

Moin Maik,

manchmal kann die Lösung so einfach sein... :D

Ich bin auf deine Schaltung gespannt, poste mal ein paar Bilder... ;)
 
.....

@Winni
Auf einen Pro Mini müßte ich den Sketch eigentlich schon hochgeladen bekommen haben, jedoch weiß ich nicht, ob es eine 3,3V oder 5V Version ist. :frage
............
Herzliche Grüße von
Maik

Hallo Maik,
du musst das auf den Bildern mit einem roten Pfeil gekennzeichnete Bauelement suchen und schauen ob da irgendwas mit
850 oder 833 oder ähnliches draufsteht.

Die 850 ist der 5 Volt Regler und die 833 der 3,3 Volt Regler.
Abgesehen davon kannst du sie aber beide einfach mit 12 Volt betreiben wenn du Minus auf GND schaltest und Plus 12 Volt auf RAW schaltest. Dann liegen an VCC entweder 5 Volt oder aber 3,3 Volt an.

Somit kannst du auch so durch messen der Spannung feststellen welcher für 5 oder 3,3 Volt ist.

833.jpg

850.jpg
 
Hallo zusammen,

heute nun habe ich endlich meine kleine Testschaltung mit einem Nano, Widerständen und ein paar "bunten" LED's auf einem Breadboard aufgebaut und bin überaus zufrieden: ES funktioniert!!! :ok
Ist es "normal", daß die RKL Dauerlicht gibt und nicht blinkt??? :frage


@Winni:
Bei den beiden Pro Mini's habe ich nun, dank Deiner Hilfe mit den Fotos, zuordnen können, welcher der 5V- und welcher der 3,3V-Typ ist. - Ich konnte nur bei einem "850" lesen, also muß der, bei dem man auch unter der Lupenlampe keine Bezeichnung lesen kann, der 3,3V-Typ sein.:hfg

Herzliche Grüße von
Maik
 
Nochmal zum ULN 2803A; dieser hat den Vorteil das er direkt mit der Eingangsseite auf die Ausgangseite vom Arduino zu löten ist. Dazu noch Masse und fertig.
Ich gebe aber zu das ich bisher auch immer Transistoren verwendet habe; das mit dem ULN 2803A habe ich diesmal das erste Mal umgesetzt.

Viele Grüße
Holger

Hallo,

besteht die Möglichkeit, die Verwendung des ULN2803A ggf. in einem eigenen Thema näher zu erläutern?

Ich möchte versuchen, den Bruder Xerion mit einer Beleuchtung aufbauend auf Winni seinem oben dargestellten Lichtmodul auszurüsten. Bei ca. 12 Arbeitsscheinwerfern käme mir die Lösung mit dem ULN 2803A gerade recht.
 
Hallo zusammen

Hab mir vor kurzem dieses Teil hier bestellt und bin zufällig auf diesen Bericht gestoßen. Wollte fragen ob das auf dem Teil auch geht?

20191116_180105.jpg

Da ich auf dem Gebiet Null Ahnung habe, wollte ich fragen ob Ihr vielleicht einen Plan beifügen könntet wie man das jetzt alles verdrahten muss.

:thx schon im Vorfeld
 
Hallo Markus,

bei Null Ahnung sieh dir einfach ein paar Youtube Videos an, da wird vieles Erklärt.
Pinbelegung steht übrigens in Beitragt 1 unten :hfg
 
Hi Bert,

Die Belegung hab ich schon gesehen, wollte nur wissen welches Signal vom Empfänger der rc Anlage da drauf mus? Da wird dann einfach das Signal von einem Ausgang parallel abgezweigt oder wie macht ihr das? Oder einen freien Ausgang der in der rc Anlage gleich dem anderen Ausgang geschalten ist?
 
das Signal kann parallel abgegriffen werden, aber für z.B. Lichtfunktion nimmt man dann einen eigenen Kanal.
Steht aber alles in der Beschreibung der Software.
 
Der Versuchsaufbau funktioniert so weit, nur wie geht der Blinker wieder aus mit dem lenkkanal? Wo muss der angeschlossen werden?

20191117_082307.jpg
 
siehe Beitrag #!

Blinklicht rechts - links mit Fahrhebel Kanal 4 nach rechts und links ein- und ausschaltbar. Tippfunktion unter 1 Sek. Dauer.
Blinklicht Seite bei eingeschaltetem Blinklicht wechselbar. Tippfunktion unter 1 Sek. Dauer.
Blinklicht nur durch Blinkerhebel oder Lenkungsrückstellung (wie beim original PKW) ausschaltbar.
Dazu muss ein Mindestrückstellwert in Richtung geradeaus erfolgen. Bei kleineren Lenkausschlägen bleiben die
Blinker an.
Warnblinkanlage schaltet keine Blinkereinstellung ab. Der Blinkerstatus wird beim Einschalten
der Warnblinkanlage gespeichert, und nach dem Ausschalten wiederhergestellt.
Warnblinkanlage mit Fahrhebel Kanal 4 mehr als 1,0 Sekunden nach links halten jeder Zeit einschaltbar.
Warnblinkanlage ausschalten durch erneutes 1,0 Sekunden langes Betätigen des Fahrhebels Kanal 4 nach links.
 
:thx Bert

So wie ich das jetzt verstanden hab wird ein mechanischer Schalter in der Lenkung benötigt um den gestarteten Blinker wieder aus zu schalten, weil ja der Ausgang vom Empfänger für den Lenk Servo nicht mit überwacht wird bei dem Arduino UNO, der Schalter geht dann auf Pin 8. Bin ich da jetzt richtig :frage:frage
 
Hallo Markus,

an Pin 8 kommt parallel das Lenkservo Signal. Also keine extra Schalter, der Empfänger Ausgang vom Lenkservo wird mit überwacht.

Oder man lässt Pin 8 frei und schaltet den Blinker per Tastfunktion händisch wieder aus. Das bevorzuge ich im Modell.
 
:thx milan

jetzt hab ich´s gecheckt, hab grad getestet. Jetzt geht alles .


:thx:thx an alle :ok
 
Hallo zusammen bräuchte nochmal eure Hilfe,
würde gerne noch einen Rückfahr Pieper parallel zum Rücklicht schalten, wenn das ein ist. Würde den Pin 7 als OUTPUT machen und daran den Pieper hängen.

wo muss ich das dann machen und was muss da alles geändert werden,

const byte piep = 7;

--------------------------------------

pinMode (piep, OUTPUT);

--------------------------------------

if (rfsch == LOW)
{
digitalWrite (piep, HIGH);
delay 500
digitalWrite (piep, LOW);
delay 500
}
 
Erst mal danke an Bert und Milan :thx dass ihr Markus da geholfen habt. Ich war drei Tage nicht da.
Als nächstes noch "Sorry an alle für die vielen Schreibfehler im Programm-Text. Zum einen war meine Tastatur zu der Zeit eine defekte Katastrophe und zum anderen war ich wohl nachts um 1 Uhr auch nicht mehr so ganz frisch dabei :mama, um die Fehler alle zu bemerken. Ich habe heute alle die ich im Programmtext gefunden habe beseitigt.

So und jetzt zur Sache.
Es freut mich sehr Markus, dass jemand Interesse am Code zeigt und diese Lichtanlage benutzen möchte.
Wenn du Rückfahrwarner (Pieper) an die Schaltung anschließen möchtest, dann wäre folgendes zu ändern.

Unter Anschlussbelegungen:
[DS]// * Pin 7 Eingang für externe RKL-Einschaltung (max.40 mA) [/DS]
entfernen und durch
// * Pin 7 Ausgang für Rückfahrwarner (Pieper) (max.40 mA)
ersetzen.

Unter Pinbelegung - Constante Variablen Deklaration
[DS]const byte RKL_in = 7; // Eingang für externe RKL-Einschaltung [/DS]
entfernen und durch
const byte piep = 7; // Ausgang für Rückfahrwarner
ersetzen

Unter void setup:
[DS]pinMode(RKL_in, INPUT); // Pin 7 externer Einschalteingang für die Rundumkennleuchte [/DS]
entfernen und durch
pinMode(piep, OUTPUT); // Pin 7 Ausgang für Rückfahrwarner (Pieper) max. 40 mA!
ersetzen.
[DS]digitalWrite(RKL_in, HIGH); // hier wird der interne Pull-up Widerstand an Pin 7 eingeschaltet[/DS]
entfernen und durch
digitalWrite(piep, HIGH); // hier wird der interne Pull-up Widerstand an Pin 7 eingeschaltet
ersetzen

Code void rkltest:
[DS]void rkltest()
{
RKLE = digitalRead(RKL_in); // Rundumkennleuchten-Eingang abfragen
if (RKLE == LOW) // Wenn der Eingang LOW ist (Minus auf dem Eingang liegt):
{
if (rklof != 1) // Wenn die Rundumkennleuchte nicht eingeschaltet ist
{
rklon = 0; // RKL-Flag auf aus setzen
Licht_ein(rkl); // Rundumkennleuchte einschalten
delay(1000); // 1 Sekunde warten (Keine Bedeutung, nur optisch)
alon = 1; // Flag für Arbeitslicht "ein" auf "ein" setzen
Licht_ein(al); // Arbeitsleuchte einschalten
}
}
}[/DS]
entfällt komplett.
und wird ersetzt durch
void rfschtest()
{
if (rfsch == LOW)
{
digitalWrite (piep, LOW);
delay (500);
digitalWrite (piep, HIGH);
delay (500) ;
}
}
und in void loop():
[DS] rkltest(); // Prüfen ob RKL von extern eingeschaltet ist + eventuell RKL und Arbeitsscheinwerfer einschalten[/DS]
entfernen und durch
rfschtest(); // Prüfen ob Rückfahrscheinwerfer eingeschaltet ist, und wenn ja, dann Pieperintervall einschalten.
ersetzen

Ansonsten ist dein Code generell gesehen o.k, aber du solltest wie von mir eingesetzt die beiden Funktionzeilen
digitalWrite (piep, HIGH);
delay (500);
digitalWrite (piep, LOW);
delay (500);
in der Reihenfolge tauschen, da es sonst zeitweise dazu kommt, dass der Pieper beim ausschalten des Rückfahrscheinwerfers an bleibt.
Denn, wenn "rfsch" nicht mehr LOW ist, ist deine IF-Bedingung nicht mehr gegeben und es kommt zu keinem Durchlauf der Routine die den Pieper wieder auf HIGH setzt.
Außerdem gilt es zu bedenken, dass dein Code die Routine komplett in jedem Programmdurchlauf um eine Sekunde ausbremst. Sprich alle Funktionen und auch die Reaktionen werden eine Sekunde langsamer.
Sprich Blinklicht verlangsamt sich! Reaktion auf ein oder Ausschaltfunktion verzögern sich unter Umständen um 1 Sekunde.
Die eine Sekunde die im RKL-Test vorhanden war spielte keine Rolle, da sie nie bei fahrendem Fahrzeug zur Anwendung kam.
Ich würde hier dazu raten die Zeit für den Pieperintervall über eine Zählung der Millisekunden (millis) zu erzeugen.

Der Pieper muss feste an Plus angeschlossen sein und Minus geschaltet werden. (aktiv = LOW)
 
:thx Winni für die ausführliche Erklärung

Ich habe heute alle die ich im Programmtext gefunden habe beseitigt.

@ ist der Sketch den du eingestellt hast jetzt ohne Rechtschreibfehler jetzt?

Ich würde hier dazu raten die Zeit für den Pieperintervall über eine Zählung der Millisekunden (millis) zu erzeugen.

@ Wie wird so was gemacht, so weit bin ich noch nicht mit der Programmiersprache. Bis jetzt hab ich mich nur mit einfachen Sachen beschäftigt und die Schaltungen aufgebaut auf den Breadboard und den Sketch geschrieben und getestet

Der Pieper muss feste an Plus angeschlossen sein und Minus geschaltet werden. (aktiv = LOW)

@ hab ich schon so angeschlossen

:thx Winni und an alle die an diesen Sketch mitgeholfen haben und :thx das er hier für jeden zur Verfügung steht (Privat Verbrauch):ok
 
Hab mir diese Teile besorgt und bekomme die Teile nicht zum laufen

20191119_200934.jpg

Schaff es nicht irgendwas drauf zu laden, bekomm keine Verbindung zu dem Teil. Könnte mir da einer von euch weiterhelfen?

:thx schon im Vorfeld
 
Hab´s geschafft jetzt, die Teile gehen jetzt. Gott sei Dank

musste auf den älteren Bootloader umstellen jetzt geht´s
 
Hallo Markus,

ein Tip von mir: mach dir Screenshots oder druck dir Seiten aus
Das gibt viele kleine Dinge die man leicht vergisst. Ich habe mir für die verschiedenen Boards die Konfigurationen der Schnittstellen, Bootloader, Pinbelegung... ausgedruckt.
Wenn ich mal wieder was habe kann ich schnell nachsehen.
Speicher dir keine Informationen im Arduinoverzeichnis direkt ab. Mach ein neues Hauptverzeichnis z.B. "Arduino Daten"
Wenn du eine neue Version der Arduino IDE installierst wird das "Arduino" Verzeichnis komplett gelöscht!
 
Hallo Markus.

Schön, dass es jetzt funktioniert.
Ich würde hier dazu raten die Zeit für den Pieperintervall über eine Zählung der Millisekunden (millis) zu erzeugen.

@ Wie wird so was gemacht, so weit bin ich noch nicht mit der Programmiersprache. Bis jetzt hab ich mich nur mit einfachen Sachen beschäftigt und die Schaltungen aufgebaut auf den Breadboard und den Sketch geschrieben und getestet

Ich mach dir den Code die Tage fertig. Ich muss da aber selbst aufpassen, dass es keine Konflikte und Fehler gibt, da ich in dem Programm schon oft (millis) zähle. Da hat man schnell mal mit dem falschen Variabel-Namen ein Caos rein gebracht.

Im Prinzip läuft das einfach so, hier in diesem Beispiel wird der Text "Hallo World" und die Millisekunden ohne delay 5 sekundenweise auf dem Monitor ein und ausgeschaltet:
Code:
//Konstante für die Pause, hier 5 sek.
const int PAUSE = 5000; 
//Variable zum speichern des Zeitstempels der letzten Ausführung.
long lastActionTime = -1; 
void setup() {
  //Beginn der seriellen Kommunikation mit 9600 baud.
  Serial.begin(9600);
}
void loop() {
  //Speichern der Zeit in Millisekunden seit
  //dem Start / Reset des Arduinos.
  long currentMillis = millis();
  //Wenn der Zeitstempel der letzten Ausführung kleiner als der aktuelle
  //Zeitstempel minus der Pause ist dann soll der Code ausgeführt werden.
  if(lastActionTime<(currentMillis-PAUSE)){
    //Überschreiben des alten Zeitstempels mit dem neuen Wert.
    lastActionTime = currentMillis;
    //Ausgabe einer Zeichenkette auf dem seriellen Ausgang.
    Serial.print("[");
    Serial.print(currentMillis);
    Serial.print("] ");
    Serial.println("Hallo Welt!");
  }
}
 
:thx Bert für den Tip, werde ich heute noch gleich machen

:thx Winni, für die Hilfe.

Hab gestern das noch abgeändert wegen dem Pieper, leider funktioniert es nicht.
Der Pieper geht nicht mit an, die Verdrahtung passt. Hab ihn mal parallel zum Rücklicht geklemmt da geht er so lang das Rücklicht leuchtet.
Hab noch zwei Fehler gefunden bei delay haben die ; gefehlt.

Anhang anzeigen winni_bel_arduino.txt

hier mal der Code den ich jetzt drauf hab
 
Hallo Markus,
ich muss mal schauen, kann sein dass da ein Denkfehler vorliegt und der Einstiegspunkt für die Abfrage "if rfsch == LOW" nicht an der richtigen Stelle ist. Lang ist´s her und einiges aus dem Kopf. Daran siehst du wie wichtig die Dokumentation ist.
 
Moin Winni,

Softwareentwickler haben es nicht so mit der Dokumentation, das ist ganz normal... :D

Ich kann ja auch mal rein schauen, Markus hat ja die letzte Version gepostet.
 
Moin Markus,
moin Winni,

warum wird der Pullup Wiederstand des Ausgangs für den Pieper hochgezogen? Ist Pin7 nicht der Pluspol und der Pieper dann auf Masse geschaltet?

Code:
void setup()
{
	PCICR  |= (1 << PCIE2);                 //  Interrupt Port D aktivieren
	PCMSK2 |= (1 << PCINT18);               //  Interrupts fuer Pins 2 aktivieren
	sei();
	attachInterrupt( 1, LightPositionInterrupt, CHANGE);
	//---------------------------------------------------------------------------------------------------------------
	pinMode(pw, INPUT);                     // Pin 2 Input für Interrupt RC-Empfängersignal Kanal 2 (Gas)
	digitalWrite(pw, HIGH);                 // hier wird der interne Pull-up Widerstand an Pin 2 eingeschaltet
	pinMode(PIN_RC, INPUT);                 // Pin 3 Input für Interrupt RC-Empfängersignal Kanal 4 (Licht)
	digitalWrite(PIN_RC, HIGH);             // hier wird der interne Pull-up Widerstand an Pin 3 eingeschaltet
	pinMode(rfsch, OUTPUT);                 // Pin 4 Output für Rückfahrscheinwerfer
	pinMode(brakelight, OUTPUT);            // Pin 5 Output für Bremslicht
	pinMode(headlight, OUTPUT);             // Pin 6 Output für Fahrlicht
	pinMode(light, OUTPUT);                 // Pin 9 Output für Standlicht
	pinMode(lenk_in, INPUT);                // Pin 8 zur Zeit unbenutzt
	digitalWrite(lenk_in, HIGH);            // hier wird der interne Pull-up Widerstand an Pin 8 eingeschaltet
	pinMode(piep, OUTPUT);                  // Pin 7 Ausgang für Rückfahrwarner (Pieper) max. 40 mA!

//---- Ist das so gewollt ?
	digitalWrite(piep, HIGH);               // hier wird der interne Pull-up Widerstand an Pin 9 eingeschaltet
//---- ???
	pinMode(bl, OUTPUT);                    // Pin 10 Output für Blinklicht links
	pinMode(br, OUTPUT);                    // Pin 11 Output für Blinklicht rechts
	pinMode(rkl, OUTPUT);                   // Pin 12 Output für Rundumkennleuchten
	pinMode (al, OUTPUT);                   // Pin 13 Output für interne LED und Arbeitsscheinwerfer
 
Nee Peter,
hast recht, die Zeile muss weg!
Und pin 9 ist eh ein Tippfehler :angry der so von der Originalversion übernommen wurde. Ist pin 7.
Aber wie gesagt, ganze Zeile muss weg.

Pin 7 ist aktiv LOW. Der Pieper muss dann an den Pluspol angeschlossen sein. (Wie im Modellbau üblich)
Ich muss aber mal gucken ob der Rückfahrscheinwerfer auch wirklich aktiv LOW war. Ich hab das was im hinterstübchen, dass irgendeine Lampe aktiv HIGH war. :frage:ghost

Ich habe das Programm bei mir ausgedruckt dokumentiert, nachdem ich bei meiner Funkampel und dem Leitanhänger irgendwann gar nicht mehr durchgeblickt hatte, aber ich muss mich trotzdem erst wieder reinfinden. :hm?
 

Servonaut
Zurück
Oben Unten