SPACE SQUID OF DOOOOOOM!!!!

So my Beep Boop creature is a squid. He loves the dark and hates the light. He’ll increasingly beep faster the longer he’s upset until he dies. He can be revived by being immersed in full darkness for a little while. He’ll get more excited the longer he’s in the dark.

::BONUS::When he’s upset his eyes will blink red as well.

[sourcecode language=”css”]
#include "pitches.h" //list of the frequencies of most notes
int counter=0;

int photoPin=0;
int speaker=6;

//the reading must be bellow each of these values to ellicit that emotion
int excitedPoint=120;
int neutralPoint=180;
//higher than neutral results in dying

int reading; //holds the current photo reading
String state="neutral";

//using resistor: gold, red, green, brown

boolean dead=false;
int reviveCounter=0; //counts how logn the dead creature has been in darkness

// These are for the LED eyes
const int ledPin = 13;
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0;
long interval = 1000;

void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}

void loop(){
noTone(speaker);
//checks to see what state the creature is in
reading=analogRead(photoPin);

if (readingexcitedPoint && readingneutralPoint && state!="screaming"){
counter=0;
state="screaming";
}

//Deal with the various states
//is it dead?
if (dead){
Serial.println("DEAD");
if (random(100)==0)
PlayDeathGasp();
interval = random(100,1300);
RedEye(interval);

//if it is in darkness logn enough, it should revive
if (reading100){
Serial.println("CHECK IT");
//wait a few seconds between playing bliss sound
if (counter%200==0) {
PlayBliss();
}
}
else if (counter%20==0){
//if not, keep upping counter and play the exciting
PlayExcited();
}
}

if (state=="neutral"){
if (counter==1){
PlayNeutral(); //play the sound
}
//if it’s been neutral for a while, make sure some time passes between making sounds
//then play it randomly
if (counter>200){
if (random(0,100)==0)
counter=0; //reset counter
}
}

if (state=="screaming"){
if (counter%20==0)
PlayScream();
interval = 500;
RedEye(interval);
if (counter>100){
PlayDying();
dead=true;
}
}
}

Serial.println(state);
counter++;
Serial.println(analogRead(photoPin));
//Serial.println(counter);
}

void PlayNeutral(){
//neutral tone sare played in a series of two.
int notes[]={
NOTE_D4, NOTE_B3, NOTE_A3, NOTE_F3, NOTE_DS3, NOTE_CS3 };
int start=random(0,2) *2;
for (int i=start; i<start+2; i++){
tone(speaker, notes[i]);
delay(500);
noTone(speaker);
delay(300);
}
}

//"I'm bursting with joy!"
void PlayBliss(){
//oscilate between two ranges that keep moving up
//originaly 512
int startVal=512;
int endVal=860;
int range=100;
int val=startVal;
int incr=random(1,3);

while(val<endVal){
//send it up
int tempMax=val+range; //how far up to go with this pass
for (val; valtempMin; val-=incr){
tone(speaker, val);
delay(3);
}
}

//hold the last value for a little while
delay(500);
}

void PlayScream(){
int scream[] = {
NOTE_B4, 0, NOTE_G4, 0, NOTE_E4, 0, NOTE_D4 };
int screamDurations[] = {
4,16,4,16,4,16,1 };

for (int thisNote = 0; thisNote endVal; i–){
tone(speaker, i);
delay(6);
}

//now create two beeps.
noTone(speaker);
delay(200);
tone(speaker, 300);
delay(500);
noTone(speaker);
delay(200);
tone(speaker, 200);
delay(500);
}

void PlayExcited(){
int levelAdjust=map(reading,0,excitedPoint, 300,0);
int toneA=NOTE_B4+levelAdjust;
int toneB=NOTE_G5+levelAdjust;

int counterAdjust=map(counter,0,100,0,40);

for (int i=0; iendVal; i-=30){
tone(speaker,i);
delay(30000/i);
}
noTone(speaker);
delay(500);

//a few little burbles
for (int i=0; i<3; i++){
PlayDeathGasp();
}
}

//Burbles and gurgles
void PlayDeathGasp(){
tone(speaker, random(50,70));
delay(random(500,1000));
noTone(speaker);
delay(random(500,1000));
}

//"I'm coming back to life!"
void PlayRevive(){
int startVal=50;
int endVal=NOTE_D5;

for (int i=startVal; i<endVal; i+=30){
tone(speaker,i);
delay(30000/i);
}
noTone(speaker);
delay(500);

for (int i=0; i interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;

// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;

// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}
[/sourcecode]

Response

  1. […] Explanation of squid of doom! […]

Leave a Reply

Discover more from Making Toys

Subscribe now to keep reading and get access to the full archive.

Continue reading