Hallo Leute, ich suche einen einfachen C-Code um einen 5 Meter WS2812B mittels AVR (Atmega, Atiny) im Kinderzimmer anzusteuern. Ich möchte das Rad ungern neu erfinden und wenn ich ehrlich bin wenig Zeit (davon habe ich gerade eigentlich keine) investieren. Eher schnell zumsammenlöten, Software drauf und leuchtet. Ideal wäre eine einfache Schaltung mit Poti zum Einstellen der Farbe. Mehr muss nicht sein. Hat doch bestimmt schon der ein oder andere in dieser Form realisiert und könnte ggf. seinen zur Verfügung stellen? C wäre halte schön, da ich Assembler erst lernen müsste.
In der Zeit, in welcher du auf eine kompetentere Antwort wartest, könntest du das Programm mit den Werkzeugen/Libs der Arduinowelt zusammendengeln. incl IDE Installation, für einen geübten unter 1/2H
Dafür müssste ich mir 1. einen Arduino kaufen, 2. Arduino lernen. Attiny85 oder auch Atmega8 / 168 fänden sich dagegen noch einige in der Bastelkiste. Vielleicht findet sich ja noch jemand der was passendes im Angebot hat und dies auch teilen würde.
...ich hatte hier mal eine kleine Lib gepostet vor einiger Zeit. Ist allerdings in ASM, kann aber von C angesprochen werden. Beitrag "AVR ASM ws2811 / ws2812 Ansteuerung mit FastPWM" Verwendet FastPWM zur Erzeugung des Timings. Für ATtiny und Mega (z.B. 168).
Jens schrieb: > Dafür müssste ich mir 1. einen Arduino kaufen Nö. Du kannst ja auch nur den Source nutzen. z.B. hier steht: https://github.com/adafruit/Adafruit_NeoPixel
1 | AVR ATmega and ATtiny (any 8-bit) - 8 MHz, 12 MHz and 16 MHz |
Jens schrieb: > 2. Arduino lernen. Arduino lernen? Du meinst C/Cpp. Ja das müsstest du.
N. M. schrieb: > Arduino lernen? Du meinst C/Cpp. Ja das müsstest du. Mal ne Frage dazu: Ist das Ganze Industrie tauglich? Ich bin relativ neu dabei. Ich hab PC basiert prozedural und objektorientiert mit Windows Forms cpp gelernt. Mich interessiert wie ich Schnittstelle am besten anspreche. Beispielsweise wenn ich mir einen Arduino Mega besorge und eine W-Lan oder LoraWAN Verbindung aufbauen wollen würde, ginge das? Dann würde ich mit Qt Visualisieren und Beispielweise LEDs oder Heizung ansteuern... So spontan aus der Luft gegriffen. Danke!
Jäckel schrieb: > Mal ne Frage dazu Mal ’ne Frage dazu: warum machst du nicht deinen eigenen Trollthread auf?
OK. Eigener Fanden ist verständlich aber warum Troll? Haben etwa alle Cpp Entwickler Mikrocontroller Erfahrung?
Jäckel schrieb: > warum Troll? Arduino und Industrie in einem Beitrag ist eine Garantie für lustiges Geflame. Sowas machen in der Regel nur Trolle. Sorry, wenn’s bei dir tatsächlich ein Versehen gewesen sein sollte.
Jens schrieb: > Dafür müssste ich mir 1. einen Arduino kaufen, 2. Arduino lernen. 1 nein. 2 C kannst du, sollte reichen Jens schrieb: > Attiny85 oder auch Atmega8 / 168 fänden sich dagegen noch einige in der > Bastelkiste. Die ArduinoWelt kann auch "Attiny85 oder auch Atmega8 / 168" bespielen. Bedingt aber zusätzliche 10Min Einsatz um die Hardwaredefinitionen zu installieren -------------- Jäckel schrieb: > Mal ne Frage dazu: Ist das Ganze Industrie tauglich? Irgendwelche Zertifikate, sind dünn gesät. Hier ein positives Beispiel: https://www.controllino.biz/ Jäckel schrieb: > Beispielsweise wenn ich mir einen Arduino Mega besorge und eine W-Lan > oder LoraWAN Verbindung aufbauen wollen würde, ginge das? Da der Mega kein Funk onBoard hat, nur mit Zusatzmodulen, Dann ja.
Jäckel schrieb: > Beispielsweise wenn ich mir einen Arduino Mega besorge und eine W-Lan > oder LoraWAN Verbindung aufbauen wollen würde, ginge das? Dann würde ich > mit Qt Visualisieren und Beispielweise LEDs oder Heizung ansteuern... Warum nicht direkt ESP8266 oder ESP32, wenn du WLAN brauchst?
Jens schrieb: > ich suche einen einfachen C-Code um einen 5 Meter WS2812B mittels AVR > (Atmega, Atiny) im Kinderzimmer anzusteuern. Ich möchte das Rad ungern > neu erfinden und wenn ich ehrlich bin wenig Zeit (davon habe ich gerade > eigentlich keine) investieren. Eher schnell zumsammenlöten, Software > drauf und leuchtet. Also im Minimum faul... > Ideal wäre eine einfache Schaltung mit Poti zum Einstellen der Farbe. Obendrein auch noch vollständig inkompetent... Zu deiner Aufschlauung: "Farbe" ist de facto immer ein Wert in einem dreidimensionalen Koordinatensystem. Es gibt sicherlich verschiedene, sie haben aber allesamt die drei Dimensionen gemeinsam. Du kannst nicht in drei Dimensionen mit nur einem Poti-Wert navigieren. Theoretisch zwar möglich, aber praktisch wohl nicht sehr sinnvoll, zumal bei den eher begrenzten Fähigkeiten der AVR8, den Potiwert in eine Zahl zu wandeln... Mit drei Potis könnte das hingegen tatsächlich etwas werden. Du musst dich dann nur noch für ein Koordinatensystem entscheiden. Aus praktischen Gründen wäre wohl das HSV-Farbraummodell zu bevorzugen...
Arduino Fanboy D. schrieb: > Bedingt aber zusätzliche 10Min Einsatz um die Hardwaredefinitionen zu > installieren Das war nicht ganz richtig! Boards mit ATMega168(P?) werden von Hause aus schon unterstützt. Ansonsten: Der Thread ist jetzt über 2H alt. Du hättest schon fertig sein können, wenn du dich nicht selber blockieren würdest.
Warum nimmt man WS2812, wenn die ganzen 5m in der gleichen Farbe leuchten sollen? Für einfache RGB-LEDs und HSV-Fans hat der Zabex was schönes veröffentlicht: http://www.zabex.de/frames/sofabeleuchtung.html Es gibt WS2812-Controller, die mit Fernbedienung und fertigen Farbwechseln und Fixfarben "schön" sind, für unter 15€, inklusive Versand und WLAN. Eure Zeit muss echt billig sein... Und die sind nicht schwer zu finden, echt jetzt. Wie kommt man drauf, das man sowas selber bauen will? Und so nebenbei: 5m WS2812 "volle Pulle" nehmen locker zweistellige Ampere auf. Das kann der Streifen nicht alleine leisten.
Habe mich nun doch mal an Arduino getraut, und die Adafruit NeoPixel Lib intstalliert. "https://github.com/adafruit/Adafruit_NeoPixel" Wollte erstmal den angegeben Beispielcode testen:
1 | #include <Adafruit_NeoPixel.h> |
2 | |
3 | #ifdef __AVR__
|
4 | #include <avr/power.h> |
5 | #endif
|
6 | #define PIN 6
|
7 | #define NUMPIXELS 60
|
8 | |
9 | Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); |
10 | #define DELAYVAL 500
|
11 | |
12 | void setup() { |
13 | #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
|
14 | clock_prescale_set(clock_div_1); |
15 | #endif
|
16 | |
17 | pixels.begin(); |
18 | }
|
19 | |
20 | void loop() { |
21 | pixels.clear(); |
22 | |
23 | for(int i=0; i<NUMPIXELS; i++) { |
24 | |
25 | pixels.setPixelColor(i, pixels.Color(0, 150, 0)); |
26 | pixels.show(); |
27 | delay(DELAYVAL); |
28 | }
|
29 | }
|
Mein Streifen hängt an PIN 6 vom ATtiny85 und hat 60 Leds. Sollte also passen. Auch rennt der Kerl mit 16 Mhz (externes Quarz). CKDIV FUSE ist deaktiviert. Es stehen also wirklich die vollen 16 Mhz zur Verfügung. Per AVRISP mkII lässt sich der Code auch auf den Tiny85 schreiben. Aber siehe da, nix. Kein Leuchten. Ein Test mit Oszilloskop zeigt an PIN6 vom Tiny auch nix. Habe es daraufhin mal mit dem Code von Markus M. und den Hinweisen über das AtmelStudio 7 probiert. Damit wirds auf anhieb bunt auf dem Streifen. Das klappt also. Warum nicht mit der Arduino Variante? Muss ich da noch was beachten?
Fehler gefunden, PIN falsch gesetzt. Jetzt läuft alles. Damit könnte der Tread dann gelöscht werden. Danke allen für die Hilfe.
Jens schrieb: > Damit könnte der Tread dann gelöscht werden. Wird er aber nicht, damit andere nicht den selben Fehler machen wie du, sondern hier nachlesen können.
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.