Linked from: https://karma-laboratory.com/petridish/2005/04/wp_part_vi_bs2s.html.
//Author: Pearl Chen (pearl at karma-laboratory.com)
//Date: Mar 3, 2005
//Revisions: like v9 but with faster baud... (and an arrow animation)
// Play around with the framerate... 80 seemed the optimal rate for me.
// If you uncomment all the timing-related statements, you can see how long
// it takes for a call-and-response between Processing and the Stamp
byte[] col = { 0, 56, 56, byte(254), 124, 56, 16, 0 }; //an array of bytes representing what columns to turn on
//note: a byte in processing only takes in numbers -127 to +127 which is why I used byte() for numbers > 127
byte tempcol = 0; //temporary data holder
//int failed = 0; //temporary counter used to adjust timing
//timing stuff
//int msNow;
//int msLast;
//int msElapsed;
void setup() {
framerate(80);
//println("//////////////////////new//////////////////////");
beginSerial(125000); //begin serial connection, default is 9600 baud but 125000 is faster
//msNow = millis();
//msLast = msNow;
}
void serialEvent() {
//if (serial == 48) { //Ascii 0
//msNow = millis();
//msElapsed = msNow - msLast;
//println(msNow +" - "+ msLast + " = " + msElapsed);
//msLast = msNow;
//}else
if (serial == 49) { //Ascii 1
increment();
}
}
void updateMatrix() {
//println("writing serial data");
serialWrite('A');
serialWrite(col);
}
void increment() {
//println("Number of failed rendezvous: " + failed);
//failed = 0;
//println("incrementing");
tempcol = col[7];
for (int i=7; i>0; i--) {
col[i] = col[i-1];
//println(i + ": " + col[i]);
}
col[0] = tempcol;
//println(0 + ": " + col[0]);
}
void loop() {
updateMatrix();
//failed ++;
}