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

Stap 3: OnePixel Thermometer


Opmerking: Ik gebruik Celsius temperaturen in mijn projecten. Ik ben niet bekend met de Fahrenheit systeem.

De tweede informatieve functie van mijn garland was de thermometer. In feite, de thermometer zelf was mijn eerste Arduino project, en het is nog steeds werken in de buurt, tonen de buitentemperatuur op een binaire 'display'. De krans moest het de gegevens aanvraagt via I2C interface en weer te geven in RGB.

Het is mogelijk om dezelfde aanpak te gebruiken zoals hierboven beschreven met betrekking tot de notulen, dat wil zeggen, een digitale tonen tientallen en degenen. Deze benadering wordt echter niet zo intuïtief als de temperatuur kan gaan in negatieve. Ook moest ik op een verschillende manier om te laten zien van temperatuur om te voorkomen dat verwarring, zoals zowel de klok als de thermometer moesten werken op hetzelfde moment. Dus gebruikte ik een 'analoge' aanpak hier.

De 'analoge' aanpak betekent dat je niet gezien kleuren omzetten in cijfers, je kan gewoon koppelen aan kleuren hoe het weer voelt. Als dit (van koud naar warm, voor de winter):

Rood: alarm, erg koud, de auto start niet vandaag

Groen: echt koud, jurk dienovereenkomstig

Blauw: koud, vergeet dan niet handschoenen

Rood: rond bevriezing temp, slush verwachten, ijzel mogelijk

Groen: winter modus uit

Enzovoort. Deze basiskleuren zijn gebonden aan Celsius graden (-30 -20 -10, 0, + 10, zie de grafiek) en soepel wijzigen. Dus als u ziet, laten we zeggen, een cyaan-is tussen groen en blauw, ongeveer-15 ° C; een paarse tint betekent iets rond de-5 ° C. Het bereik van het volledige spectrum van rood voor rood heeft betrekking op 30 graden en dan rolt over, dat is genoeg niet te verwarren lezingen (een 30° C nachtelijke temperatuurdaling of opkomst is vrij zeldzaam, en in ieder geval kun je uit het raam om de fundamentele idee van wat er gaande is).

Terwijl dit systeem erg netjes, is wanneer de vrouw om een temperatuur vraagt die je moet beantwoorden in exacte graden C, niet in kleuren. Dus ik 'rasteren' de grafiek moest en specifieke kleuren kunt aan specifieke waarden toewijzen. Dit resulteerde in een nauwkeurigheid van 2° C, die OK voor een casual project is. Zie de tweede grafiek hierboven. Echter zoals eerder besproken, deze kleuren zijn zeker niet definitief en kunnen worden gemakkelijk verknald, die op zijn beurt geleid tot een 'slinger' visualisatie-systeem.

In de 'slinger' modus de RGB LED toont niet alleen de huidige waarde, maar het is buren ook schakelen tussen de kleuren op deze manier: huidige-vorige-huidige-volgende-huidige-vorige, enz. Dit biedt de verwijzing nodig te nagel naar beneden de exacte huidige kleur als, zeg, de rood-oranje omdat haar buren rood zijn en oranje. Het maakt ook een krans doordat sommige animatie er beter uitzien.

