Introduction: Crazy Cool Color Changing Sensor :) by Parker, Pedro, Jackson

About: Projects made by students in Ms. Lamm's engineering class at Portland High School.

This project is an amateur level that involves complex code and an interesting circuit

Supplies

  • Bread Board
  • 24 colored wires
  • 4 Red LEDS
  • 4 Yellow LEDS
  • 4 Green LEDS
  • 4 Blue LEDS
  • 220 Ohms Resistors
  • Ultrasonic Sensor
  • Arduino
  • USB cable
  • Laptop
  • Cardboard Box
  • Servo Motor
  • Clay Stuff
  • 15 holes L-Bar
  • Stick
  • Tape

Step 1: Collect Materials

We gathered the materials we needed

Step 2: Planning It Out

We drew out our plan and what we were going to do

Step 3: Getting the Bread Bored Ready

Step 4: Putting Everything on the Bread Board

We put all the wires, LEDS, resistors, and ultrasonic sensor on the bread board

Step 5: Cutting the Box

We drew the line wear we were going to cut it

Step 6: Finishing Everything

The second to last thing we did was coloring the box, cut out a few holes for the ultrasonic sensor and a hole for the Servo sign, and put the cover on top of our circuit to cover up the wires.

Step 7: Create Sign, Plus Tape It Onto the Servo

We added a sign that says, "Back Away!" and the sign goes up through the hole when someone gets really close.

Step 8: Writing and Finishing the Code

The final thing we did was wrote code and made sure it worked


CODE:

#include <Servo.h>

Servo myservo;


const int trig = 5 ;

const int echo = 4 ;


const int BlueOne = 13;

const int BlueTwo = 12;

const int GreenOne = 11;

const int GreenTwo = 10;

const int YellowOne = 9;

const int YellowTwo = 8;

const int RedOne = 7;

const int RedTwo = 6;


long duration;

int distance;

void setup() {

 // put your setup code here, to run once:

 myservo.attach(3);

 pinMode (trig, OUTPUT);

 pinMode (echo, INPUT);


 pinMode(BlueOne, OUTPUT);

 pinMode(BlueTwo, OUTPUT);

 pinMode(GreenOne, OUTPUT);

 pinMode(GreenTwo, OUTPUT);

 pinMode(YellowOne, OUTPUT);

 pinMode(YellowTwo, OUTPUT);

 pinMode(RedOne, OUTPUT);

 pinMode(RedTwo, OUTPUT);


 Serial.begin (9600);


}


void loop() {

 // put your main code here, to run repeatedly:


 digitalWrite(trig, LOW);

 delayMicroseconds(1000);

 digitalWrite(trig, HIGH);

 delayMicroseconds(1000);

 duration = pulseIn(echo, HIGH);

 distance = duration * 0.034 / 2;

 Serial.println (distance);


 if (distance <= 12)

 {

  myservo.write(90);

  digitalWrite (BlueOne, HIGH);

 }

 else

 {

  myservo.write(0);

  digitalWrite (BlueOne, LOW);

 }

 if (distance <= 22)

 {

  digitalWrite (BlueTwo, HIGH);

 }

 else

 {

  digitalWrite (BlueTwo, LOW);

 }

 if (distance <= 33)

 {

  digitalWrite (GreenOne, HIGH);

 }

 else

 {

  digitalWrite (GreenOne, LOW);

 }

 if (distance <= 44)

 {

  digitalWrite (GreenTwo, HIGH);

 }

 else

 {

  digitalWrite (GreenTwo, LOW);

 }

 if (distance <= 55)

 {

  digitalWrite (YellowOne, HIGH);

 }

 else

 {

  digitalWrite (YellowOne, LOW);

 }


 if (distance <= 66)

 {

  digitalWrite (YellowTwo, HIGH);

 }

 else

 {

  digitalWrite (YellowTwo, LOW);

 }


 if (distance <= 77)    // if the distance is less than 77, turn on the blue lights

 {

  digitalWrite (RedOne, HIGH);

 }

 else

 {

  digitalWrite (RedOne, LOW);

 }


 if (distance <= 88)

 {

  digitalWrite (RedTwo, HIGH);

 }

 else

 {

  digitalWrite (RedTwo, LOW);

 }

}