WS2812B 5050 RGB LED

@Nico,
Ik heb je raad opgevolgd, deze strip komt binnekrt toe.
Maar wat is binnenkort, voor een eendagvliegje of voor een reuze schildpad?

Kort maar dan ook heel zou ik iet dergelijks in mijn code moeeten vinden:

Led_Actie(led_positie, led_rood, led_blauw, led_groen)



WS2812B 5050 RGB LED Strip 5M 150 300 Leds 144 60LED/M Individual Addressable 5V

Dan gaat de respectievelijke led zijn oplichten volgens de waarde van de parameters.
Zit mijn redenering ergens juist? Want dit zou mijn basis kunnen worden van de sketch die kan ontdekken.

Over de voeding (extra voor de leds, en eventueel voor de arduino, ik heb er voldoende liggen.

Ivan

dat kan een begin zijn als je dan in het geheugen een buffer bijhoudt voor alle leds.
uiteindelijk wanneer je iets wilt opsturen, moet je wel data voor alle leds opsturen, want je kan een led niet manipuleren zonder alle voorgaande leds ook te manipuleren.

Mijn "code" was kijken of in het systeem doorheb.

Ik had al een draad (het is ondertussen een kluwen geword) waar ik dacht te lezen dat ik een running light jon maken.

De kleuren worden vooraf ingesteld, en de "led_positie" fungeert dan als lopend livht.

Heel summier

Led_Actie(led_positie, led_rood, led_blauw, led_groen)

Eerst positie de betreffende led
led_positie ="waarde"

DAn de gewenste kleur
led_rood ="waarde"
led_blauw ="waarde"
led_groen ="waarde"

Ik schafte me deze aan en wel voor die reden

Individual Addressable 5V

Met vriendelijke groet
Ivan

als je gewoon op jouw hele keten maar 1 led wilt aanhebben, kan je die methode gebruiken om data naar de hele keten te sturen dat dan enkel die led op die kleur zet, en dan kan je 1 ledje laten rondlopen, maar 'k denk dat je meer gaat willen dan dat XD

daarom dat ik zei, als die methode in een geheugenbuffer de waarde voor die led instelt, dan kan je verschillende van dat soort oproepen doen, en als je klaar bent met het beeld op te bouwen dat je wilt maken, kan je iets als
StuurLeds()
implementeren dat wat er in het ram geheugen staat doorstuurt naar de ledstring :slight_smile:

De LED is zich totaal niet bewust van zijn positie, dus je moet net zo lang LEDs aansturen totdat je de juiste LED bereikt hebt.
Dat is wat racemaniac je probeert te vertellen.
Jij moet dus zelf bijhouden waar je wat heen stuurt.

In de FastLed library (zie fastled.io) staan voorbeelden hoe de ledstrip te bedienen. Samenvattend werkt het als volgt:
In de sketch maak je een tabel van het type CRGB (dacht ik) die even lang is als het aantal LEDS op de strip.
Elke entry in de tabel representeert elke led op de strip.
De laagste entry is gelijk aan de eerste led op de strip.
nu kun je elke entry in die tabel vullen met een kleuren combinatie die je wilt.
Als de tabel gevuld is is voer je de show() functie uit en de strip kleurt op.

Voorbeeld

#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 10

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 3
//#define CLOCK_PIN 13					// gebruik je niet bij WS2812B

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() {
	// Uncomment/edit one of the following lines for your leds arrangement.
	// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
	FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
	//FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
	// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);

	// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);

	// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
	// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
	//
	// led oplopend vullen
	//
	for (uint16_t i = 0; i < NUM_LEDS; i++) {
		// Turn the LED on, then pause
		leds[i] = CRGB::Red;
		FastLED.show();
		delay(250);
	}
	for (int16_t i = NUMLEDS-1; i >= 0; i--) {
		// Now turn the LED off, then pause
		leds[i] = CRGB::Black;
		FastLED.show();
		delay(500);
	}
}

Dus al ikhet goed voorheb, kan ik tegen mijn ledstrip niet zeggen:
Jij bent 1
Jij bent 2
Enzovoorts.

elke led krijgt bijwijze van spreken een"mac" adress.
Ik kan dan die led aansturen bij “mac” adress. Incluis de 'kleuren die ik wens.
Ik waartt wat een macadress is

En dan moet ik iets zoals Nico schrijft
Dit uitvoeren

FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);

Zit ik een beetje in de juiste richting?
Zeg een ja, aub

Alvast bedankt

@ivanflo
Het is gewoon een tabel… Dus tabel[0] is de eerste led… tabel[1] is de tweede led… En zet dat mac adres geleuter geheel uit je hoofd… Je maakt het voor jezelf en anderen alleen maar verwarrend.
Het is gewoon een tabel (=array) niet meer en niet minder…
Zie jij ergens in het voorbeeld een mac adres? Nee!! dus ook niet gebruiken…

Je hebt gewoon een ledketting, en je stuurt data naar de 1e led, die dan door stuurt naar de 2e led, etc...

Dus als je de 50e led wilt wijzigen, moet je eerst de 49 leds daarvoor aansturen, en dus data voor 50 leds doorgeven (en moet je dus van de vorige 49 leds ook weten wat hun status is).

Daarom dat ik zeg dat als je een API wilt maken zoals in je beginpost, je dan data voor alle leds in het geheugen moet houden, om daarna een send command te kunnen geven dat deze data doorstuurt :).

Je kan niet een led in de ketting updaten zonder alle leds ervoor in de ketting up te daten :slight_smile: (dat wilt natuurlijk niet zeggen dat er iets moet wijzigen aan de data voor die led. je kan gewoon exact hetzelfde weer doorsturen van die leds, en dan ga je niet eens zien dat er opnieuw data gestuurd is :slight_smile: ).

racemaniac:
Je hebt gewoon een ledketting, en je stuurt data naar de 1e led, die dan door stuurt naar de 2e led, etc...

Dus als je de 50e led wilt wijzigen, moet je eerst de 49 leds daarvoor aansturen, en dus data voor 50 leds doorgeven (en moet je dus van de vorige 49 leds ook weten wat hun status is).

Daarom dat ik zeg dat als je een API wilt maken zoals in je beginpost, je dan data voor alle leds in het geheugen moet houden, om daarna een send command te kunnen geven dat deze data doorstuurt :).

Je kan niet een led in de ketting updaten zonder alle leds ervoor in de ketting up te daten :slight_smile: (dat wilt natuurlijk niet zeggen dat er iets moet wijzigen aan de data voor die led. je kan gewoon exact hetzelfde weer doorsturen van die leds, en dan ga je niet eens zien dat er opnieuw data gestuurd is :slight_smile: ).

Maar dat doet de library allemaal voor jou :slight_smile:

racemaniac:
Je hebt gewoon een ledketting, en je stuurt data naar de 1e led, die dan door stuurt naar de 2e led, etc...

Dus als je de 50e led wilt wijzigen, moet je eerst de 49 leds daarvoor aansturen, en dus data voor 50 leds doorgeven (en moet je dus van de vorige 49 leds ook weten wat hun status is).

Daarom dat ik zeg dat als je een API wilt maken zoals in je beginpost, je dan data voor alle leds in het geheugen moet houden, om daarna een send command te kunnen geven dat deze data doorstuurt :).

Je kan niet een led in de ketting updaten zonder alle leds ervoor in de ketting up te daten :slight_smile: (dat wilt natuurlijk niet zeggen dat er iets moet wijzigen aan de data voor die led. je kan gewoon exact hetzelfde weer doorsturen van die leds, en dan ga je niet eens zien dat er opnieuw data gestuurd is :slight_smile: ).

Ik denk (weet het vrijwel zeker) dat Ivo niet van plan is een API te schrijven.

Jantje:
Maar dat doet de library allemaal voor jou :slight_smile:

idd, maar dan nog denk ik dat het handig is om te weten hoe iets werkt ^^

anders zal de volgende vraag wss zijn "ik heb met de library led 1 op rood gezet, maar zie niks gebeuren", niet wetende dat je nog een show commando moet geven eer er iets gebeurt :slight_smile:

Daarom maken ze altijd van die examples die iedereen overslaat......... Of soms een API beschrijving..... die men liever overslaat.... En af en toe moet je gewoon de verkeerde gewoontes eruit rammen..... En als dat niet meer helpt... Dan mogen ze naar een ander.....