Dunce GLB (2 / 4 stap)

Stap 2: De Code


/*
ColorduinoPlasma - Plasma demo using Colorduino Library voor Arduino
Copyright (c) 2011 Sam C. Lin lincomatic alle rechten voorbehouden

op basis van kleur fietsen plasma
Versie 0.1 - 8 juli 2009
Copyright (c) 2009 Ben Combee. Alle rechten voorbehouden.
Copyright (c) 2009 Ken Corey. Alle rechten voorbehouden.
Copyright (c) 2008 Windell H. Oskay. Alle rechten voorbehouden.
Copyright (c) 2011 Sam C. Lin alle rechten voorbehouden

Deze demo is vrije software; je kunt het herdistribueren en/of
aanpassen onder de voorwaarden van de GNU Lesser algemene openbare
Licentie zoals gepubliceerd door de Free Software Foundation; beide
versie 2.1 van de licentie, of (naar uw keuze) een latere versie.

In deze demo wordt gedistribueerd in de hoop dat het bruikbaar,
maar zonder enige garantie; zelfs zonder de impliciete garantie van
VERKOOPBAARHEID of geschiktheid voor een bepaald doel. Zie GNU
Lesser General Public License voor meer details.

U moet hebt ontvangen een kopie van de GNU Lesser algemene openbare
License along with this library; Als dit niet het geval is, schrijven aan de Vrije Software
Foundation, Inc., 51 Franklin St, vijfde verdieping, Boston, MA 02110-1301 USA
*/

#include

typedef struct
{
unsigned char r;
unsigned char g;
unsigned char b;
} ColorRGB;

een kleur met 3 componenten: h, s en v
typedef struct
{
unsigned char h;
unsigned char s;
unsigned char v;
} ColorHSV;

unsigned char plasma [ColorduinoScreenWidth] [ColorduinoScreenHeight];
lange paletteShift;

Een HSV-kleuren worden omgezet in RGB-kleur
VOID HSVtoRGB (void * vRGB, nietig * vHSV)
{
float r, g, b, h, s, v; deze functie werkt met drijvers tussen 0 en 1
vlotter f, p, q, t;
int i;
ColorRGB * colorRGB =(ColorRGB *) vRGB;
ColorHSV * colorHSV =(ColorHSV *) vHSV;

h = (float) (colorHSV -> h/256.0);
s = (float) (colorHSV -> s/256.0);
v = (float) (colorHSV -> v/256.0);

Als verzadiging 0 is, is de kleur een schaduw van grijs
if(s == 0.0) {}
b = v;
g = b;
r = g;
}
Als verzadiging > 0, meer complexe berekeningen zijn nodig
anders
{
h * = 6.0; om tint naar een getal tussen 0 en 6, beter voor de berekeningen
Ik = (int)(floor(h)); bijvoorbeeld 2.7 wordt 2 en 3.01 wordt 3 of 4.9999 wordt 4
f = h - ik; de fractionele deel van de //the van h

p = (float) (v * (1.0 - s));
q = (float) (v * (1.0 - (s * f)));
t = (float) (v * (1.0 - (s * (1.0 - f)));

switch(i)
{
geval van 0: r = v; g = t; b = p; breken;
geval 1: r = q; g = v; b = p; breken;
geval 2: r = p; g = v; b = t; breken;
Case 3: r = p; g = q; b = v; breken;
geval 4: r = t; g = p; b = v; breken;
geval 5: r = v; g = p; b = q; breken;
standaard: r = g = b = 0; breken;
}
}
colorRGB -> r = (int)(r * 255.0);
colorRGB -> g = (int)(g * 255.0);
colorRGB -> b = (int)(b * 255.0);
}

float
dist (drijven, zweven b, float c, zweven d).
{
Return sqrt((c-a)*(c-a)+(d-b)*(d-b));
}

ongeldig
plasma_morph()
{
unsigned char x, y;
drijvende-kommawaarde;
ColorRGB colorRGB;
ColorHSV colorHSV;

voor (y = 0; y < ColorduinoScreenHeight; y ++)
voor (x = 0; x < ColorduinoScreenWidth; x ++) {}
{
waarde = zonde (dist (x + paletteShift, y, 128.0, 128.0) / 8.0)
+ sin (dist (x, y, 64,0, 64,0) / 8.0)
+ sin (dist (x, y + paletteShift/7, 192.0, 64) / 7.0)
+ sin (dist (x, y, 192.0, 100.0) / 8.0);
colorHSV.h= (unsigned char)((value) * 128) & 0xff;
colorHSV.s=255;
colorHSV.v=255;
HSVtoRGB (colorRGB, & colorHSV);

Colorduino.SetPixel (x, y, colorRGB.r, colorRGB.g, colorRGB.b);
}
}
paletteShift ++;

Colorduino.FlipPage(); swap scherm buffers te laten zien
}

/********************************************************
Naam: ColorFill
Functie: Het frame vullen met een kleur
Parameter: R: de waarde van rood. Bereik: rood 0 ~ 255
G: de waarde van groen. Bereik: rood 0 ~ 255
B: de waarde van blauw. Bereik: rood 0 ~ 255
********************************************************/
VOID ColorFill (unsigned char R, unsigned char G, unsigned char B)
{
PixelRGB * p = Colorduino.GetPixel(0,0);
voor (unsigned char y = 0; j voor (unsigned char x = 0; x-p-r > = R;
p-g > = G;
p -> b = B;
p ++;
}
}

Colorduino.FlipPage();
}

VOID Setup
{
Colorduino.Init(); initialiseren van de Raad van bestuur

compenseren van relatieve intensiteit verschillen in helderheid van de R/G/B
serie van 6-bits basis waarden voor RGB (0 ~ 63)
whiteBalVal [0] = rood
whiteBalVal [1] = groen
whiteBalVal [2] = blauw
unsigned char whiteBalVal [3] = {36,63,63}; voor LEDSEE ronde 6x6cm matrix
Colorduino.SetWhiteBal(whiteBalVal);

beginnen met morphing plasma, maar toestaan gonna kleur fietsen indien gewenst.
paletteShift = 128000;
unsigned char bcolor;

het plasma eenmaal genereren
voor (unsigned char y = 0; y < ColorduinoScreenHeight; y ++)
voor (unsigned char x = 0; x < ColorduinoScreenWidth; x ++)
{
de plasma-buffer is een som van sines
bcolor = (unsigned char)
(
128.0 + (128.0 * sin (x * 8.0/16.0))
+ 128.0 + (128.0 * sin (y * 8.0/16.0))
) / 2;
Plasma [x] [y] = bcolor;
}

om aan te passen witbalans kunt u deze regel uncomment
en commentaar uit de plasma_morph() in de loop
en vervolgens experimenteren met whiteBalVal hierboven
ColorFill(255,255,255);
}

void loop
{
plasma_morph();
}

Gerelateerde Artikelen

Rey (Star Wars: The Force ontwaakt) Free Comic Book Day 2016

Rey (Star Wars: The Force ontwaakt) Free Comic Book Day 2016

Groeten nogmaals Instructable-keteers!Per gebruikelijk, ik ben slaap beroofd en over cafeïnehoudende weer zoals ik zitten omlaag wilt typen van een ander kostuum avontuur.In het begin was er een komische winkelIk weet dat ik heb eerder gezegd dat ik
Hoe maak je een "ridiculously.awesome" gegoten glas reproductie van uw favoriete film Prop

Hoe maak je een "ridiculously.awesome" gegoten glas reproductie van uw favoriete film Prop

ik wil graag beginnen met te zeggen dat ik hield van het proces van het uitvinden en documenteren van de laatste grote instructable dat ik schreef getiteld How to Build een equatoriale Mount voor lange blootstelling Astrofotografie.  Ik schreef dit v
Ja, uw doll does infact moet een hoed. Of 2. Of 3...

Ja, uw doll does infact moet een hoed. Of 2. Of 3...

Hmmmm, dat pop ontbreekt iets. Weet ik! Een hoed! Maar ze kan niet alleen dragen dezelfde die alle dat tijd... ze moet opties. Ja, ja, krijg ik een idee...Mijn voorbeelden zijn helemaal wit, omdat ze modellen zijn, maar voel je vrij om te gebruiken w
DIY Wearable zwart-hearted levensmiddel

DIY Wearable zwart-hearted levensmiddel

