• 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 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.

Danke. :THX das ist nett von Dir.
 
..................

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 gerade durchgesehen. Rückfahrscheinwerfer ist "aktiv LOW". Es war der Arbeitsscheinwerfer der aus einem bestimmten Grund "aktiv HIGH" ist.

@ Markus.
Für wieviel Volt ist der Pieper vom Hersteller gedacht? Und weißt du wie hoch die Stromaufnahme ist?
 
:thx euch beiden für eure Hilfe

Winni das ist das Teil

20191121_055459.jpg

Und ist von dem Kasten hier?

20191121_055547.jpg
 
Also ich hab mal die besagte Zeile gelöscht.

Dann hab ich dauer piepen am Pieper und es geht nicht aus, also wird wahrscheinlich die Zeile benötigt. Weil ja der Pieper Minus schaltend ist.
Müsste dann an meiner if schleife liegen, irgendwie weiß ich nicht mehr weiter. :frage:frage
 
Hallo Markus,
wenn ich das richtig sehe ist in dem Kasten alles Arduino Zubehör. Also sollte er Arduino tauglich sein.
Aber fast alle Piezzo-Schalwandler werden mit Wechselspannung betrieben. Es gibt welche die mit 5 Volt Gleichspannung arbeiten, Z.B. bei Reichelt, die haben dann den Chip zur Frequenzerzeugung an Bord.
Deiner dürfte an 5 Volt Gleichspannung nicht funktionieren. Kannst du ja mal testen.
Er arbeitet am Rücklicht deshalb, weil am Rücklicht ein PWM-Signal zur Erzeugung der unterschiedlichen Leuchtstärke von Rück-und Bremslicht anliegt. Das ist eine Wechselspannung mit Rechtecksignal statt Sinus, aber eben eine Wechselspannung. Für deinen Anschluss brauchst du aber einen der mit 5 Volt Gleichspannung funktioniert.
 
Hallo,

im Sommer habe ich die Lichtanlage ebenfalls ausprobiert. Bisher allerdings noch nirgends eingebaut.

Ich wollte damals die Programmzeilen so modifizieren, dass ein zweiter Arduino via Serielle Schnittstelle eine Zahl bekommt und entsprechend als Slave mit läuft.
Der Gedanke war mit einer Daten-Ader + Stromversorgung einen Anhänger und/oder die Rückleuchten in einem größeren Fahrzeug anzusteuern.
Irgendwie funktionierte es leider nicht ganz so wie ich mir es dachte. Unter anderem viel zu träge ...
Der nächste Test wäre dann gewesen, die Übertragungsgeschwindigkeit zu erhöhen, aber dann war die freie Zeit erst einmal vorbei. Jetzt frage ich mal ganz dumm, die Serielle Schnittelle müsste doch eigentlich von der Geschwindigkeit reichen - oder?

Soviel ich noch gefunden habe, hatte ich folgendes eingebaut. Ist allerdings schon wieder ein paar Monate her.

unsigned long slavevalue = B00000; // Variabele welche an Slave Anlage gesendet wird
unsigned long slavevaluetmp; // Variabele welche an Slave Anlage gesendet wird
// slavevalue Binaer: bl br light brakelight rfsch
// 1 2 4 8 16

Serial.begin(9600); // Uebertragung an zweite Anlage
Serial.write(B11111);

delay(1500); // Wartezeit auf Empfänger Initialisierung
Serial.write(B00000);


void serial_write()
{
//slavevalue = 0; // Variabele welche an Slave Anlage gesendet wird
// slavevalue Binaer: bl br light brakelight rfsch
// 1 2 4 8 16
slavevaluetmp = slavevalue;
if (slavevaluetmp != slavevalue)
{
slavevalue = blon + (bron * 2) + (light_on * 4) + (brakelight_on * 8) + (rfsch_on * 16);
Serial.write(slavevalue);
}
}



# Für den Empfänger
###
//Receiver Code
int incomingByte = 0; // for incoming serial data

const byte rfsch = 4; // Pin für Rückfahrscheinwerfer
const byte brakelight = 5; // Pin für Bremslicht und Rücklicht mit PWM
const byte light = 9; // Pin für Licht
const byte bl = 10; // Pin Blinker links
const byte br = 11; // Pin Blinker rechts

// Binaer: bl br light brakelight rfsch
// 1 2 4 8 16


void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(LED_GRUEN, OUTPUT);

pinMode(rfsch, OUTPUT); // Pin 4 Output für Rückfahrscheinwerfer
pinMode(brakelight, OUTPUT); // Pin 5 Output für Bremslicht
pinMode(light, OUTPUT); // Pin 9 Output für Standlicht
pinMode(bl, OUTPUT); // Pin 10 Output für Blinklicht links
pinMode(br, OUTPUT); // Pin 11 Output für Blinklicht rechts

