LED Flackern laseen- Attiny13 und AvrStudio5

Gast #5005891
Lesenswert?

Hallo,

ich habe mir jetzt einen ISP Programmwr zugelegt.

Möchte jetzt mit einen Attiny13(A) eine LED flackern lassen (Kerzen 
Simulation).


Da ich mich NOCH nicht mit Avr Studio auskenme meine bittet an die, die 
sich auskennen: könnt ihr mir einen code zukommen lassen?

Es gibt das "Projekt" schon für Bascom, (kondensatorschaden.de: LED 
Kerze) da kriege ich meinem meinen Programme aber nicht ans laufen.

Dumme Kommentare bitte unterlassen.
#5006465
Lesenswert?

Peter schrieb:
> Hallo,
>
> ich habe mir jetzt einen ISP Programmwr zugelegt.
>
> Möchte jetzt mit einen Attiny13(A) eine LED flackern lassen (Kerzen
> Simulation).
>
>
> Da ich mich NOCH nicht mit Avr Studio auskenme meine bittet an die, die
> sich auskennen: könnt ihr mir einen code zukommen lassen?

Na Du bist Optimist! Im Forum von Arduino.cc ist eine vergleichbare 
Frage vielleicht zweimal in fünf Jahren gepostet worden.
Solche Fragen kommen auch hier nicht alle Tage vor.

Auf Arduino.cc wollte ein Modellbahner ein "belebtes Haus bei 
Dunkelheit" simulieren, mit Hilfe eines Modell-Hauses, einigen LEDs und 
einem AtTiny45.

Am Ende hat er das fertige Modellhaus, für das ich ihm ein 
Arduino-Programm egmacht hatte, für Youtube gefilmt:
https://www.youtube.com/watch?v=Vou8cZ76R9s

Beim Flackern ist wird  eine zufallsgesteuerte PWM erzeugt, bei der in 
unregelmäßigen Zeitabständen der PWM Duty-Cycle auf unregelmäßig 
wechselnde WErte variiert wird.

Das Flackern soll allerdings keine Kerzensimulation sein, sondern eine 
Fernseher-Simulation.

Zeitablauf wie folgt: In dem Raum, in dem es flackert, geht zuerst eine 
LED auf Dauerlicht an (Simulation " Bewohner kommt ins Wohnzimmer und 
macht Licht an".
Dann fängteine zweite LED an zu flackern (Simulation "jetzt hat er sich 
den Fernseher angeschaltet).

Dann hört das Flackern auf (Simulation: Fernsehr wurde ausgeschaltet)

Dann geht das Licht im Raum aus (Simulation:  Bewohnerverläßt den Raum 
und Schaltet das Licht wieder aus).

Insgesamt steuert er in dem Modellhaus glaube ich fünf LEDs an, ein 
AtTiny45 hatja nicht so sehr viele Pins.

Und auf seiner Modellbahnanlage hat er aber wohl mehrere dieser 
Modellhäuser stehen, alle mit AtTiny, alle mit je fünf LEDs, alle mit 
demselben Arduino-Programm, das ich ihm gemacht hatte, aber mit 
unterchiedlichen Zeiten für die Beleuchtung konfiguriert.

AtTiny45 und Arduino wäre nichts für Dich?

In wiefern wäre ein Kerzenflackern optisch anders als das von mir 
programmierte simulierte Fernseherflackern, wie es im Youtube-Video zu 
sehen ist?
Gast #5007561
Lesenswert?

Es gibt, wie ich schon geschrieben habe einen Bascom Code:

http://www.kondensatorschaden.de/2014/12/10/how2-led-kerze-selbst-gebaut/

Zu finden leider nur bei den Bildern.

Leider kann ich bei Bascom den Code nicht als .hex komplimieren (so dass 
ich ihn mit AVR Studio flashen kann).

Hat jemand Bascom bei sich laufen und kann mir die Datei kurz 
komplimieren (max. 2min).

Habe es natürlich schon als Bascom Datei abgetippt...
(Firma: privat) #6883725
Lesenswert?

Falls mal wieder jemand hier vorbei schaut
und einen Assembler für eine flackerLED
sucht...bitte :D

Das ist das Grundgerüst...also es flackert,
nur eben schnell.

Das ist im Prinzip ein XORshifter und
2 Zähler. Der eine zählt den Startwert runter,
der andere zählt den Startwert hoch. So
entsteht für jede Byte-Formation ein
definiertes Verhältnis zwischen on/off Zeit.

Dieses Programm erzeugt aus jeder Bitfolge
im Startwert ein Flackern...also auch mit
0xff und 0x00.
Daher weiß ich nicht, nach wie vielen
Programmdurchläufen sich das
Flackermuster wiederholt.

Viel Spaß :D
Angehängte Dateien:
#6883910
Lesenswert?

Ich denke (kenne Bascom selbst nur vom Namen), dass das Programm von 
Kondensatorschaden in C so aussehen müsste/könnte:
1
#define __DELAY_BACKWARD_COMPATIBLE__
2
#ifndef F_CPU
3
#define F_CPU 1000000UL
4
#endif
5

6
#include <avr/io.h>
7
#include <util/delay.h>
8

9
int main(void)
10
{
11
  uint8_t Flackern;
12
  uint8_t Pause;
13
  uint8_t Helligkeit;
14
  
15
  DDRB = (1 << PB0);
16
  
17
  TCCR0A |= (1 << COM0A1)|(1 << WGM00);
18
  TCCR0B = (1 << CS00);
19
  
20
    while(1)
21
    {
22
        Flackern = random()*50;
23
  Flackern += 25;
24
  Pause = random()*50;
25
  Pause += 25;
26
  Helligkeit = random()*50;
27
  Helligkeit += 100;
28
    
29
  OCR0A = Helligkeit;
30
  _delay_ms(Flackern);
31
  OCR0A = 100;
32
  _delay_ms(Pause);
33
    }
34
}

Getestet hab ich den Spass jetzt aber nicht ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren