AVR C-Code für WS2812B

Gast #6418249
Lesenswert?

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.
Gast #6418264
Lesenswert?

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
Gast #6418321
Lesenswert?

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.
Gast #6418341
Lesenswert?

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!
Gast #6418366
Lesenswert?

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.
Gast #6418379
Lesenswert?

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?
Gast #6418387
Lesenswert?

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...
Gast #6418391
Lesenswert?

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.
#6419291
Lesenswert?

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.
Gast #6419417
Lesenswert?

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?

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