RE: LED-Lauflichter mit Attinys

#1 von MYKer , 16.07.2020 14:40

Hallo Forum.


Ein Kollege von mir fragte mich nach einem Lauflicht für die Carrera-Bahn. Er wollte das in einer engen Kurve als Lichteffekt an/in die Leitplanke bauen. Es sollte für ihn unkompliziert zu verbauen sein also kam ich auf die Idee mit einem einfachen USB Steckernetzgerät zu arbeiten.

Mir fiel der Artikel "Belebtes Haus mit Attiny" hier aus diesem Forum ein und ich besorgte mir mal ein paar davon.
Für den ersten Versuch verwendete ich den Attiny 85. Mit diesem wollte ich ein 5-fach Lauflicht realisieren.
Zu diesem Zweck machte ich einen Arduino Uno zu einem ISP-Programmer (Anleitungen gibt's in Netz...)
Attinys verstehen fast die gleichen Befehle wie so ein Arduino also ran ans Werk.

Es sollte ein Lauflicht sein bei dem während der Zeit in der eine LED nicht blitzt sie dennoch ein wenig leuchtet. Das sehe ich oft bei den Baustellen auf der Autobahn. Der Attiny hat aber nicht die Möglichkeit alle Augänge mit >Analogwrite< zu beschreiben. Da musste ich mir was einfallen lassen.
Ich kann nicht programmieren so gab es für mich nur eine Lösung: Lesen, lesen, lesen....
Ausprobieren.. und raus gekommen ist dieser "Code"

[spoiler title=Aufklappen]

// 5-fach Lauflicht mit gedimmtem Zwichenleuchten.
// >>> ohne analogWrite <<<
// by Huby(2015)




int ledPin1 = 0;
int ledPin2 = 1;
int ledPin3 = 2;
int ledPin4 = 3;
int ledPin5 = 4;
int pwmHigh = 5; // Helligkeit der
int pwmLow = 200-pwmHigh; // gedimmten Leds

void setup(){
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(ledPin5,OUTPUT);



}

void loop(){

for (int i=0; i<25; i++){


digitalWrite(ledPin1,HIGH);
delayMicroseconds(pwmHigh);
if(i>0&&i<2) {
;
} else {
digitalWrite(ledPin1,LOW);
delayMicroseconds(pwmLow);
}

digitalWrite(ledPin2,HIGH);
delayMicroseconds(pwmHigh);
if(i>3&&i<5) {
;
} else {
digitalWrite(ledPin2,LOW);
delayMicroseconds(pwmLow);
}

digitalWrite(ledPin3,HIGH);
delayMicroseconds(pwmHigh);
if(i>6&&i<8) {
;
} else {
digitalWrite(ledPin3,LOW);
delayMicroseconds(pwmLow);
}

digitalWrite(ledPin4,HIGH);
delayMicroseconds(pwmHigh);
if(i>9&&i<11) {
;
} else {
digitalWrite(ledPin4,LOW);
delayMicroseconds(pwmLow);
}

digitalWrite(ledPin5,HIGH);
delayMicroseconds(pwmHigh);
if(i>12&&i<14) {
;
} else {
digitalWrite(ledPin5,LOW);
delayMicroseconds(pwmLow);
}

}


}

[/spoiler]
Alle C++ Programmierer schlagen gerade die Hände über dem Kopf zusammen aber es läuft


5-Kanal

Da der Chip nur das Lauflicht befeuert konnte ich es so machen das die LEDs sehr schnell nacheinander durchgeschaltet wurden und jeweils die eine welche gerade den Blitz darstellen soll eine Zeitlag nicht ausgeschaltet wird.
Ich habe danach das ganze etwas zusammen gekürzt und für den Attiny 84 auf ein 11-fach Lauflicht geschrieben

[spoiler title=11-fach Lauflicht]

// 11-fach Lauflicht mit gedimmtem Zwichenleuchten.
// >>> ohne analogWrite <<<
// by Huby(2015)

int anz = 11; //Anzahl der LedPins
int ledPin[]={0,1,2,3,4,5,6,7,8,9,10}; //LedPins
int pwmHigh = 10; //Helligkeit der
int pwmLow = 200-pwmHigh; //gedimmten LEDs

void setup() {

for (int p=0; p<anz; p++){
pinMode(ledPin[p],OUTPUT); //Alle LedPins auf Ausgang setzen
}
}

void loop() {

for (int i=0; i<50; i++){ // "i" von Null bis Fünfzig zählen
for (int q=0; q<anz; q++){ // zum Durchlauf der Leds Null bis "anz"

digitalWrite(ledPin[q],HIGH); // Jeweilige Led "an"

if(i>(((q+1)*3)-2)&&i<((q+1)*3)) { //Bestimmte Led bleibt bei best. "i" an
;
} else {
delayMicroseconds(pwmHigh); //ansonsten wird sie nach pwmHigh
digitalWrite(ledPin[q],LOW); //wieder
delayMicroseconds(pwmLow); //ausgeschaltet
}
}
}
}

[/spoiler]


11-Kanal


Ich habe heute keine Ahnung wie ich auf diesen Code gekommen bin aber er läuft.

Das Ganze sollte ja einfach zu verbauen sein. Ich Habe mir ein D-Sub Stecker/Kupplung Gehäuse vorgenommen und mit einer Lochstreifenplatine was gebastelt

Bild entfernt (keine Rechte)
Stecker

Bild entfernt (keine Rechte)
Buchse
Weil ja immer nur 2 LEDs gleichzeitig leuchten komme ich mit nur einem Widerstand aus.

Das fertige Teil braucht der Kollege jetzt nur noch in ein Handynetzteil zu stecken und los gehts.

Bild entfernt (keine Rechte)

Bild entfernt (keine Rechte)

Das gleiche mit dem großen D-Sub Gehäuse

Bild entfernt (keine Rechte)

Bild entfernt (keine Rechte)

Bild entfernt (keine Rechte)

Bild entfernt (keine Rechte)

Bild entfernt (keine Rechte)

Bei den LEDs habe ich 5mm superhelle glasklare rote benutzt. Die habe ich in die Carrera Leitplanke gebohrt und verklebt.

Und wenn sie nicht explodiert sind dann blinken sie noch heute.


Gruß Huby. 8)


