MeggyJrDemo

From Noisebridge
Revision as of 15:42, 16 March 2009 by 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...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
  long 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();
    }
  }
References