/* Project: 3x3x3 Mono LED Cube (r3). * File: MVJitter.cpp * Description: * Movie -- mv_Jitter * A single LED moves quickly and randomly around the * cube. * * Copyright (C) 2014 Marc Symonds * All rights reserved. * * This software may be used and redistributed, with or without * modification, as long as it is understood that this software * is provided as-is without any explicit or implied warranties * of merchantablity or fitness of purpose. */ #include "Arduino.h" #include "Movies.h" #include "DisplayFrame.h" void mv_Jitter() { unsigned long ts, t; byte x, y, z, nx, ny, nz; ts = millis() + DEF_MOVIE_TIME; x = random(0, 3); y = random(0, 3); z = random(0, 3); nx = x; ny = y; nz = z; displayFrame[POS(x, y, z)] = MAXBRIGHTNESSLEVEL; while (millis() < ts) { t = millis() + 80; do { // Work out the next LED to light, adjacent to the current LED. switch(random(0, 3)) { case 0: switch(random(0, 3)) { case 0: if (nx > 0) --nx; break; case 2: if (nx < 2) ++nx; break; } break; case 1: switch(random(0, 3)) { case 0: if (ny > 0) --ny; break; case 2: if (ny < 2) ++ny; break; } break; default: switch(random(0, 3)) { case 0: if (nz > 0) --nz; break; case 2: if (nz < 2) ++nz; break; } break; } } while ( x == nx && y == ny && z == nz); while (millis() < t) ; displayFrame[POS(x,y,z)] = 0; displayFrame[POS(nx,ny,nz)] = MAXBRIGHTNESSLEVEL; x = nx; y = ny; z = nz; } displayFrame[POS(nx,ny,nz)] = 0; }
Recent Comments