Our Demo 4 was based around a sleepy or lazy animal. We decided to ultimately depict that animal through a well known cartoon animal named Garfield. We programmed our machine to instinctively lay on its side and have and idle motion to symbolize that it is asleep. However, when put upright, the “tail” begins to twitch and get faster and faster until it eventually pushes him back over on his side.

Here is a video of the Garfield contraption.

Our project seemed to seemed to draw initial attention, have kids wonder what was supposed to happen, remain passive until shown a possible interaction, and then experimented about why. This process happened in about the span of 30-45 seconds. In most cases, once the child’s curiosity of why this object did this, they were in most cases drawn to something else undiscovered in the room. The children had several hypotheses on how they got it to work. Some believed you needed to wave your hands in Garfield’s face to motion him to wake up, others thought that you needed to “pet” the felted area in or for him to go back to sleep. The children mostly had a curious or exploratory attitude, with a few exceptions, like when a child asked me to show what it does, I did, and he said, “So, it is a robot that turns over?”. There were clear favorites in the room that show where projects might should go in the future. The ones involving some sort of competitive or exhilarating aspects tended to keep the attention of the children.

We learned that form could have been improved to increase interest and the effect of our project, as most kids did not immediately understand that it was a sleeping cat needing to be woken up unless we told them. Some improvements can include having our design more close-formed and making the motion more animalistic in nature.

Code

#include <Servo.h&gt;
Servo myservo;
const int SERVO_PIN = 8;
const int LIGHT_SENSOR = A1;


void setup() {
  // put your setup code here, to run once:
  myservo.attach( SERVO_PIN);
  Serial.begin(9600);
  
  

}

void flipOver()
{
      
      int randomWag = random(1, 4);
      for(int i = 5; i < 15; i=i+randomWag)
      {
        myservo.write(0-i);
        delay(500);
        myservo.write(0+i);
        delay(500);
        Serial.println(i);
  }
     
      myservo.write(-90);
      delay(500);
      myservo.write(90);
      delay(500);


     
}

void loop() {
  // put your main code here, to run repeatedly:
    int sensorValue=digitalRead(LIGHT_SENSOR);
    Serial.println(sensorValue);
    myservo.write(-20);
    myservo.write(20);

    if (sensorValue == 0)
    { 
      
      flipOver();

    }

    

}