.Stap 1: Materiaal en Tools Yakult Robe1. zwarte sjaal (1 m x 2 m)2. Yakult (~ 300 flessen)3. transparante lijm4. acryl verf (zwart, ~ 600ml)5. sable borstel6. Internet verbindingDunce GLB1. Witboek-Europees (54 x 78 cm)2. ijzerdraad (2m lang, 2mm di
Prinses HENNIN Hat tutorial! DIY!

Prinses HENNIN Hat tutorial! DIY!

A Hennin.  Een puntige prinses feest hoed!  Als je een meisje, weet ik zeker dat je altijd al wilde een!Oke... Nou die ik heb... en mijn 8 jaar oude dochter heeft.  Dus we een samen met dingen maakte hebben wij al!  Dit project was vrije voor ons!  M
Het maken van het aanwijsapparaat joystick GLB ontbreekt op uw Laptop.

Het maken van het aanwijsapparaat joystick GLB ontbreekt op uw Laptop.

Hoe vervelend is het wanneer we het GLB voor de joystick bijwerken aanwijsapparaat in onze laptop missen? Dan gaan we naar het internet op zoek naar het en we niet vinden, of enige tijd proberen te vinden van de juiste keuze voor de laptop en worden
Bier GLB tabel

Bier GLB tabel

maakte ik een tabel Universiteit van Michigan-geïnspireerde top uit bier capsStap 1: dingen die je moet:veel bier caps, we gescout uit lokale bars en verrassend veel plaatsen vasthouden aan hun caps voor een tijdje. het bedrag voor caps u moet is afh
Hoe te doen van de magnetische Pen GLB goocheltruc

Hoe te doen van de magnetische Pen GLB goocheltruc

Magic trick - hoe te doen van de magnetische Pen GLBU zult een BIC pen, met afgeronde rand... Je knijp de dop van de pen met uw eerste vinger en duimStap 1: Stap 1: magnetische Pen GLB trucs Kant wegVan bovenVanaf onderkantStap 2: Stap 2: Geopenbaard
DIY airsoft GLB-gun

DIY airsoft GLB-gun

dit zal u tonen hoe te maken van een goedkope airsoft gun uit een cap pistool. Dit is niet te worden vertrouwd op in een werkelijke airsoft strijd. Het is gewoon een leuk project om te proberen.Geef hier uw beoordeling!7-31-09: vandaag vond ik dat 12
Zaklamp DIY wijziging diffusor lantaarn GLB

Zaklamp DIY wijziging diffusor lantaarn GLB

deze video zal u tonen hoe te maken van een aangepaste diffusor of lantaarn GLB voor uw zaklamp.Alles wat u nodig hebt is een witte plastic melkkannetje en een aansteker.
Eenvoudig gebreide beenwarmers, polswarmers en GLB

Eenvoudig gebreide beenwarmers, polswarmers en GLB

In dit instructable ga ik u tonen hoe te maken van deze reeks bij elkaar passende accessoires om u warm te houden.Stap 1: De dingen die je zal nodig: Garens, uiteraard, en breinaalden, degenen met de tekenreeks in tussen.Ik ben met behulp van wild wi
Sugru vervanging USB station GLB

Sugru vervanging USB station GLB

heb ik altijd lijken te verliezen van de doppen aan mijn USB duimaandrijving.  Ik dacht dat ik kon sommige Sugru gebruik te maken van een nieuwe GLB.Ik wilde niet het risico van ontgommen van een USB drive, dus heb ik besloten om het gebruik van een
De verhaal-klok: Arduino LCD w / GLB sensoren

De verhaal-klok: Arduino LCD w / GLB sensoren

Dit is nog een ander Arduino LCD klok, maar met een twist; deze klok kunt weet sommige feestdagen en verjaardagen, en berekeningen maken op de vliegen van hoe oud iemand is en vervolgens de gegevens weergeven op het LCD-scherm. Ik was geïnspireerd om
Houterig telefoonhoorn behuizing met bot GLB

Houterig telefoonhoorn behuizing met bot GLB

Ik kocht een mooie Cooler Master HC-300 in-ear hoofdtelefoon. Cooler Master HC-300 officiële pagina.Het is echt mooi, comfortabel, klinkt goed. Maar de goedkope kunststof behuizing is manier kwetsbaar, het breakes gemakkelijk zonder enige kracht.Het