delay(1500); // Wartezeit auf Empfänger Initialisierung
digitalWrite(light, LOW); // Standlicht im Setup einschalten
digitalWrite(br, LOW); // Blinklicht rechts im Setup einschalten
digitalWrite(bl, LOW); // Blinklicht links im Setup einschalten
digitalWrite(rfsch, LOW); // Rücfahrscheinwerfer im Setup einschalten
digitalWrite(brakelight, LOW); // Bremsleuchten im Setup einschalten
delay(1000); // Eine Sekunde Warteseit im Setup zur Lampenkontrolle
digitalWrite(light, HIGH); // Standlicht nach dem Setup ausschalten
digitalWrite(br, HIGH); // Blinklicht rechts nach dem Setup ausschalten
digitalWrite(bl, HIGH); // Blinklicht links nach dem Setup ausschalten
digitalWrite(rfsch, HIGH); // Rückfahrscheinwerfer nach dem Setup ausschalten
digitalWrite(brakelight, HIGH); // Bremsleuchten nach dem Setup ausschalten
}

void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();

// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
if(incomingByte==87){
digitalWrite(LED_GRUEN, LOW);
}
if(incomingByte==0){
digitalWrite(LED_GRUEN, HIGH);
}

for (int incomingByte = 0; incomingByte < 255; incomingByte++); {
int a = incomingByte % 2; // LSB berechnen (Least Significant Bit)
int b = incomingByte / 2 % 2; // Der Modulo Operator % liefert die Restmenge einer Division. z. B. 5 % 2 = 1
int c = incomingByte / 4 % 2;
int d = incomingByte / 8 % 2;
int e = incomingByte / 16 % 2;

digitalWrite(rfsch, e);
digitalWrite(brakelight, d);
digitalWrite(light, c);
digitalWrite(br, b);
digitalWrite(bl, a);

}
}
 
O.K. gerade erst gesehen, dass er an Gleichspannung wohl piept. Damit ist meine Erklärung nicht zutreffend. Ich habe leider keinen Piezzowandler zum testen hier. Ich muss also nur rein logisch eine Erklärung finden.
 
@ Milan
Sollte schnell genug sein. Du kannst sie ja bis 115200 Baud erhöhen.
 
Markus,
schließe doch bitte an den Pin 7 eine LED mit Vorwiderstand an und gucke ob die auch dauerleuchtet.
Ich warte auf deine Antwort.
 
Markus hast du schon mal mit dem seriellen Monitor vom Arduino gearbeitet?
 
Hi Winni, wenn ich die Zeile lösche dann leuchtet die LED dauert. Mit der Zeile ist Sie aus.

Nein hab ich noch nicht gearbeitet mit dem Monitor, warum willst du das wissen?
 
