Little Dinosaur

I have become increasingly interested in organic movement and mimicking it via mechanical means. Considering the skills I have come to develop with servos, my first thoughts moved towards a peacock or lizard. As I began to think of materiality and found that I might enjoy the cardboard texture on a lizard as compared to a peacock, an animal meant to be stunning and pristine.

The goal was to create a simple creature that would respond to an approaching “threat”. First, at a safe distance, the creature would light up, establishing discomfort. As one walks closer, it would growl, and when too close it would flare its fan to assert its dominance over the situation.

These reactions were centred around an IR Distance Sensor, which would calculate proximity. A series of LEDs would construct the eyes, a small piezo buzzer for the growl, and two servos connected to an difficult-to-glue set of fans.

The following is the code that organizes the system.

#include <Servo.h>

//For distance sensor: Establish which pin sends the signal, and which pin will recive it.

const int trigPin = 7;
const int echoPin = 6;

const int ledPinR1 = 13;
const int ledPinR2 = 12;
const int ledPinR3 = 9;

const int ledPinL1 = 8;
const int ledPinL2 = 5;
const int ledPinL3 = 4;

const int buzzer = 3;
#define ROAR 100

//Declare the servos
Servo servo1;
Servo servo2;

int servoPin1 = 10;
int servoPin2 = 11;

void setup() {
  // put your setup code here, to run once:

//The trigger pin sends the signal. THe echo pin recieves it.
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  pinMode (ledPinR1, OUTPUT);
  pinMode (ledPinR2, OUTPUT);
  pinMode (ledPinR3, OUTPUT);

  pinMode (ledPinL1, OUTPUT);
  pinMode (ledPinL2, OUTPUT);
  pinMode (ledPinL3, OUTPUT);

  pinMode (buzzer, OUTPUT);


  Serial.begin (9600);

void loop() {
  // put your main code here, to run repeatedly:

//  Send a signal, the stop sending a signal.
  long duration, distance;

  digitalWrite(trigPin, LOW);
  digitalWrite(trigPin, HIGH);
  digitalWrite(trigPin, LOW);

//  Detect the signal sent.

  duration = pulseIn(echoPin, HIGH);
  distance = duration / 29 / 2 ;

  Serial.println (distance);

//Establish when each thing (LED, buzzer, Servos) does what, and when.

  if (distance <= 20) { // If at a CLOSE distance move the servos.
  } else {

  if (distance <= 50) { // If at a MED distance move the servos.
    tone(3, ROAR);
  } else {

  if (distance <= 100) { // If at a FAR distance move the servos.
    digitalWrite(ledPinR1, HIGH);
    digitalWrite(ledPinR2, HIGH);
    digitalWrite(ledPinR3, HIGH);

    digitalWrite(ledPinL1, HIGH);
    digitalWrite(ledPinL2, HIGH);
    digitalWrite(ledPinL3, HIGH);
  } else {
    digitalWrite(ledPinR1, LOW);
    digitalWrite(ledPinR2, LOW);
    digitalWrite(ledPinR3, LOW);

    digitalWrite(ledPinL1, LOW);
    digitalWrite(ledPinL2, LOW);
    digitalWrite(ledPinL3, LOW);







We also had to do some readings on physical computing and interactive art. Texts like these are always able to provide me with comfort in the notion of creativity as iteration. No ideas are original, but all ideas are unique.

Out readings on affordance and signalling speak to this idea, in that technology can be additive. Naturally occurring objects have particular forms of affordance, and as humans we add signals. Primitive hatchets and blades were mere sharp rocks many centuries ago. Now, however, we find ourselves in an intense era of weaponry. Of course, weapons aren’t the most advisable artistic creation, but creativity within the small scope of the 20th and 21st century can function the same way.

Instead of attempting to steal an idea, I hope to build off of others’ work. I also hope that we come to create a climate under the assumption of goodwill. If a work looks similar to another, we should praise dialogue between them. However, such ideas will take time to manifest in a capitalist structure. But I expect that we as artists, designers, and creatives reach this space.

Leave a Reply