Skip to content

Instantly share code, notes, and snippets.

@caevyn
Created February 11, 2017 04:02
Show Gist options
  • Save caevyn/ddf43adb68b3a138a34f3b4995e30190 to your computer and use it in GitHub Desktop.
Save caevyn/ddf43adb68b3a138a34f3b4995e30190 to your computer and use it in GitHub Desktop.
#include <NewPing.h>
const int greenPin = 2;
const int redPin = 4;
const int bluePin = 3;
const int trigPin = 11;
const int echoPin = 12;
enum color {
red,
green,
blue,
aqua,
purple,
yellow,
white,
off
};
NewPing sonar(trigPin, echoPin, 200);
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
Serial.println("Hello world");
}
// the loop function runs over and over again forever
void loop() {
delay(50);
unsigned long median = sonar.ping_median(5);
unsigned int distance = sonar.convert_cm(median);
Serial.println(distance);
if (distance > 70)
{
setColor(off);
}
else if (distance >= 60){
setColor(white);
}
else if (distance >= 50){
setColor(aqua);
}
else if (distance >= 40){
setColor(blue);
}
else if (distance >= 30){
setColor(green);
}
else if (distance >= 20){
setColor(purple);
}
else if (distance >= 10){
setColor(yellow);
}
else if (distance >= 1){
setColor(red);
}
else{
setColor(off);
}
}
void setColor(color c){
switch (c) {
case red:
digitalWrite(bluePin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
break;
case blue:
digitalWrite(bluePin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
break;
case green:
digitalWrite(bluePin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
break;
case off:
digitalWrite(bluePin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
break;
case aqua:
digitalWrite(bluePin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
break;
case purple:
digitalWrite(bluePin, HIGH);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
break;
case yellow:
digitalWrite(bluePin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
break;
case white:
digitalWrite(bluePin, HIGH);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
break;
default:
digitalWrite(bluePin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment