MeggyJrDemo: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
No edit summary
No edit summary
 
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 (part): =====
===== Simplified Meggy API (partial): =====
<pre>
<pre>
#include <MeggyJrSimple.h>
#include <MeggyJrSimple.h>


EmptyScreen();      Turn off all LED
EmptyScreen();      Turn off all LEDs


DrawPx(x,y,color);  Turn on LED (x=0~7, y=0~7, color=0~15)
DrawPx(x,y,color);  Turn on LED (x=0~7, y=0~7, color=0~15)
                                 ( x=0,y=0 is lower left )
                                 ( x=0,y=0 is lower left )


ShowScreen();      Copy buffer array to display video array
ShowScreen();      Copy (double) buffer array to display
                    video array


SetAuxLEDs(N);      Set top LEDs: N=1:FarLeft, N=255:AllOn
SetAuxLEDs(N);      Set top LEDs: N=1:FarLeft, N=255:AllOn
Line 33: Line 35:
===== Regular Arduino calls still available: =====
===== Regular Arduino calls still available: =====
<pre>
<pre>
   delay(N);        Delay N msec.
   delay(N);        Delay execution N msec.
   millis();        Current time in msec.
   millis();        Return current time in msec.
   random(X);        Random number in [0,X)
   random(X);        Return random number in [0,X)
</pre>
</pre>


Line 51: Line 53:
</pre>
</pre>


===== Looping with delay() =====
===== Simple looping using function delay() =====
<pre>
<pre>
   void setup() {
   void setup() {
Line 66: Line 68:
</pre>
</pre>


===== Program looping over frames w/o delay() =====
===== Same loop over frames, w/o using function delay() =====
<pre>
<pre>
unsigned long gLastTime;
unsigned long gLastTime;

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();
  }
}
References[edit]