MeggyJrDemo: Difference between revisions
Jump to navigation
Jump to search
BillyBuggy (talk | contribs) No edit summary |
BillyBuggy (talk | contribs) No edit summary |
||
Line 24: | Line 24: | ||
SetAuxLEDs(N); Set top LEDs: N=1:FarLeft, N=255:AllOn | SetAuxLEDs(N); Set top LEDs: N=1:FarLeft, N=255:AllOn | ||
CheckButtonsDown() | CheckButtonsDown(); Check which buttons currently pressed. | ||
Sets six (global) variables: | Sets six (global) variables: | ||
Button_A, Button_B, Button_Up, | Button_A, Button_B, Button_Up, |
Revision as of 15:50, 16 March 2009
Introduction
I built a Meggy Jr RGB kit designed by Windell Oskay (Evil Mad Scientists Laboratory).
Standard Arduino main program:
int main(void) { setup(); for (;;) loop(); return 0; }
Simplified Meggy API (part):
#include <MeggyJrSimple.h> EmptyScreen(); Turn off all LED 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 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:
delay(N); Delay N msec. millis(); Current time in msec. random(X); Random number in [0,X)
Colors for DrawPx():
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
Looping with delay()
void setup() { MeggyJrSimpleSetup(); } void loop() { DrawPx(7, 7, FullOn); ShowScreen(); delay(100); // #1 DrawPx(7, 7, Dark); ShowScreen(); delay(500); // #2 }
Program looping over frames w/o delay()
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(); } }