De tonen van een 'slinger-analoge' methode schets is hieronder. Opmerking: in deze schets ik krijg de temperatuur van de thermometer Arduino apparaat via I2C; verandering van de functie van de getTemp() volgens uw setup. De sinusgolf algoritme voor de verandering van de kleur is van mijn vorige instructable.

 #include <Wire.h> #define RED 3 // pins the RGB LED is connected to #define GREEN 5 #define BLUE 6int temperature; byte temperPos, prevPos, nextPos;// sine wave array const uint8_t lights[360]={ 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17, 18, 20, 22, 24, 26, 28, 30, 32, 35, 37, 39, 42, 44, 47, 49, 52, 55, 58, 60, 63, 66, 69, 72, 75, 78, 81, 85, 88, 91, 94, 97, 101, 104, 107, 111, 114, 117, 121, 124, 127, 131, 134, 137, 141, 144, 147, 150, 154, 157, 160, 163, 167, 170, 173, 176, 179, 182, 185, 188, 191, 194, 197, 200, 202, 205, 208, 210, 213, 215, 217, 220, 222, 224, 226, 229, 231, 232, 234, 236, 238, 239, 241, 242, 244, 245, 246, 248, 249, 250, 251, 251, 252, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 252, 251, 251, 250, 249, 248, 246, 245, 244, 242, 241, 239, 238, 236, 234, 232, 231, 229, 226, 224, 222, 220, 217, 215, 213, 210, 208, 205, 202, 200, 197, 194, 191, 188, 185, 182, 179, 176, 173, 170, 167, 163, 160, 157, 154, 150, 147, 144, 141, 137, 134, 131, 127, 124, 121, 117, 114, 111, 107, 104, 101, 97, 94, 91, 88, 85, 81, 78, 75, 72, 69, 66, 63, 60, 58, 55, 52, 49, 47, 44, 42, 39, 37, 35, 32, 30, 28, 26, 24, 22, 20, 18, 17, 15, 13, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // an array of pre-arranged RGB values // for 10mm RGB LED. byte RGBready[15][3] ={ {255, 0, 0}, // R0 {208, 47, 0}, // R1 {169, 86, 0}, // R2 {130, 125, 0}, // R3 {103, 151, 0}, // R4 {0, 255, 0}, // G0 {0, 248, 7}, // G1 {0, 217, 37}, // G2 {0, 171, 84}, // G3 {0, 67, 188}, // G4 {0, 0, 255}, // B0 {103, 0, 152}, // B1 {127, 0, 127}, // B2 {169, 0, 86}, // B3 {224, 0, 31}, // B4 };void setup() { Wire.begin(); Serial.begin(9600); }void loop(){ temperature = getReadings(); // request temperature // calculate the position of temperature meter // considering 2 degree accuracy temperPos = ((temperature + 60)/2)%15; // set values for previous and next positions // just to make the code clearer prevPos = (temperPos+14)%15; nextPos = (temperPos+1)%15; // print out RGBready position - for debugging //Serial.println(temperPos); // shift colors in the most obvious way shiftColors(temperPos, prevPos, 10); shiftColors(prevPos, temperPos, 10); shiftColors(temperPos, nextPos, 10); shiftColors(nextPos, temperPos, 10);}// request temperature: I use a second Arduino with a thermometer on it. // Change this function according to your setup (1-wire, I2C, whatever). // the result must end up in the form of an integer. int getReadings() { int temper; Wire.requestFrom(15, 1); // request one byte from device 15 while(Wire.available()) temper = Wire.read() - 60; // to avoid negatives the sending device Serial.println(temper); // adds 60 to its reading return temper; }// function for color shifting between // positions in the RGBready array. This one uses the // sine wave algorithm and lights[] pre-arranged array above // delayVal sets the speed of transition void shiftColors(byte cur, byte next, byte delayVal) { uint16_t color[3], nextColor[3]; long colorStep[3]; showRGBcolor(cur); // start with clear first color // calculate steps in unsigned int format to avoid using floats for (byte k=0; k<3; k++) { color[k] = RGBready[cur][k]<<8; nextColor[k] = RGBready[next][k]<<8; colorStep[k]=((long)nextColor[k] - color[k])/255; } // set colors in 120 (360/3) steps, converting back to bytes for (byte k=0; k<120;k++) { setRGBpoint(0, (color[0]+colorStep[0]*lights[k])>>8, (color[1]+colorStep[1]*lights[k])>>8, (color[2]+colorStep[2]*lights[k])>>8); delay(delayVal); } showRGBcolor(next); // finish with clear second color }// two legacy functions to turn LEDs on. // I use them here to maintain consistency between sketches // both codes are for common anode LEDs. If you use common cathode ones, // remove the '255-' bits. void setRGBpoint(uint8_t LED, uint8_t red, uint8_t green, uint8_t blue) { analogWrite(RED, 255-red); analogWrite(GREEN, 255-green); analogWrite(BLUE, 255-blue); }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