// Include Libraries
#include “Arduino.h”
#include “PiezoSpeaker.h”
#include “SoilMoisture.h”
// Pin Definitions
#define PIEZOSPEAKER5V_PIN_SIG 3
#define SOILMOISTURE5V_PIN_SIG A0
// Global variables and defines
unsigned int piezoSpeaker5vHoorayLength = 6; // amount of notes in melody
unsigned int piezoSpeaker5vHoorayMelody[] = {NOTE_C4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5}; // list of notes. List length must match HoorayLength!
unsigned int piezoSpeaker5vHoorayNoteDurations[] = {8 , 8 , 8 , 4 , 8 , 4 }; // note durations; 4 = quarter note, 8 = eighth note, etc. List length must match HoorayLength!
// object initialization
PiezoSpeaker piezoSpeaker5v(PIEZOSPEAKER5V_PIN_SIG);
SoilMoisture soilMoisture5v(SOILMOISTURE5V_PIN_SIG);
// 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”);
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') {
// Piezo Speaker - Test Code
// The Speaker will play the Hooray tune
piezoSpeaker5v.playMelody(piezoSpeaker5vHoorayLength, piezoSpeaker5vHoorayMelody, piezoSpeaker5vHoorayNoteDurations);
delay(500);
}
else if(menuOption == '2') {
// Soil Moisture Sensor - Test Code
int soilMoisture5vVal = soilMoisture5v.read();
Serial.print(F("Val: ")); Serial.println(soilMoisture5vVal);
}
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) Piezo Speaker"));
Serial.println(F("(2) Soil Moisture Sensor"));
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 Piezo Speaker"));
else if(c == '2')
Serial.println(F("Now Testing Soil Moisture Sensor"));
else
{
Serial.println(F("illegal input!"));
return 0;
}
time0 = millis();
return c;
}
}
}
/*******************************************************
-
Circuito.io is an automatic generator of schematics and code for off
-
the shelf hardware combinations.
-
Copyright © 2016 Roboplan Technologies Ltd.
-
This program is free software: you can redistribute it and/or modify
-
it under the terms of the GNU General Public License as published by
-
the Free Software Foundation, either version 3 of the License, or
-
(at your option) any later version.
-
This program is distributed in the hope that it will be useful,
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-
GNU General Public License for more details.
-
You should have received a copy of the GNU General Public License
-
along with this program. If not, see http://www.gnu.org/licenses/.
-
In addition, and without limitation, to the disclaimers of warranties
-
stated above and in the GNU General Public License version 3 (or any
-
later version), Roboplan Technologies Ltd. (“Roboplan”) offers this
-
program subject to the following warranty disclaimers and by using
-
this program you acknowledge and agree to the following:
-
THIS PROGRAM IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS, AND
-
WITHOUT WARRANTIES OF ANY KIND EITHER EXPRESS OR IMPLIED. ROBOPLAN
-
HEREBY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
-
NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, TITLE, FITNESS
-
FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND THOSE ARISING BY
-
STATUTE OR FROM A COURSE OF DEALING OR USAGE OF TRADE.
-
YOUR RELIANCE ON, OR USE OF THIS PROGRAM IS AT YOUR SOLE RISK.
-
ROBOPLAN DOES NOT GUARANTEE THAT THE PROGRAM WILL BE FREE OF, OR NOT
-
SUSCEPTIBLE TO, BUGS, SECURITY BREACHES, OR VIRUSES. ROBOPLAN DOES
-
NOT WARRANT THAT YOUR USE OF THE PROGRAM, INCLUDING PURSUANT TO
-
SCHEMATICS, INSTRUCTIONS OR RECOMMENDATIONS OF ROBOPLAN, WILL BE SAFE
-
FOR PERSONAL USE OR FOR PRODUCTION OR COMMERCIAL USE, WILL NOT
-
VIOLATE ANY THIRD PARTY RIGHTS, WILL PROVIDE THE INTENDED OR DESIRED
-
RESULTS, OR OPERATE AS YOU INTENDED OR AS MAY BE INDICATED BY ROBOPLAN.
-
YOU HEREBY WAIVE, AGREE NOT TO ASSERT AGAINST, AND RELEASE ROBOPLAN,
-
ITS LICENSORS AND AFFILIATES FROM, ANY CLAIMS IN CONNECTION WITH ANY OF
-
THE ABOVE.
********************************************************/