//Gijs Gieskes 2010 #include <TrueRandom.h> boolean switcher = true; byte buttons = 0; boolean UD = true; void setup() { randomSeed(analogRead(0)); pinMode(7, INPUT); digitalWrite(7, HIGH); pinMode(8, OUTPUT); //reset pinMode(9, OUTPUT); //start pinMode(10, OUTPUT); //B pinMode(11, OUTPUT); //select pinMode(12, OUTPUT); //A pinMode(16, OUTPUT); //right pinMode(17, OUTPUT); //left pinMode(18, OUTPUT); //up pinMode(19, OUTPUT); //down delay(2500); } void loop(){ if(digitalRead(7) == LOW){ while(digitalRead(7) == LOW){} switcher = !switcher; } if(switcher){ RArrow(); RKeys(); ScreenSwitch(); tryToAvoidEMPTYandADD(); startStop(); startAll(); copyPaste(); repeatAddDown(); reset(); }else{ allLow(); } } void repeatAddDown(){ // if(!TrueRandom.random(20)){ for(byte i = TrueRandom.random(1, 10); i>0; i--){ allLow(); digitalWrite(19, HIGH); //down delay(random(300)); //scroll down for random amount of time digitalWrite(19, LOW); delay(100); digitalWrite(12, HIGH); //add something delay(100); allLow(); } } } void copyPaste(){ //copy paste if(!TrueRandom.random(20)){ allLow(); digitalWrite(11, HIGH); //select delay(200); digitalWrite(10, HIGH); //b delay(200); digitalWrite(11, LOW); digitalWrite(10, LOW); delay(500); RArrow(); delay(200); digitalWrite(10, HIGH); //b, copy delay(200); RArrow(); delay(200); digitalWrite(11, HIGH); //select delay(200); digitalWrite(12, HIGH); //paset delay(200); digitalWrite(12, LOW); //paset delay(200); allLow(); delay(300); } } void ScreenSwitch(){ //move to randomly selected screen if(!TrueRandom.random(5)){ allLow(); digitalWrite(11, HIGH); delay(150); if(!TrueRandom.random(5)){ if(UD){ delay(150); digitalWrite(19, HIGH); delay(150); digitalWrite(19, LOW); delay(150); }else{ delay(150); digitalWrite(18, HIGH); delay(150); digitalWrite(18, LOW); delay(150); } UD = !UD; }else{ digitalWrite(TrueRandom.random(16, 18), HIGH); delay(150); } allLow(); } } void tryToAvoidEMPTYandADD(){ //press B to ga back out of LOAD screen.. //press A to add something.. if(!TrueRandom.random(10)){ byte AB = 10; if(TrueRandom.random(2)){ AB = 10; }else{ AB = 12; } allLow(); delay(150); digitalWrite(AB, HIGH); delay(150); digitalWrite(AB, LOW); delay(150); allLow(); } } void RArrow(){ //arrows.. byte times = TrueRandom.random(1,8); for(byte j = times; j>0; j--){ byte arrows = TrueRandom.random(16, 20); for(byte i=16; i<20; i++){ if(TrueRandom.random(30)){ if(arrows == i){ digitalWrite(i, HIGH); }else{ digitalWrite(i, LOW); } }else{ digitalWrite(i, LOW); } } delay(TrueRandom.random(1, 40)); } } void RKeys(){ //keys byte times = TrueRandom.random(1, 4); for(byte i = times; i>0; i--){ if(TrueRandom.random(8)){ if(TrueRandom.random(6)){ digitalWrite(12, TrueRandom.random(2)); }else{ digitalWrite(10, TrueRandom.random(2)); digitalWrite(12, TrueRandom.random(2)); } }else{ digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); } delay(TrueRandom.random(1, 40)); } } void startStop(){ //start stop playback if(!TrueRandom.random(40)){ allLow(); delay(150); digitalWrite(9, HIGH); delay(150); digitalWrite(9, LOW); delay(150); allLow(); } } void startAll(){ //start stop playback if(!TrueRandom.random(40)){ allLow(); delay(150); digitalWrite(11, HIGH); delay(150); digitalWrite(9, HIGH); delay(150); digitalWrite(9, LOW); delay(150); digitalWrite(11, LOW); delay(150); allLow(); } } void reset(){ static unsigned long pState = 0; if(millis() - pState > 100000){ randomSeed(analogRead(0)); pState = millis(); allLow(); UD = true; //reset value, to prevent from moving to upper screens.. digitalWrite(8, HIGH); delay(150); digitalWrite(8, LOW); delay(6500); } } void allLow(){ digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(16, LOW); digitalWrite(17, LOW); digitalWrite(18, LOW); digitalWrite(19, LOW); }