Bekennender Weichenauffahrer mit eckiger Spannung an den Gleisen.

Meine Bahn: Einen an der Waffel


 
MYKer
InterRegioExpress (IRE)
Beiträge: 262
Registriert am: 24.06.2020
Ort: Kreis MYK
Gleise C•K•M
Spurweite H0
Steuerung CS2 und alles was da ranpasst
Stromart Digital

zuletzt bearbeitet 26.04.2024 21:19 | Top

RE: LED-Lauflichter mit Attinys

#2 von PATs in 1zu87 , 17.07.2020 09:45

Moin

Ein Arduino ist nix anderes als ein Microcontroller, genau wie auch ein ATTiny.
Arduino wird auch eigentlich nur die Programmierungsumgebung genannt, Auf den Platinen sind ganz
normale Microcontroller zb AT-Mega 8 verbaut.

Ok, Das Programm ist einfach und simpel.
Richtig und Falsch kann man hier auch nicht sagen, sondern meist einfach zu umständlich.
Ich Programmiere in C meine Steuerungen, auch hier gibt es immer wieder neue Ansätze. Jeder Programmierer
macht es anders, wichtig ist das Du verstehst was Du programmierst und das Du es nachvollziehen kannst.

Fertig

Grüsse
Pat


Irgendwo im Ruhrgebiet

- Moderner Hauptstreckenverkehr für Nah/Güterverkehr
- Industrieanbindung
- SpDrS60-Stellwerk

Meine HO-Anlage: https://stummiforum.de/viewtopic.php?f=64&t=179346
YouTube: https://www.youtube.com/channel/UCfgRbZ06vRHmpR5I5hvN3wQ


 
PATs in 1zu87
CityNightLine (CNL)
Beiträge: 1.586
Registriert am: 06.05.2017


RE: LED-Lauflichter mit Attinys

#3 von MYKer , 17.07.2020 17:27

Zitat

Moin

Ein Arduino ist nix anderes als ein Microcontroller, genau wie auch ein ATTiny.

...
Grüsse
Pat



Hi Pat.
Danke für Deinen Post. Ich freue mich das Du mal hier drauf geschaut hast.
Das mit dem Arduino weiß ich. Ich wollte es halt nur so simpel und wenig das es in das Steckergegäuse passt.
KISS (Keep it simple, stupid)

Gruß Huby.


Bekennender Weichenauffahrer mit eckiger Spannung an den Gleisen.

Meine Bahn: Einen an der Waffel


 
MYKer
InterRegioExpress (IRE)
Beiträge: 262
Registriert am: 24.06.2020
Ort: Kreis MYK
Gleise C•K•M
Spurweite H0
Steuerung CS2 und alles was da ranpasst
Stromart Digital


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz