Met behulp van een enkele RGB LED (of een LED-strip) om informatie te tonen: klok, thermometer en een rare communicator (5 / 7 stap)

Stap 5: Rare 6-bits Communicator


Iemand, het zien van mijn klok-garland voor het eerst opgemerkt dat het gebruikt kan worden als een geheime communicatie-apparaat. Nou, waarom niet? Dit is minder nuttig dan de klok of de thermometer, maar kan gebeuren als een goed en leuk speelgoed voor iemand met kinderen.

Het is duidelijk dat een RGB-LED, fysiek bestaande uit drie LEDs met aparte kathoden (of anoden), in feite een 3-bits apparaatstuurprogramma is. Door het verstrekken van haar benen met 0 of 1 waarden geven u het drie stukjes informatie en het toont ze in gekleurde code. Als we kijken naar rood als blauw als een MSB en LSB (of BGR = B000), we kunnen eigenlijk toewijzen zichtbare kleuren naar nummers 0 – 7: zwart voor 0, rood voor 1 (B001), groen voor 2 (B010), oranje (R + G) voor 3 (B011), blauw voor 4 (B100), magenta (R + B) voor 5 (B101), cyaan (G + B) voor 6 (B110) en wit (R + G + B) voor 7 (B111). Het probleem van deze aanpak worden verborgen in de 'zwarte' kleur (nul), zoals wordt het informatief en kan niet worden gebruikt als scheidingsteken. Met slechts drie bits we zal niet zitten kundig voor zenden iets zinvol in slechts één kleur, en we hebben eigenlijk een probleem met het verzenden van nul, zoals het precies hetzelfde als een LED draaide-off uitzien zal en niemand ziet dat we proberen om te communiceren met hen.

De meeste digitale communicatieprotocollen het gebruik van meer dan één kanaal net voor dat: om te laten zien van de ontvanger dat informatie daadwerkelijk wordt verzonden, en het overwegen spanning ontbreken als het getal nul, geen niets. Dit neemt de vorm aan van een latch-signaal, een kloksignaal of sommige andere vervoerder signaal aanwezig is op een extra draad. In ons geval kon hebben we toegevoegd een enkele kleur LED alleen voor dit, maar als we slechts één RGB LED door onze OnePixel Conventie gebruikt, wij niet. Dus het signaal van de drager moet worden verstrekt door de RGB LED en we moeten besteden een van de kanalen, waardoor ons met enige twee bits informatie per één kleur. Dus, als we rood als een drager gebruikt, zal er rood voor 0, oranje voor 1 (B01), magenta voor 2 (B10) en wit voor 3 (B11).

Twee bits zijn niet genoeg, maar we kunnen stapelen ze samen in sequenties. Wat meer is, kunnen we verschillende drager kleuren gebruiken. Bijvoorbeeld, als we rood als drager voor de eerste twee bits gebruikt, groen voor de middelste twee bits en blauw voor de laatste twee bits zullen we een mooie reeks voor drie kleuren 6-bits. We kunnen het gebruiken van 'zwarte' scheidingstekens tussen dergelijke sequenties de inlichtingen duidelijk.

We zijn technisch gezien niet beperkt tot 6 beetjes: we kunnen een vierde kleur, toevoegen met behulp van rood weer als de drager, en zenden volledige bytes. Het probleem hier is dat er twee kleuren in het midden van de reeks, en als ze hetzelfde zijn (zoals, bijvoorbeeld in B00111100-rood, wit, wit, rood of B00011000 – rood, cyaan, cyaan, blauw), het kan moeilijk zijn om ze te decoderen. Gelukkig 6 beetjes vrij genoeg zijn voor het overbrengen van zinvolle berichten.

Controleer de ASCII-tabel. De eerste 32 codes zijn voor stuurcodes, we hoeven ze niet. Ga leestekens, cijfers en het alfabet in hoofdletters, en alle deze symbolen passen in 6 stukjes (64 verschillende waarden). Als we de ASCII-tabel vanuit de ruimte (32) naar _ (95) krijgen we alles wat die we nodig om te communiceren in 6 stukjes. Als een terzijde, vroege personal computers ook sloot geraken lower-case tekens om kosten op karakter generatie chips te verminderen.