Weil der Monitor sehr gut geeignet ist um Fehler im Ablauf zu lokalisieren.
Dazu nimmtst Du im Setup die zwei // weg. Somit wird die serielle Schnittstelle nach dem Programmstart über den Befehl Serial.begin(57600); für den Monitor aktiv. Dann den Monitor mit der Tastenkombination SHIFT STRG m oder dem Lupensymbol oben rechts im Programmeditor starten und unten rechts im Monitorfenster den Wert der Übertragungsrate von 9600 auf 57600 ändern und das Monitorfenster danach wieder schließen.
Nun kann man z.B. in Void rfschtest() in die If-Routine hinter if (rfsch == LOW)
{
in zwei Zeilen einfügen die da lauten:
Serial.println ("piep an");
Serial.println (" ");

Nach dem Programmstart startest du nun sofort den Monitor mit SHIFT STRG m oder dem Lupensymbol oben rechts im Programmeditor.
Läuft nun das Programm durch die If -Bedingung erscheint der Text piep an bei jedem Durchlauf. wird die If-Bedingung nicht mehr durchlaufen wird dieser Text nicht mehr erneuert.
Somt weißt du ob er in die Einschaltroutine für den Pieper läuft oder nicht.
Später wenn alles funktionirt, nicht vergessen die zwei // vor Serial.beginn wieder einzusetzen.
 
Hi Winni,

hab mal hier das noch eingefügt


Serial.begin(57600); // Einschaltung des seriellen Monitors Zur Programmkontrolle
delay(1500); // Wartezeit auf Empfänger Initialisierung
digitalWrite(light, LOW); // Standlicht im Setup einschalten
digitalWrite(headlight, LOW); // Scheinwerfer im Setup einschalten
digitalWrite(al, LOW); // interne LED ausschalten (aktiv HIGH)
digitalWrite(rkl, LOW); // Rundumkennleuchte im Setup einschalten
digitalWrite(br, LOW); // Blinklicht rechts im Setup einschalten
digitalWrite(bl, LOW); // Blinklicht links im Setup einschalten
digitalWrite(rfsch, LOW); // Rückfahrscheinwerfer im Setup einschalten
digitalWrite(brakelight, LOW); // Bremsleuchten im Setup einschalten
digitalWrite(piep, LOW);
delay(1000); // Eine Sekunde Warteseit im Setup zur Lampenkontrolle
digitalWrite(light, HIGH); // Standlicht nach dem Setup ausschalten
digitalWrite(headlight, HIGH); // Scheinwerfer nach dem Setup ausschalten
digitalWrite(br, HIGH); // Blinklicht rechts nach dem Setup ausschalten
digitalWrite(bl, HIGH); // Blinklicht links nach dem Setup ausschalten
digitalWrite(rfsch, HIGH); // Rückfahrscheinwerfer nach dem Setup ausschalten
digitalWrite(brakelight, HIGH); // Bremsleuchten nach dem Setup ausschalten
digitalWrite(rkl, HIGH); // Rundumkennleuchte nach dem Setup ausschalten
digitalWrite(piep, HIGH);

dann ist beim Start der Pieper kurz mit an und wieder aus

mit dem Monitor hab ich nicht´s, es zeigt mir nichts an. Der Start der piep Schleife geht nicht :frage:frage
 
und das hier unten

void rfschtest()
{
if(rfsch==LOW)
{
digitalWrite(piep, LOW);
delay (500);
digitalWrite(piep, HIGH);
delay (500);
Serial.println ("piep an");
Serial.println (" ");
}
}
 
Lass die Zeile:
digitalWrite(piep, HIGH); // hier wird der interne Pull-up Widerstand an Pin 7 eingeschaltet
die wir rausgenommen haben drin.

Und ändere nur in der If-Bedingung :

if (rfsch == LOW)

in

if (rfsch_on == 1)


Dann sollte es funktionieren. Ich habe es gerade getestet. Allerdings mußte ich den Empfänger simulieren.
 
Über die Zeile: digitalWrite(piep, HIGH); // hier wird der interne Pull-up Widerstand an Pin 7 eingeschaltet
habe ich noch mal nachgedacht. Ich habe mich da etwas irre leiten lassen. Klar, normalerweise macht man das nicht, aber hier muss es sein, weil ich sonst keine sauberen HIGH Zustand zum Abschalten mit Vcc gegen Vcc bekomme.
Der Pieper funktionierte nicht, weil sich der Zusatand der Ausgänge nicht auf HIGH oder LOW mit einer IF-Bedingung abfragen lässt. Deshalb habe ich auch überall die Flags gesetzt, ob Lampen an oder aus sind. Ich musste aber erst mal wieder darauf kommen. :ghost
 
:thx Winni,

hab´s grad getestet, funktioniert super.

:thx:thx:thx

Hier der aktuelle Sketch

Anhang anzeigen winni_bel_arduino.txt

Winni´s Beleuchtungssteuerung mit Rückfahr-Pieper und Pieper-Test beim einschalten.

Copyright by Winni und Peter
 
Hallo Markus,
schön, dass es endlich funktioniert.
Freut mich, dass ich Dir helfen konnte.
 
Hallo zusammen,

bräuchte noch mal Eure Hilfe, kann man mit den Arduino auch 12V schalten?
Hab ja schon alles auf 12V verdrahtet bei mir, würde sehr viel Arbeit machen das alles wieder um zu ändern.

Soll irgendwie mit Transistoren oder Mossfet Teile gehen, kann mir da einer von Euch sagen auf was mann da achten muss und welche ich da nehmen kann?

:thx schon im Vorfeld
 
Hallo Markus,

nimm einen ULN2803 und schalte damit die Masse der LED/Leuchten. Plus kommt dann an deinen Akku.
Masse schalten ist allgemein üblich bei Lichtmodulen, dann braucht man sich nicht um die betriebsspannung zu kümmern.

Der ULN 2803 hat den Vorteil, das da schon die Vorwiderstände für den Transistor mit drin sind.
Alternativ kann man auch einen NPN Transistor z.B. BC237B nehmen und mittels 10k Basiswiderstand schalten. Die Ströme für deine LED dürfen allerdings nicht 100-200mA überschreiten, sonst wirds warm.
 
:thx Bert für deine Hilfe,

Wie muss ich das ULN 2803 dann verschalten?

Könntest du mir da ne kleine Skizze zukommen lassen?

Des Teil hat Eingänge und Ausgänge, GND und Plus hab ich gesehen
 
Hallo Bert,

Ist die ULN 2803 Schaltung hier richtig

20191212_053955.jpg

Jetzt müsste man aber den Sketch umschreiben, das ein= high ist? Oder?
 
Hallo Markus,

die Schaltung ist korrekt.
Und High = Ausgang wird geschaltet.
 
:thx Bert für deine Hilfe
 
Die Teile sind besorgt :ok

20191214_142453.jpg

Hier zusammen

20191214_142510.jpg

Jetzt geht es los mit dem löten
 

Servonaut
Zurück
Oben Unten