#include "Arduino.h"
#include "Buzzer.h"
#include "Button.h"
// Pin Definitions
#define BUZZER_PIN_SIG 2
#define IROBJAVOID_PIN_OUT 3
#define PUSHBUTTON_PIN_2 4
// Global variables and defines
// object initialization
Buzzer buzzer(BUZZER_PIN_SIG);
Button pushButton(PUSHBUTTON_PIN_2);
// define vars for testing menu
const int timeout = 10000; //define timeout of 10 sec
char menuOption = 0;
long time0;
// Setup the essentials for your circuit to work. It runs first every time your circuit is powered with electricity.
void setup()
{
// Setup Serial which is useful for debugging
// Use the Serial Monitor to view printed messages
Serial.begin(9600);
while (!Serial) ; // wait for serial port to connect. Needed for native USB
Serial.println("start");
pinMode(IROBJAVOID_PIN_OUT, INPUT);
pushButton.init();
menuOption = menu();
}
// Main logic of your circuit. It defines the interaction between the components you selected. After setup, it runs over and over again, in an eternal loop.
void loop()
{
if(menuOption == '1') {
// Buzzer - Test Code
// The buzzer will turn on and off for 500ms (0.5 sec)
buzzer.on(); // 1. turns on
delay(500); // 2. waits 500 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds.
buzzer.off(); // 3. turns off.
delay(500); // 4. waits 500 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds.
}
else if(menuOption == '2') {
// IR Obstacle Avoidance Sensor - Test Code
//Read IR obstacle Sensor. irObjAvoidVar will be '1' if an Obstacle was detected
//Use the onboard trimmer to set the distance of alert
bool irObjAvoidVar = !digitalRead(IROBJAVOID_PIN_OUT);
Serial.print(F("ObjAvoid: ")); Serial.println(irObjAvoidVar);
}
else if(menuOption == '3') {
// Mini Pushbutton Switch - Test Code
//Read pushbutton state.
//if button is pressed function will return HIGH (1). if not function will return LOW (0).
//for debounce funtionality try also pushButton.onPress(), .onRelease() and .onChange().
//if debounce is not working properly try changing 'debounceDelay' variable in Button.h
bool pushButtonVal = pushButton.read();
Serial.print(F("Val: ")); Serial.println(pushButtonVal);
}
if (millis() - time0 > timeout)
{
menuOption = menu();
}
}
// Menu function for selecting the components to be tested
// Follow serial monitor for instrcutions
char menu()
{
Serial.println(F("\nWhich component would you like to test?"));
Serial.println(F("(1) Buzzer"));
Serial.println(F("(2) IR Obstacle Avoidance Sensor"));
Serial.println(F("(3) Mini Pushbutton Switch"));
Serial.println(F("(menu) send anything else or press on board reset button\n"));
while (!Serial.available());
// Read data from serial monitor if received
while (Serial.available())
{
char c = Serial.read();
if (isAlphaNumeric(c))
{
if(c == '1')
Serial.println(F("Now Testing Buzzer"));
else if(c == '2')
Serial.println(F("Now Testing IR Obstacle Avoidance Sensor"));
else if(c == '3')
Serial.println(F("Now Testing Mini Pushbutton Switch"));
else
{
Serial.println(F("illegal input!"));
return 0;
}
time0 = millis();
return c;
}
}
}