Linked from: https://karma-laboratory.com/petridish/2005/02/working_progres_3.html.
'{$STAMP BS2sx} '{$PBASIC 2.5} 'Author: Pearl Chen (pearl at karma-laboratory.com) 'Date: Feb 27, 2005 '***** PINS ***** 'Columns (negative / anode) 1 through 8 are pins 0 through 7 respectively 'Rows (positive / cathode) A through H are pins 8 through 15 '***** CONSTANTS ****** P CON 30 'Pause length for how long a column stays lit up '***** VARIABLES ******* row VAR Word 'row will be a decimal number coming in from Processing col VAR Word 'col will be used as a counter to turn on the pins 0-8 '***** INIT ******* DIRS = %1111111111111111 'Set the direction of all pins to output OUTS = %0000000000000000 'Init all pins to LOW (off) '***** MAIN FUNCTION ****** Main: FOR col=0 TO 7 'scan through columnn numbers HIGH col 'turn on column SERIN 16, $f0, [row] 'get a decimal number from Processing via the serial port representing what rows to turn on ' 16: The pin number that is used for dedicated serial communications by the Basic Stamp Stack ' $f0: The baudmode used (in hexadecimal format... in decimal it would be 240) ' since Processing is sending the data at 9600 baud and it's a BS2sx ' row: A decimal number representing what rows to turn on ' (since I couldn't figure out how to send %10100110 or something similiar) OUTH = row 'what rows to turn on (note how I'm targeting pins 8-15 by using OUTH PAUSE P 'give it some breathing room so it's actually visible OUTH = 0 'turn off all the rows (I couldn't figure out how to invert the row so using 0 works) LOW col 'turn off the column IF col=7 THEN col=-1 'when it reaches the last counter, reset col so it'll start back at 0 NEXT END '***** SUBROUTINES ******* 'none