Eselsmütze 4 Schritte (mit Bildern)

Schritt 2: Der Kodex

Diese Demo ist freie Software; Sie können es weitergeben und / oder
modifizieren unter den Bedingungen der GNU Lesser General Public
License, wie von der Free Software Foundation veröffentlicht wurde; entweder
Version 2.1 der Lizenz oder (nach Ihrer Wahl) jede spätere Version.
Diese Demo wird in der Hoffnung, dass es nützlich sein wird,
aber OHNE JEGLICHE GARANTIE; sogar ohne die implizite Garantie der
Marktfähigkeit oder Eignung für einen bestimmten Zweck. Lesen Sie die GNU
Lesser General Public License für weitere Details.
Sie sollten eine Kopie der GNU Lesser General Public empfangen
Lizenz zusammen mit dieser Bibliothek; wenn nicht, schreiben Sie an die Free Software
Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* /
typedef struct
unsigned char r;
unsigned char g;
unsigned char b;
> ColorRGB;
// eine Farbe mit 3 Komponenten: h, s und v
typedef struct
unsigned char h;
unsigned char s;
unsigned char v;
> ColorHSV;
unsigned char Plasma [ColorduinoScreenWidth] [ColorduinoScreenHeight];
lange paletteShift;
// Wandelt einen HSV Farbe in RGB-Farbe
nichtig HSVtoRGB (void * vRGB, void * VHS-Virus)
float r, g, b, h, s, v; // Diese Funktion arbeitet mit Schwimmern zwischen 0 und 1
float 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);
// wenn Sättigung 0 ist, ist die Farbe ein Grauton
if (s == 0.0) b = v;
g = b;
r = g;
>
// wenn Sättigung> 0, komplexere Berechnungen nötig sind, um
sonst
h * = 6,0; // für die Berechnungen Farbton auf eine Zahl zwischen 0 und 6, besser zu bringen
i = (int) (floor (h)); //z.B. 2,7 wird zu 2 und 3.01 wird 3 oder 4 wird 4,9999
f = h - i; // der Bruchteil von h
p = (float) (v * (1,0 - s));
q = (float) (v * (1,0 - (s * f)));
t = (float) (v * (1,0 - (s * (1,0 - f))));
Schalter (i)
Fall 0: r = v; g = t; b = p; Unterbrechung;
Fall 1: r = q; g = v; b = p; Unterbrechung;
Fall 2: r = p; g = v; b = t; Unterbrechung;
Fall 3: r = p; g = q; b = V; Unterbrechung;
Fall 4: r = t; g = p; b = V; Unterbrechung;
Fall 5: r = v; g = p; b = q; Unterbrechung;
default: r = g = b = 0; Unterbrechung;
>
>
colorRGB-> r = (int) (R * 255,0);
colorRGB-> g = (int) (255,0 g *);
colorRGB-> b = (int) (b * 255,0);
>
schweben
dist (float a, float b, c float, float d)
return sqrt ((c-a) * (c-a) + (d-b) * (d-b));
>
Leere
plasma_morph ()
unsigned char x, y;
Gleitkommawert;
ColorRGB colorRGB;
ColorHSV colorHSV;
for (y = 0; y < ColorduinoScreenHeight; y++)
for (x = 0; x < ColorduinoScreenWidth; x++) value = sin(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) ((Wert) * 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-Bildschirmpuffer zeigen
>
/ ************************************************* *******
Name: ColorFill
Funktion: Füllen Sie den Rahmen mit einer Farbe
Parameter: R: Der Wert von RED. Reichweite: RED 0
255
G: Der Wert von GRÜN. Reichweite: RED 0
255
B: Der Wert von BLAU. Reichweite: RED 0
255
************************************************** ****** /
Leer ColorFill (unsigned char R, unsigned char G, unsigned char B)
PixelRGB * p = Colorduino.GetPixel (0,0);
for (unsigned char y = 0; y für (unsigned char x = 0; x p-> r = R;
p-> g = G;
p-> b = B;
p ++;
>
>
Leere setup ()
Colorduino.Init (); // das Board initialisieren
// für relative Intensitätsunterschiede in R / G / B-Helligkeit kompensieren
// Array von 6-Bit-Basis-Werte für RGB (0
63)
// whiteBalVal [0] = rot
// whiteBalVal [1] = grün
// whiteBalVal [2] = blau
unsigned char whiteBalVal [3] =; // für LEDSEE 6x6cm Rund Matrix
Colorduino.SetWhiteBal (whiteBalVal);
// Start Plasma mit Morphing, aber erlauben gehe Radfahren zu färben, falls gewünscht.
paletteShift = 128000;
unsigned char BColor;
// das Plasma erzeugen einmal
for (unsigned char y = 0; y < ColorduinoScreenHeight; y++)
for (unsigned char x = 0; x < ColorduinoScreenWidth; x++)
// der Plasma-Puffer ist eine Summe von Sinus-
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;
>
Schritt 3: Zeit zum Schneiden



Erstens Seien Sie vorsichtig. Nicht Scheibe in der Hand mit dem exacto. Das wäre ein echter Dunce Schachzug sein. Ich schrieb etwa dunce mit einem shapie auf einem Schrotteinkaufstüte aus. Kleben Sie es fest mit dem Kegel als Schablone zu handeln. Dann die Exacto verwenden, schneiden jedoch die Buchstaben. abzuschälen sanft die Schablone und Band ein Kunststoffbeutel auf der Innenseite hinter den Buchstaben.
Schritt 4: Taping It Up



Pre Band alle elektronischen Stücke (Minty, LED-Matrix, USB-Kabel) und legen Sie sie in den Kegel. Legen Sie die MintyBoost den ganzen Weg an der Spitze und die Position der LED-Matrix, so dass Sie das Licht scheint durch die Cut-out zu bekommen. Achten Sie auf die FTDI Freund, ist es immer noch über einige fadenscheinige Header verbunden.