OK, is hier de schets van de communicatie geheim. Het neemt om het even wat dat u in het venster van de seriële Monitor typt (omzetten in kleine letters symbolen hoofdletters) en toont het op een één RGB LED. Merk op dat seriële Monitor moet worden ingesteld tot 115200 baud. Het drukt ook de karakter-tabel bij het opstarten voor gemakkelijker decodering (u kunt ook de bovenstaande cheatsheet, blijkt de eerste kleur in een verticale pijl, de tweede in horizontale opvulling en de derde als de stip).

 #define RED 3 // pins the RGB LED is connected to#define GREEN 5 #define BLUE 6// the table of colors. This one was calibrated for a 10mm RGB LED uint8_t RGBready[13][3] ={ {255, 0, 0}, // 00xxxx {128, 127, 0}, // 01xxxx {206, 0, 49}, // 10xxxx //{110, 90, 54}, // 11xxxx white {26, 155, 74}, // 11xxxx cyan {0, 255, 0}, // xx00xx {179, 75, 0}, // xx01xx {0, 168, 87}, // xx10xx //{90, 110, 54}, // xx11xx white {158, 10, 87}, // xx11xx pink {0, 0, 165}, // xxxx00 {206, 0, 49}, // xxxx01 {0, 212, 42}, // xxxx10 //{90, 90, 74}, // xxxx11 white {139, 105, 10}, // xxxx11 yellow {0,0,0} // 'black' };uint8_t message[100], count; // char array and counter// below are durations for colors and the 'black' pause between, in ms uint16_t signalDuration=400, pauseBetween=100;void setup() { Serial.begin(115200);// print a character table Serial.println("Character table"); for (uint8_t k=0; k<16; k++) { if (k<10) Serial.print("0"); Serial.print(k); Serial.print(": "); Serial.write(k+32); Serial.print(" "); Serial.print(k+16); Serial.print(": "); Serial.write(k+16+32); Serial.print(" "); Serial.print(k+32); Serial.print(": "); Serial.write(k+32+32); Serial.print(" "); Serial.print(k+48); Serial.print(": "); Serial.write(k+48+32); Serial.println(); } }void loop() {count=0; // drop the character counterwhile (Serial.available()) // read string if available, convert it to our table { uint8_t incomingChar = Serial.read (); // normal characters if (incomingChar>31 && incomingChar<96) {message[count] = incomingChar; count++;} // lower case characters must be converted to upper case else if (incomingChar>96 && incomingChar<123) {message[count] = incomingChar - 32; count++;} }// if there is incoming string, show it on the LED if (count>0){ for (uint8_t k=0; k// the function to color-code and show info on the LED void sendRGBmessage(uint8_t letter) { letter = letter - 32; // convert from ASCII to our format showRGBcolor(letter>>4); // upper 2 bits delay(signalDuration); showRGBcolor(4+((letter>>2)&3)); // middle 2 bits delay(signalDuration); showRGBcolor(8+(letter&3)); // lower 2 bits delay(signalDuration); showRGBcolor(12); // pause between characters delay(pauseBetween); }// the function to do the actual LED turning on // for common anode LED; in case of common cathode remove '255-' chunks void showRGBcolor(byte curLED) { analogWrite(RED, 255-RGBready[curLED][0]); analogWrite(GREEN, 255-RGBready[curLED][1]); analogWrite(BLUE, 255-RGBready[curLED][2]); } 

Gerelateerde Artikelen

Met behulp van een RGB-LED te detecteren kleuren

Met behulp van een RGB-LED te detecteren kleuren

I 'm gonna Toon u hoe u kunt een RGB LED en een fotocel cd's als de sensor van een kleur voor een micro-controller. Ik zal illustreren de methode om op te halen van een kleur met behulp van Arduino, en ik zal u tonen hoe u kunt controleren of de kleu
555 RGB Rainbow LED Driver (niet met behulp van een 4029)

555 RGB Rainbow LED Driver (niet met behulp van een 4029)

| A_Teacher |OK, is dus voor zover ik kan vertellen, dit een uniek merk Nieuw ontwerp.Alle ruimte Cadets bellen: Als een manier van motiveren mensen om het project te maken, ik ben momenteel weggeven een 3 maand Instructables Pro lidmaatschap aan de
Met behulp van een RPi een RGB LED

Met behulp van een RPi een RGB LED

Als rahulkar vermeld in zijn tutorial, lijkt LED controle te zijn van de "Hello World" van elektronica. Het is gemakkelijk aan opstelling, leer je veel over de werking van elektronica, en in het einde, heb je een handig stukje hardware te pronke
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

ik wilde om te experimenteren met het gebruik van verschillende kleuren LEDs, dan de standaard RGB, Multi-Color om effecten te creëren in een functionele lamp.Deze lamp maakt gebruik van cyaan, Magenta, geel, roze, Aqua-groen, en blauw 5mm LED's same
Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88)

Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88)

Dit is een opnieuw afdrukken van een project dat ik een aantal jaren geleden maakte-ik was trawlvisserij het web, en ontdekte dat anderen had geboekt, dus heb ik besloten om de details hier op instructables.com - zodat anderen kunnen profiteren.Veel
Met behulp van een LED voor een lichtsensor

Met behulp van een LED voor een lichtsensor

tot voor kort, CdS (Cadmium Sulfide) foto-weerstanden zijn vaak gebruikt voor licht sensing toepassingen. Helaas, ze hebben problemen. Omdat cd's cellen cadmium een giftig zwaar metaal bevatten, presenteren ze een probleem van de verwijdering. Daardo
Reis draad met behulp van een LED laser

Reis draad met behulp van een LED laser

Wist u dat LED's kunnen worden gebruikt als zowel lichte vervuilers evenals lichte detectoren? De ooit verbazingwekkende Forrest Mims ontdekte dit decennia geleden en heeft diverse projecten benadrukken van dit concept. Het is wat maakt fotodiodes we
Met behulp van een Dot Matrix LED met een Arduino en Shift Register

Met behulp van een Dot Matrix LED met een Arduino en Shift Register

de Siemens DLO7135 Dot matrix LED is een verbazingwekkend stukje opto-elektronica. Het is gefactureerd als een 5 x 7 Dot Matrix intelligente Display (r) met geheugen/Decoder/Driver. Samen met dat het geheugen, het heeft een 96-ASCII karakterdisplay s
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
5 x 4 LED weergave matrix met behulp van een Basic Stamp 2 (bs2) en Charlieplexing

5 x 4 LED weergave matrix met behulp van een Basic Stamp 2 (bs2) en Charlieplexing

hebben een Basic Stamp 2 en sommige extra LEDs rondhangen? Waarom niet spelen rond met het concept van charlieplexing en maak een uitvoer met behulp van slechts 5 pinnen.Voor dit instructable ik zal worden met behulp van de BS2e maar lid van de famil
3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr
Controle op elk apparaat met behulp van een Raspberry Pi en een Relais module

Controle op elk apparaat met behulp van een Raspberry Pi en een Relais module

Het doel van deze ible is te laten zien hoe aan de slag met het opzetten van een Relais module op uw pi en onder controle. Mijn doel is om scripts toevoegen aan mijn octopussen op en uitschakelen LED-verlichting, maar hoe dan ook u wilt uiteindelijk
Bouw uw eigen logica sonde op de goedkope met behulp van een 555 Timer!

Bouw uw eigen logica sonde op de goedkope met behulp van een 555 Timer!

Hallo! Door te klikken op dit instructable je een stap dichter bij het gebouw een goedkoop, gemakkelijk om te bouwen, en wat nog belangrijker is nuttig kleine gadget... een logica sonde! Een logica sonde is handig wanneer u werkt met verschillende ch