Bitars banka steg för steg: Arduino kontroll av WS2811, WS2812 och WS2812B RGB lysdioder (4 / 5 steg)

Steg 4: Från binära tal till Digital logik



Okej, så nu när vi är bekant med den binära representationen av decimaltal vi kan kommunicera intensitetsvärdena vi vill WS2811 LED föraren IC. Eftersom värdena går från 0 till 255 för varje LED, kommer vi 8 positioner (kallas bitar i digital logik) att täcka hela området — 255 är 11111111 i binär. Och vi behöver 24 bits för att överföra värden för alla 3 lysdioder inuti varje WS2812. Men exakt hur kan vi tala om WS2811 att vi vill ha en 0 eller 1. Jo, visar det sig att vi måste ändra tidpunkten för en Kvadrera vinkar signalerar att göra detta.

Disclaimer: det är en liten variant av tidpunkten beskrivs nedan beroende oavsett om du använder en faktisk WS2811 IC, eller den inbäddade versionen inuti WS2812/WS2812B. Numren används nedan motsvarar det senare fallet (WS2812/WS2812B). Om du använder WS2811 IC så rådfråga datablad för den något annorlunda nummer (annat än att allt annat beskrivs nedan är samma).

Principen om drift
WS2811 förväntar sig två saker:
1) en puls (dvs, rektangulär) vinkar signalerar med en frekvens runt 800 KHz — andra frekvenser som fungerar lika bra, men vi kommer hålla oss till 800 KHz i denna tutorial – som sätter intensitetsvärdena i ett inre skiftregister. Låt oss Observera dock att WS2811 beter sig annorlunda än en standard SKIFT register genom att data skiftas i en First-In sista ut mode.
2) när data flyttas på plats, WS2811 förväntar sig en låg signal varar minst 50μs för att spärren data till deras respektive produktion.

Flytta data
De obekanta med termen "pulse wave" kanske har hört talas om dess specialfall: fyrkantsvåg. Dessa typ av icke-sinusformade signaler består av en omväxlande amplitud mellan en bestämd maximigräns och fasta minst en konstant frekvens. När växlingen sker symmetriskt, det vill säga har när den tid under vilken signalen har ett maxvärde är identisk med den tid under vilken signalen har ett minsta värde, sedan vi det speciala fallet av en fyrkantsvåg. Vid cirka 800KHz, varje period av pulse wave är omkring 1.25μs lång (1 / 1.25μs = 800 KHz). För att kommunicera med WS2811 måste vi justera tiden under vilken signalen är antingen hög eller låg för att signalera en 0 eller 1. Det finns ett fel i databladet från WorldSemi, så de verkliga värdena bör (kredit till folken över på Adafruit för att fånga detta):

Sänder en 1:
Tid för signalen att förbli hög (T1H): 0.8μs
Tid för signalen att förbli låg (T1L): 0.45μs

Sänder en 0:
Tid för signalen att förbli hög (T0H): 0.4μs
Tid för signalen att förbli låg (T0L): 0.85μs

Ickesparande data
Efter att skicka alla bitar motsvarar intensitetsvärdena för alla lampor att vi vill styra, så vi behöver helt enkelt hålla värdet av pulse wave till lägsta värde för minst 50μs.

Sänder en "spärr kommando":
Tid för signalen att förbli låg (TL): > = 50μs

Denna typ av signal har särskilda egenskaper för att vara själv klockat, och noll avkastning (NZR). Så är det som återstår att se hur vi kan sätta vår ATMega328p att producera en just tidsinställda signal så att vi kan överföra till mängd WS2812 RGB lysdioder. [Spoiler alert!] Vi kommer att använda den bitbanging tekniken.

Se Steg
Relaterade Ämnen

Super enkel 10-steg arduino sequencer

Denna sequencer är så enkelt jag behöver bara ett steg visar hur! Just nu är det är en 10 steg sequencer men kan lätt bli mer rättvis genom att ändra variabeln "steg" i koden.https://Instagram.com/p/2_uf05wwEc/Allt du behöver för detta projekt ä...

Smart WIFI Video bil (Arduino kontroll)

Alla av oss har en utforskning önskan på okänd ort. När jag och min partner tittar på filmen "The Martian" och se att det finns en robotbil i Mars - - en planet som är femtio - sex miljoner kilometer från vår jord. "Han" arbetar på Mar...

Seriella Servo Controller w/Arduino - kontroll upp till 12 servon samtidigt med Arduino och en USB-anslutning

jag kommer att visa dig hur du använder din Arduino för att styra upp till 12 servon på en gång med minimal jitter. Med ett enkelt seriellt gränssnitt kan du kontrollera positionen för upp till 12 servo kanaler. Upp till 10 ögonblicksbild positioner...

Hemgjord Lizylotte robotarm DIY Robotic ram projekt chassi Draw Arduino kontroll

Hemgjord Lizylotte robotarm DIY Robotic ram projekt chassi Draw Arduino kontrollMaterial:1 st aluminiumlegering 245 mm x 42 mm x 12 mm1 st aluminiumlegering 200 mm x 22 x 12 mm1 st aluminiumlegering 100 mm x 160 x 12 mm för säng1 st steg motor 42 x 4...

Hacking en Keychain digitalkamera för Arduino kontroll

fotografering alternativ för Arduino är få och långt mellan. Webbkameror är praktiska för applikationer som kite fotografering eller offentliga fotografering, om du känner för att köpa en 200 fot USB-kabel. Och aktuella tekniker för fristående Arduin...

Arduino - kontroll lysdioder med en fjärrkontroll

Hi guys,Jag delar med dig ett projekt jag gjort nyligen. I'ts om hur du kan kontrollera vissa lysdioder med en fjärrkontroll och din Arduino. Men du kan tillämpa detta på alla elektroniska enheter såsom motorer, ljus t.ex.Du kan besöka min hemsida fö...

Nybörjare 123D krets Arduino kontroll servon

Detta är en kort instruktion om använder 123D kretsar för att ställa in en Arduino med några potentiometrar och som styr placeringen av servon.Steg 1: inställningarSkapa ett konto på 123d.circuits.io/Liksom de flesta hemsida nu är det enkelt att länk...

Hemgjord Lizylotte Robot Arm Robotic Draw med Arduino kontroll

Hemgjord Lizylotte robotarm Robotic Rita Arduino kontroll DIY Laser gravyr Frame 3D-skrivare PlotterMaterial:1 st 57 mm Stepper motor 1,8 grader ta från gamla kopieringsapparat1 st 42 mm Stepper motor 1,8 grader ta från gamla kopieringsapparat2 st FL...

Arduino Mega 8 x 8 x 8 RGB LED Cube

"Så du vill bygga en 8 x 8 x 8 RGB LED Cube"Jag har spelat runt med elektronik och Arduinos ett tag nu, inklusive bygga en hög amp switch controller för min bil och en sex körfält Pinewood Derby domare för våra scouter grupp.Jag var så fascinera...

Kontroll RGB lysdioder med en handrörelse.

IntroduktionVi var välkomna att hjälpa till vid våra lokala grundskolan STEM natt och behövde en cool demonstration, med lite tid att förbereda.Så, vi tittade igenom tech vi hade liggandes, och kom upp med idén att använda den LeapMotion handen track...

CPU-fläkten hacka - RGB lysdioder - Arduino & TLC5940

I detta Instructable, jag kommer att vägleda dig genom processen att hacka och konvertera en tydlig, 120 mm PWM fläkt används gemensamt hushåll datorer från en enda färg LED till individuellt adresserbara RGB lysdioder. Tillämpningar av detta hack är...

Chalieplexing 4 RGB-lysdioder med 4 trådar på Arduino

Har du alla behov många lysdioder, men bara några sladdar? Då är Charlieplexing en stor sak att prova. Med bara 4 trådar kan du köra 12 ledde med endast 4 motstånd som ett extra skydd och utan någon "informationsövertag" komponent som en 74595 e...

Färg kalibrera RGB lysdioder med en Arduino

De flesta människor tror lysdioder och Arduinos relationerna avslutas med ett ögonblick skiss. Därefter måste du gå mot motorer, smarta hem och andra "allvarliga" saker. Tja, kanske jag är långsam eller kanske är det bara att jag är en grafisk k...

Låg höjd miljöövervakning med en Arduino baserade väder Instrument och Aeropod Remote Sensing plattform

ProjektöversiktStudenter på New Lothrop High School i Michigan har arbetat tillsammans för att bygga en plattform för remote sensing låg höjd som kallas en "Aeropod" och rummen har det med ett "Arduino" baserade väder instrument att sa...

Arduino Mega GPS med LCD och SD loggning

Använd din Audino Mega som en GPS logger med tydlig LCD display och 5 funktionsknappar. En bi-färg LED används för att ange statusinformation.SDcard kan vara kvar i och läsa med en kort läsaren skiss, med utgång till den seriella Monitor.Detta instru...

Arduino solar storma controller + effektreglering och data loggning online med Xbee WiFi

För ett tag sedan jag började arbeta på en sol laddningsregulatorn, det var baserat på en PIC mikrokontroller, en 20 x 4 tecken display och koden är skriven i assembler. Det fungerade bra och arbetade fortfarande när jag bestämde mig att lägga mer ti...

Polisens blixtljus med scanner rgb lysdioder och Arduino

Det är inte en riktig blixt mönster som används av polisen.Bara några öglor programmeras av mig att demonstrera några möjligheter.DISCLAIMER:JAG ÄR INTE ANSVARIGA FÖR ÅTGÄRDER ELLER KONSEKVENSER NÄR DET GÄLLER DENNA TUTORIAL.Använd det endast inomhus...

Skicka SMS från Arduino över Internet med ENC28J60 och Thingspeak

Detta Instructable förklarar hur du skickar ett SMS från en Arduino använder Internet. Det finns många sätt att närma sig detta och jag kommer att förklara ett av de olika metoder som används för att utföra denna uppgift.Några viktiga punkter som beh...

Ambilight för icke påverkbar RGB lysdioder [använder Arduino]

Först av allt.. Om du inte vet vad Ambilgiht är Check Ambilgiht PhillipsKolla in min andra tutorial om du inte har en arduino TUTeftersom det är samma rgb ledde och samma 3 transistorer som jag använt tidigare varför lägger arduino att fungera?Svaret...