#include <EYW.h>
EYW::Camera cameraservo;
EYW::Altimeter myaltimeter;
EYW::RangeFinder proximity;//ultra sonic range finder(usrf) name is proximity
int distance = 0;//variable for distance is 0 for now
int bpm = 140; // beats per minute
int qrt = 60000 / bpm; // this converts the bpm to each quarter note
int hlf = qrt * 2;
int eht = qrt / 2;
int sx = eht / 2;
int ddt = 1.5;
int whl = qrt * 4;
int art = qrt / 8;
int anote = 104; //notes for usrf
int hdnote = 277;
int henote = 311;
int hfnote = 349;
int hgnote = 370;
int hanote = 415;
float current_height = 0;
void setup()
{
cameraservo.begin(2, 4, 5);
cameraservo.calibrate(3, 90);
cameraservo.alarm(10, 534, 100);
cameraservo.motor.write(180);
cameraservo.beginTimer(10000);
Serial.begin(9600);
myaltimeter.begin();
myaltimeter.calibrate(100);
myaltimeter.alarm();
Serial.begin(9600);
proximity.begin();//starts the usrf
proximity.alarm();//set alarm off(default is 659 Hz for 1/20 of a second)
proximity.calibrate(10); //10 as in cm
/*calibrates the usrf,
get something and and ruler and move it closer until the beeping stops
which should be when it hits the target amount in centimetres*/
pinMode(led, OUTPUT);// initialize the digital pin as an output(led)
pinMode(button, INPUT);//initialize the digital pin as an input (button)
}
void loop ()
{
if (cameraservo.timerExpired() == true || cameraservo.buttonPressed() == true)
current_height = myaltimeter.getHeightAvg(20);
Serial.print("Current Height: ");
Serial.println(current_height);
if (current_height > 1)
{
cameraservo.getPicture();
cameraservo.beginTimer(5000);
myaltimeter.alarm(6, 2000, 500);
}
distance = proximity.getDistance();
Serial.print("Current Distance");//gets distance from usrf and gives it to the serial monitor
Serial.println(distance);
if (distance < 5) //if the distance is less than 5 cm then sound the alarm
{
proximity.alarm(1, hdnote, ddt * qrt); //rickrolls the user
delay(art);
proximity.alarm(1, henote, ddt * qrt);
delay(art);
proximity.alarm(1, anote, qrt);
delay(art);
proximity.alarm(1, henote, ddt * qrt);
delay(art);
proximity.alarm(1, hfnote, ddt * qrt);
delay(art);
proximity.alarm(1, hanote, sx);
delay(art);
proximity.alarm(1, hgnote, sx);
delay(art);
proximity.alarm(1, hfnote, sx);
delay(art);
proximity.alarm(1, henote, sx);
delay(art);
proximity.alarm(1, hdnote, ddt * qrt);
delay(art);
proximity.alarm(1, henote, ddt * qrt);
delay(art);
proximity.alarm(2, anote, hlf);
delay(art);
proximity.alarm(1, hgnote, sx);
delay(art);
proximity.alarm(1, hfnote, sx);
delay(art);
proximity.alarm(1, henote, sx);
delay(art);
}
}