Difference between revisions of "Psycho Eyes"
From Fri3d WIKI 2018
Line 14: | Line 14: | ||
for( int row = 0; row < 5; row++ ) { | for( int row = 0; row < 5; row++ ) { | ||
− | + | for( int i = 0; i < 14; i++ ) | |
− | for( int i = 0; i < | + | |
if( ( frameCounter % dutyCycle[ 13 - i ][row]) == 0 ) // here's the grayscale magic | if( ( frameCounter % dutyCycle[ 13 - i ][row]) == 0 ) // here's the grayscale magic | ||
shiftIntoRegister( 1 - buffer[ row ][ 13 - i ] ); | shiftIntoRegister( 1 - buffer[ row ][ 13 - i ] ); | ||
Line 22: | Line 21: | ||
for( int i = 0; i < 5; i++ ) { | for( int i = 0; i < 5; i++ ) { | ||
if( row == i ) // here's the grayscale magic | if( row == i ) // here's the grayscale magic | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
shiftIntoRegister( 1 ); | shiftIntoRegister( 1 ); | ||
else | else |
Latest revision as of 02:05, 26 August 2018
#include <Fri3dMatrix.h> class GrayscaleMatrix : public Fri3dMatrix { public: int frameCounter; int dutyCycle[ 14 ][ 10 ]; public: void render( int delay ); }; void GrayscaleMatrix::render( int delay ) { frameCounter++; for( int row = 0; row < 5; row++ ) { for( int i = 0; i < 14; i++ ) if( ( frameCounter % dutyCycle[ 13 - i ][row]) == 0 ) // here's the grayscale magic shiftIntoRegister( 1 - buffer[ row ][ 13 - i ] ); else shiftIntoRegister( 1 ); for( int i = 0; i < 5; i++ ) { if( row == i ) // here's the grayscale magic shiftIntoRegister( 1 ); else shiftIntoRegister( 0 ); } digitalWrite( LATCH_PIN, 0 ); digitalWrite( LATCH_PIN, 1 ); vTaskDelay( delay ); } } GrayscaleMatrix matrix = GrayscaleMatrix(); void rendereyes(int x, int y, int onoff){ int del = 200; matrix.setPixel(x, y, onoff); matrix.setPixel(13 - x, y, onoff); matrix.dutyCycle[x][y] = 2; matrix.dutyCycle[13-x][y] = 2; for( int m = 0; m < del; m++ ) matrix.render( 0 ); for(int i=0;i<14;i++) for(int j=0;j<10;j++) matrix.dutyCycle[i][j] = matrix.dutyCycle[i][j]*1.3+.5; } void setup() { for(int i=0;i<14;i++) for(int j=0;j<10;j++) matrix.dutyCycle[i][j] = 1000; matrix.clear(); Serial.begin(9600); matrix.stopRenderThread(); // we'll run our own renderer } void loop() { //int onoff = (onoff +1)%2; int onoff = 1; int d = 1; int r = 1; int x = 3; int y = 2; rendereyes(x,y,onoff); for (int i=0;i<5; i++){ for (int j=1;j<=d; j++){ x = x+r; rendereyes(x,y,onoff); } for (int j=1;j<=d; j++){ y = y+r; rendereyes(x,y,onoff); } r= r * -1; d++; } }