#include "FastLED.h" #define NUM_LEDS 60 // how many leds in our strip #define DATA_PIN 6 // neopixel data pin #define POT_PIN A0 // center pin of pot #define buttonPin 5 // push me int buttonState = 0; // was i pushed //int palette[]={176,113,109,132}; int palette[]={252,160}; //police red blue int paletteCt = (sizeof(palette) / sizeof(palette[0])); // how big is our palette int sintemp = random(250); // random seeds for various wave generators int costemp = random(250); int tritemp = random(250); int cubictemp = random(250); int quadtemp = random(250); int sintemp1 = random(250); int sintemp2 = random(250); int sintemp3 = random(250); int accel1 = 0; // how much do we add to car 1's progress int accel2 = 0; // and dont forget car 2 int tail = 15; // threshhold for our heroes to slow their approach CRGB leds[NUM_LEDS]; // Define the array of leds void setup() { FastLED.addLeds(leds, NUM_LEDS); // are there any donuts? I'm starving FastLED.clear(); FastLED.show(); Serial.begin(9600); pinMode(buttonPin, INPUT); pinMode(A0, INPUT); randomSeed(analogRead(A0)); Serial.println(random(256)); } void loop() { int getaway = random(0,3); // how fast is our getaway buttonState = digitalRead(buttonPin); // read the button if(buttonState==HIGH){ sintemp1 = random(250); //reset random seeds sintemp2 = random(250); sintemp3 = random(250); Serial.println("i was pushed"); } //if(buttonState==HIGH) palette[paletteCt-2] = potmap(); //palette[paletteCt-1] = potmap(); if (sintemp1 - sintemp3 < tail) accel1 = random(0,2); // [cop1] we are getting close slow down if (sintemp1 - sintemp3 > tail) accel1 = random(0,3); //[cop1] were did he go? if (sintemp2 - sintemp3 < tail) accel2 = random(0,2);// [cop2] we are getting close slow down if (sintemp2 - sintemp3 > tail) accel2 = random(0,3);// [cop2] Again? if(sintemp1 == (sintemp3 -4)) accel1 = random(0,1); // [cop1] I'm in position if(sintemp2 == (sintemp3 -8)) accel2 = random(0,1);// [cop2] I'm in position if(sintemp1 == sintemp2) sintemp3 += getaway; // I got him first sintemp1 += accel1; // how much faster should I go? sintemp2 += accel2; // as fast as your heart will take you int cop1 = map(fastsin1(),0,254,0,NUM_LEDS-1); // what the hell does this guy think he is doing? int cop2 = map(fastsin2(),0,254,0,NUM_LEDS-1); // none shall pass! int car3 = map(fastsin3(),0,254,0,NUM_LEDS-1); // oh yeah, swipe right! leds[cop1]=CHSV(palette[random(paletteCt)],255,random(10,120)); // Officer John Baker leds[cop2]=CHSV(palette[random(paletteCt)],255,random(10,120)); // Officer Frank Poncherello //leds[car3]=CHSV(palette[random(paletteCt)],128,random(80,100)); // Officer Farva //leds[car3]=CHSV(random(255),255,random(80,100)); // Pussy Wagon leds[car3]=CHSV(0,0,random(80,100)); // average everyday citizen //Serial.print(palette[0]); //Serial.print(" "); //Serial.println(palette[1]); FastLED.show(); FastLED.clear(); delay(10); } // Here Be Dragons // int fastsin1(){ int exportvar = sin8(sintemp1); sintemp1++; if (sintemp1 >= 255) sintemp1 = 0; return exportvar; } int fastsin2(){ int exportvar = sin8(sintemp2); sintemp2++; if (sintemp2 >= 255) sintemp2 = 0; return exportvar; } int fastsin3(){ int exportvar = sin8(sintemp3); sintemp3++; if (sintemp3 >= 255) sintemp3 = 0; return exportvar; } int fastsin(){ int exportvar = sin8(sintemp); sintemp++; if (sintemp >= 255) sintemp = 0; return exportvar; } int fasttri(){ int exportvar = triwave8(tritemp); tritemp++; if (tritemp >= 255) tritemp = 0; return exportvar; } int fastquad(){ int exportvar = quadwave8(quadtemp); quadtemp++; if (quadtemp >= 255) quadtemp = 0; return exportvar; } int fastcubic(){ int exportvar = cubicwave8(cubictemp); cubictemp++; if (cubictemp >= 255) cubictemp = 0; return exportvar; } int fastcosin(){ int exportvar = cos8(costemp); costemp++; if (costemp >= 255) costemp = 0; return exportvar; } int potmap(){ // map analog sensor 0-255 int sensorValue = analogRead(POT_PIN); sensorValue = map(sensorValue,0,1023,0,255); return sensorValue; } int npotmap(){ // map analog sensor 255-0 int sensorValue = analogRead(POT_PIN); sensorValue = map(sensorValue,0,1023,255,0); return sensorValue; } unsigned int potmap2(unsigned int range){ // map analog sensor 0- custom value unsigned int sensorValue = analogRead(POT_PIN); sensorValue = map(sensorValue,0,1023,0,range); return sensorValue; }