Hallo zusammen, Ich würde gerne eine ganz einfache Schaltung haben. Ich habe mir bei ebay einen Streifen mit 20 ws2812b LEDs gekauft. Nun würde ich diese gerne nacheinander im Abstand von x Sekunden aufleuchten lassen. Zu Beginn sollen alle LEDs ausgeschaltet sein. Wenn der uc mit Strom versorgt wird sollen LED 1 und 11 dann nach x Sekunden LED 2 und 12 wieder nach x Sekunden LED 3 und 13 usw. Angehen und auch anbleiben. Ich habe die tutorials hier gelesen aber werde nicht So ganz schlau. Am schönsten wäre für mich ein Code der etwa So aussieht. Alle_LEDs_aus() Led1_an() Rot(255) Grün(100) Blau(0) /die Werte möchte ich natürlich.anpassen Led11_an() Rot(255) Grün(100) Blau(0) Delay_ms(500) Led2_an() Rot(255) Grün(100) Blau(0) Led12_an() Rot(255) Grün(100) Blau(0) Delay_ms(500) . . . Nur habe ich leider keinen Schimmer wie das geht. Ich habe den 20mhz quarz angenommen da ich gelesen hatte dass dies für die ws2812b benötigte wird zur ansteuerung und der attiny13 nicht So viel ohne externes quarz schafft. Wäre nett wenn mir jemand einen Hinweis gegen könnte wie ich der Code im etwa aussehen müsste. Danke
fragensteller schrieb: > Nur habe ich leider keinen Schimmer wie das geht. Inwieweit bist du überhaupt mit der Programmierung von µCs vertraut?
fragensteller schrieb: > der attiny13 nicht So > viel ohne externes quarz schafft Der ATTiny13 laeuft nicht mit externem Quarz. Er braucht einen externen Oszillator.
Naja ich denke nicht, dass es das ist was sich der Fragensteller hier erhofft hat. Er scheint ja schonmal ein Grundverständis zu haben, da er ja die "Programmstruktur" schon geschrieben hat. Viel fehlt ja im Prinzip nicht. Aber daran scheint es zu scheitern, sonst wäre die Frage ja nicht hier gestellt worden.
Mike schrieb: > Er scheint ja schonmal ein Grundverständis zu haben, da er ja die > "Programmstruktur" schon geschrieben hat. Ich kann das Haus vom Nikolaus malen. Also habe ich ein Grundverständnis von Architektur...
Hi nochmal, war über das wochenende leider weg. schade dass mir keiner einmal einen ganz simplen code schicken kann wie man denn eine LED nacheinander z.B. in meheren Farben aufleuchten lassen kann. Das tutorial habe ich versucht zu verstehen, aber ledier keinen erflog.
Welches Tutorial? Wenn Du die Links durchgehst, findest Du mehrere Beispiele, in denen genau das gemacht wird. z.B. hier: https://github.com/cpldcpu/light_ws2812 Mein Eindruck ist allerdings, dass Du den ATtiny13 selbst noch nicht komplett verstanden hast. Du solltest evtl. erst einmal eine normale Leuchtdiode blinken lassen.
fragensteller schrieb: > Das tutorial habe ich versucht zu verstehen, aber ledier keinen erflog. Die Tutorials hier sind sehr ausführlich und so verständlich geschrieben, daß ein Anfänger Schritt für Schritt herangeführt wird. Du mußt dich allerdings mehr als nur zwei Minuten damit beschäftigen. Wenn du die Zeit (oder auch die Lust) nicht investieren willst, dann kauf dir besser ein fertiges Gerät.
ich habe mich schon länger damit beschäftigt, leider bleibt es aber für mich unverständlich, aber naja vielleicht verstehe ich es ja doch noch irgendwann
Hi, ich geh einfach mal davon aus, das dein µC bereits läuft. zum Programm Wenn ich Programme schreibe, warte ich nicht aktiv mit delays oder so sondern lass ihn in der zeit was irgendwas zeitunkritisches machen. Normal verwende ich einen Timer, mit interrupt, auf einer festen Zeitbasis (meist 1µS). Jede µS wird ein Interrupt ausgelöst in dem ich eine Variable 1 setz und der µC somit weiß jetzt ist eine µS vorbei. Der Rest ist nur Zählen. Hoffe das hilft dir weiter.
fragensteller schrieb: > ganz simplen code schicken kann https://github.com/cpldcpu/light_ws2812/blob/master/light_ws2812_AVR/Examples/RGB_blinky.c Hier ein ganz simpler Code, wie man eine LED nacheinander in verschiedenen Farben leuchten lassen kann.
:
Bearbeitet durch User
@Max: Danke für den Link. jetzt muss ich den nur noch zum laufen bekommen, da werd ich mich mal ransetzten und die Fehlermeldungen des AVR Studio analysieren.
Tim schrieb: > https://github.com/cpldcpu/light_ws2812 Das hier und 4 Klicks und du bist genau dort, wo ich dich verlinkt habe...
Max H. schrieb: > Tim schrieb: >> https://github.com/cpldcpu/light_ws2812 > Das hier und 4 Klicks und du bist genau dort, wo ich dich verlinkt > habe... Wenn man das Readme liest schafft man es sogar in drei Klicks :)
Hier mal die ersten 3 Fehlermeldungen. Wieso kennt er denn "F_CPU" nicht? 1 #warning "F_CPU not defined for <util/delay.h>" 2 #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" 3 expected identifier or '(' before '<' token
1 | /*
|
2 | * Light_WS2812 library example - RGB_blinky
|
3 | *
|
4 | * cycles one LED through red, green, blue
|
5 | *
|
6 | * This example is configured for a ATtiny85 with PLL clock fuse set and
|
7 | * the WS2812 string connected to PB4.
|
8 | */
|
9 | |
10 | #include <util/delay.h> |
11 | #include <avr/io.h> |
12 | #include <avr/interrupt.h> |
13 | #include "light_ws2812.h" |
14 | |
15 | struct cRGB led[1]; |
16 | |
17 | int main(void) |
18 | {
|
19 | |
20 | #ifdef __AVR_ATtiny10__
|
21 | CCP=0xD8; // configuration change protection, write signature |
22 | CLKPSR=0; // set cpu clock prescaler =1 (8Mhz) (attiny 4/5/9/10) |
23 | #else
|
24 | CLKPR=_BV(CLKPCE); |
25 | CLKPR=0; // set clock prescaler to 1 (attiny 25/45/85/24/44/84/13/13A) |
26 | #endif
|
27 | |
28 | |
29 | while(1) |
30 | {
|
31 | led[0].r=255;led[0].g=00;led[0].b=0; // Write red to array |
32 | ws2812_setleds(led,1); |
33 | _delay_ms(500); // wait for 500ms. |
34 | |
35 | led[0].r=0;led[0].g=255;led[0].b=0; // green |
36 | ws2812_setleds(led,1); |
37 | _delay_ms(500); |
38 | |
39 | led[0].r=0;led[0].g=00;led[0].b=255; // blue |
40 | ws2812_setleds(led,1); |
41 | _delay_ms(500); |
42 | }
|
43 | }
|
Svenska schrieb: > Arbeite erstmal das AVR-(GCC-)Tutorial durch. Da wird dir sowas erklärt. Oder statt ATTiny lieber LPC810 nehmen :-) https://github.com/cpldcpu/light_ws2812/tree/master/light_ws2812_ARM
fragensteller schrieb: > Wieso kennt er denn "F_CPU" nicht? weil du es nicht definiert hast. Sagt er dir doch auch
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.