MeggyJrDemo: Difference between revisions
Jump to navigation
Jump to search
BillyBuggy (talk | contribs) (New page: ===== Introduction ===== I built a [http://www.evilmadscientist.com/article.php/meggyjr Meggy Jr RGB] kit designed by Windell Oskay (Evil Mad Scientists Laboratory). ===== Standard Arduino...) |
BillyBuggy (talk | contribs) No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
===== Introduction ===== | ===== Introduction ===== | ||
I built a [http://www.evilmadscientist.com/article.php/meggyjr Meggy Jr RGB] | In January 2009 I built a | ||
kit designed by Windell Oskay (Evil Mad Scientists Laboratory). | [http://www.evilmadscientist.com/article.php/meggyjr Meggy Jr RGB] | ||
kit designed by Windell Oskay (of Evil Mad Scientists Laboratory). | |||
===== Standard Arduino main program: ===== | ===== Standard Arduino main program: ===== | ||
<pre> | <pre> | ||
Line 11: | Line 12: | ||
} | } | ||
</pre> | </pre> | ||
===== Simplified Meggy API ( | ===== Simplified Meggy API (partial): ===== | ||
<pre> | <pre> | ||
#include <MeggyJrSimple.h> | |||
EmptyScreen(); Turn off all LEDs | |||
DrawPx(x,y,color); Turn on LED (x=0~7, y=0~7, color=0~15) | |||
( x=0,y=0 is lower left ) | |||
ShowScreen(); Copy (double) buffer array to display | |||
video array | |||
SetAuxLEDs(N); Set top LEDs: N=1:FarLeft, N=255:AllOn | |||
CheckButtonsDown(); Check which buttons currently pressed. | |||
Sets six (global) variables: | |||
Button_A, Button_B, Button_Up, | |||
Button_Down, Button_Left, Button_Right | |||
if (Button_Left || Button_Up ) ... | |||
</pre> | </pre> | ||
===== Regular Arduino calls still available: ===== | ===== Regular Arduino calls still available: ===== | ||
<pre> | <pre> | ||
delay(N); | delay(N); Delay execution N msec. | ||
millis(); Return current time in msec. | |||
random(X); | random(X); Return random number in [0,X) | ||
</pre> | </pre> | ||
Line 51: | Line 53: | ||
</pre> | </pre> | ||
===== | ===== Simple looping using function delay() ===== | ||
<pre> | <pre> | ||
void setup() { | void setup() { | ||
Line 66: | Line 68: | ||
</pre> | </pre> | ||
===== | ===== Same loop over frames, w/o using function delay() ===== | ||
<pre> | <pre> | ||
unsigned long gLastTime; | |||
byte gWhichDelay; | |||
int gDelayMsec; | |||
void setup() { | |||
MeggyJrSimpleSetup(); | |||
gLastTime = millis(); | |||
gWhichDelay = 2; // Waiting at: =1: first delay(), | |||
// =2: second delay() | |||
gDelayMsec = 500; | |||
} | |||
void loop() { | |||
if ( millis() > gLastTime + gDelayMsec ) { | |||
if ( gWhichDelay == 1 ) { | |||
DrawPx(7, 7, Dark); | |||
ShowScreen(); | |||
gDelayMsec = 500; | |||
gWhichDelay = 2; | |||
} | |||
else { | |||
DrawPx(7, 7, FullOn); | |||
ShowScreen(); | |||
gDelayMsec = 100; | |||
gWhichDelay = 1; | |||
} | } | ||
gLastTime = millis(); | |||
} | } | ||
} | |||
</pre> | </pre> | ||
===== References ===== | ===== References ===== | ||
* [http://www.evilmadscientist.com/article.php/meggyjr Meggy Jr Product Description -- http://www.evilmadscientist.com/article.php/meggyjr] | * [http://www.evilmadscientist.com/article.php/meggyjr Meggy Jr Product Description -- http://www.evilmadscientist.com/article.php/meggyjr] |
Latest revision as of 21:37, 16 March 2009
Introduction[edit]
In January 2009 I built a Meggy Jr RGB kit designed by Windell Oskay (of Evil Mad Scientists Laboratory).
Standard Arduino main program:[edit]
int main(void) { setup(); for (;;) loop(); return 0; }
Simplified Meggy API (partial):[edit]
#include <MeggyJrSimple.h> EmptyScreen(); Turn off all LEDs DrawPx(x,y,color); Turn on LED (x=0~7, y=0~7, color=0~15) ( x=0,y=0 is lower left ) ShowScreen(); Copy (double) buffer array to display video array SetAuxLEDs(N); Set top LEDs: N=1:FarLeft, N=255:AllOn CheckButtonsDown(); Check which buttons currently pressed. Sets six (global) variables: Button_A, Button_B, Button_Up, Button_Down, Button_Left, Button_Right if (Button_Left || Button_Up ) ...
Regular Arduino calls still available:[edit]
delay(N); Delay execution N msec. millis(); Return current time in msec. random(X); Return random number in [0,X)
Colors for DrawPx():[edit]
0 Dark 1 Red 8 DimRed 2 Orange 9 DimOrange 3 Yellow 10 DimYellow 4 Green 11 DimGreen 12 DimAqua 5 Blue 13 DimBlue 6 Violet 14 DimViolet 7 White 15 FullOn
Simple looping using function delay()[edit]
void setup() { MeggyJrSimpleSetup(); } void loop() { DrawPx(7, 7, FullOn); ShowScreen(); delay(100); // #1 DrawPx(7, 7, Dark); ShowScreen(); delay(500); // #2 }
Same loop over frames, w/o using function delay()[edit]
unsigned long gLastTime; byte gWhichDelay; int gDelayMsec; void setup() { MeggyJrSimpleSetup(); gLastTime = millis(); gWhichDelay = 2; // Waiting at: =1: first delay(), // =2: second delay() gDelayMsec = 500; } void loop() { if ( millis() > gLastTime + gDelayMsec ) { if ( gWhichDelay == 1 ) { DrawPx(7, 7, Dark); ShowScreen(); gDelayMsec = 500; gWhichDelay = 2; } else { DrawPx(7, 7, FullOn); ShowScreen(); gDelayMsec = 100; gWhichDelay = 1; } gLastTime = millis(); } }