Meet the Hallowbot

1) Hallowbot

2) The basic idea of my Hallowbot is that communicates with a user. I put a PIR Motion Sensor that detects a user in the room or the area, and greets with waking up with blue leds on the eyes. Then, if a user gets close enough to the Hallowbot, there will be an animation with yellow leds that triggered by a PhotoCell. The yellow animation is similar that talks to a user. Also, I put a Tilt Sensor that triggered by a user touching Hallowbot’s Antena on the top of the head and change the color of a led light to red.

3)

3) A photo of the final project


4) A short video demonstrating it.


5) The code you used.

int inputPin = 2;
int ledPin = 6; // blue led 1
int ledPin4 = 7;  // green led 1  

// button 2 animation
int inputPin2 = 3;
int ledPin2 = 8;  // yellow led 1
int ledPin5 = 9;  // yeallow led 2
int ledPin6 = 10; // yellow led 3
int ledPin7 = 11;  // yellow led 4

int inputPin3 = 4;
int ledPin3 = 12;  // red led

/**** motion sensor *****/
int timer = 500;
int sensorPin = A0;
int sensorValue = 0;

/*    photocells */
int photocellPin = A1;     // the cell and 10K pulldown are connected to a0
int photocellReading;     // the analog reading from the sensor divider
int LEDbrightness;        // 

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

  pinMode(ledPin2,OUTPUT);
  pinMode(inputPin2,INPUT);

  pinMode(ledPin3,OUTPUT);
  pinMode(inputPin3,INPUT);

  //  green leds
  pinMode(ledPin4, OUTPUT);

  //  yellow leds
  pinMode(ledPin5,OUTPUT);
  pinMode(ledPin6,OUTPUT);
  pinMode(ledPin7,OUTPUT);

  /**** photocells *****/
  pinMode(photocellPin, INPUT);

  /***** motion sensor *****/
  pinMode(sensorPin, INPUT); // A0 analog input
  digitalWrite(sensorPin, HIGH); //INTERNAL PULL-UP RESISTOR
  delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can detect presence. 

}

void loop(){

  int val = analogRead(sensorPin);
  if (val < 1000){
    digitalWrite(ledPin,HIGH);
    digitalWrite(ledPin4,LOW);
  }
  else{
    digitalWrite(ledPin,LOW);
    digitalWrite(ledPin4,HIGH);
  }

  delay(timer);
  Serial.println (val);
  delay (1000);  

  int val2 = analogRead(photocellPin);

  Serial.print("Analog reading for photocell = ");
  Serial.println(val2);     // the raw analog reading

  if(val2 <800)
  {
    digitalWrite(ledPin3,LOW);
    digitalWrite(ledPin4,LOW);
    digitalWrite(ledPin,HIGH);
    for(int i=0; i<3; i++)
    {
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin5, HIGH);
      digitalWrite(ledPin6, HIGH);
      digitalWrite(ledPin7, HIGH);
      delay(1000);

      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(ledPin7, LOW);

      digitalWrite(ledPin2, HIGH);
      delay(500);

      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin5, HIGH);
      delay(500);

      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin5, HIGH);
      delay(500);    

      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, HIGH);
      delay(500);    

      digitalWrite(ledPin6, LOW);
      digitalWrite(ledPin7, HIGH);
      delay(500);    

      digitalWrite(ledPin7, LOW);
      digitalWrite(ledPin6, HIGH);
      delay(500);

      digitalWrite(ledPin6, LOW);
      digitalWrite(ledPin5, HIGH);
      delay(500);

      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin, HIGH);
      delay(500);    

      digitalWrite(ledPin6, LOW);
      digitalWrite(ledPin7, HIGH);
      digitalWrite(ledPin6, HIGH);
      digitalWrite(ledPin5, HIGH);
      digitalWrite(ledPin2, HIGH);    

    }
  }

  //3
  int val3 = digitalRead(inputPin);

  Serial.print("Analog reading for tilt = ");
  Serial.println(val3);     // the raw analog reading

  if(val3 == HIGH){
    //    digitalWrite(ledPin,LOW); 

    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin5, LOW);
    digitalWrite(ledPin6, LOW);
    digitalWrite(ledPin7, LOW);   

    digitalWrite(ledPin3,HIGH);
  }

}