Easter Egg Hunt med Annikken Andee (3 / 3 steg)
Steg 3: Programvara och gör dig redo att starta jakten!
telefonen första.
Lyckligtvis levereras Annikken Andee med en gratis app som du kan hämta från
Apple store för iOS.
Använd Annikken Andee App för att skanna för din enhet. När ansluten telefon kommer igång söka efter ägget.
Dölja den i mörka platser att se färgerna förändras när du komma närmare. Ha kul forskande och glad Eggster alla!
Här är lektioner planen har vi utvecklat för enkel och snabb visuell information för detta projekt.
Lektion 1: Skapa din första Display lådor!
Lektion 4: Ändra färger
Lektion 9: Använda knappar för att styra LED eller reläer
Lektion 20: Använda Bluetooth signalen styrka till kontroll saker
Läs mer om Annikken Andee på
http://www.annikken.com/
Var kan jag ladda ner den senaste bibliotek och firmware?
http://www.annikken.com/getstarted/
Afterwhich, kopiera denna arduino källkoden och ladda upp till arduino.
/************************************************************
[Annikken Andee - Easter Egg Hunt]
================
Använda Bluetooth signalstyrka att justera RGB LED färg
Använda TTS att sjunga en sång!
av Robin Ha < robin
Kolla in våra resurser finns mer information och
idéer på vad du kan göra med den Annikken Andee!
http://Resources.annikken.com
Kolla in vår blogg för regelbundna uppdateringar och kul!
http://annikken.com/Blog
************************************************************/
#include < SPI.h >
#include < Andee.h >
Vi har en displaybox Visa signalstyrkan Bluetooth
AndeeHelper displaybox;
AndeeHelper displaybox2;
AndeeHelper knapp;
AndeeHelper speechObject; Du måste skapa ett tal objekt för telefonen för att prata
AndeeHelper btnNotify;
int signaler [10] = {0,0,0,0,0,0,0,0,0,0}.
int curSignalPos = 0;
int redPin = 13.
int greenPin = 11;
int bluePin = 10;
char strBuffer [30].
char signalStr [4].
int signalStrength;
int staten.
Funktionen setup() är tänkt att säga Arduino vad ska göra
endast när den startar upp.
void setup()
{
Andee.BEGIN(); Installationsprogrammet för kommunikation mellan Annikken Andee och Arduino
Andee.Clear(); Rensa skärmen på någon tidigare visar
setInitialData(); Definiera typer och deras utseende
pinMode(redPin,OUTPUT);
pinMode(greenPin,OUTPUT);
pinMode(bluePin,OUTPUT);
Serial.BEGIN(9600);
}
Detta är funktionen innebar att definiera typerna och utseende av
alla objekt på din smartphone
void setInitialData()
{
displaybox.setId(0); Varje objekt måste ha ett unikt ID-nummer
displaybox.setType(DATA_OUT); Detta definierar ditt objekt som display låda
displaybox.setLocation (0,0, FULL); Anger plats och storlek på objektet
displaybox.setColor(THEME_YELLOW);
displaybox.setTitleColor("50000000");
displaybox.setTitle ("påsk HUNT");
displaybox.setTitleTextColor("FFFFFFFF");
displaybox.setData ("där är ägget?");
displaybox2.setId(2);
displaybox2.setType(DATA_OUT);
displaybox2.setLocation(1,0,full);
displaybox2.SetColor(THEME_ORANGE);
displaybox2.setTitleColor("50000000");
displaybox2.setTitle ("ägg Detector");
displaybox2.setUnit("");
button.setId(6); Glöm inte att tilldela ett unikt ID-nummer
button.setType(BUTTON_IN); Definierar objekt som en knapp
button.setLocation(1,0,FULL);
button.setTitle ("Låt oss fira med Easter Bunny låt!");
button.setColor("FFFFB6C1");
speechObject.setId(12);
speechObject.setType(TTS); Definierar objekt som ett text till tal-objekt
}
int dcCounter = 3;
bool anslutning = false;
Arduino körs instruktionerna här upprepade gånger tills du makt det.
void loop()
{
om (Andee.isConnected()) / / kör när ansluten
{
dcCounter = 3;
IF(Connection==false) {
anslutning = sant;
State = 0;
Andee.Clear();
displaybox.setColor(THEME_YELLOW);
displaybox.Update();
speechObject.updateData ("Välkommen till Easter Egg Hunt!");
Delay(2500);
displaybox2.setData("Initialising.");
speechObject.updateData ("ägg detektor initierar");
displaybox2.Update();
Delay(700);
displaybox2.setData("Initialising..");
displaybox2.Update();
Delay(700);
displaybox2.setData("Initialising...");
displaybox2.Update();
Delay(700);
displaybox2.setData("Initialising.");
displaybox2.Update();
Delay(700);
speechObject.updateData ("ägg Detektor Online");
displaybox2.setData ("< Online >");
displaybox2.Update();
Delay(1500);
}
int str = getStrength();
updateState(str);
stateToBlinkPattern();
displaybox.Update();
displaybox2.setData(StateToText());
displaybox2.Update();
IF(State == 6) {
speechObject.updateData ("du har hittat ägg!");
displaybox2.setData ("du har hittat ägg!");
displaybox2.Update();
spamRandomBlink(3500);
displaybox2.Remove();
displaybox.setData ("påsk ägg Funna");
displaybox.Update();
Button.Update();
speechObject.updateData ("låter sjunga en låt att fira!");
While(1) {
setRGB(-1,-1,-1,1000);
om (button.isPressed())
{
Button.ack();
button.requireAck(false);
button.setTitle ("sjungande ~ ~");
Button.Update();
speechObject.setUtteranceSpeed(0.65);
speechObject.setPitch(1.1);
speechObject.updateData ("Detta är Bunny låten, sjunga med mig!");
speechObject.updateData ("du lägga tassarna rätt");
speechObject.updateData ("du tar tassarna rätt ut");
speechObject.updateData ("du lägga tassarna rätt");
speechObject.updateData ("och du skaka dem om);
speechObject.updateData ("du gör Bunny Pokey");
speechObject.updateData ("och du hoppa. alla. runt");
speechObject.updateData ("det är vad");
speechObject.setUtteranceSpeed(0.45);
speechObject.updateData ("det är allt");
speechObject.setUtteranceSpeed(0.35);
speechObject.updateData("about!");
button.setTitle ("sjungande ~ ~");
Button.Update();
spamRandomBlink(12000);
Button.ack();
Button.Remove();
displaybox.setUnit ("av Annikken");
displaybox.setData ("Glad påsk 2014!");
speechObject.setUtteranceSpeed(0.5);
speechObject.setPitch(1.0);
speechObject.updateData ("Glad påsk");
för (int y = 0; y < 10; y ++) {
displaybox.setColor(THEME_ORANGE);
displaybox.Update();
spamRandomBlink(1500);
displaybox.setColor(THEME_GREEN);
displaybox.Update();
spamRandomBlink(1500);
displaybox.setColor(THEME_PURPLE);
displaybox.Update();
spamRandomBlink(1500);
}
}
}
}
}
annat
{
IF(dcCounter>0)
{
dcCounter--;
}
IF(dcCounter==0) {
anslutning == false;
}
}
Delay(50);
}
int getStrength() {
Andee.sendCommand ("få RSSI", signalStr);
signalStrength = atoi(signalStr); Konvertera till int värde
Signalerar [curSignalPos] = signalStrength;
curSignalPos ++;
om (curSignalPos > = 10) {
curSignalPos = 0;
}
återvända calAverageStrength();
}
void updateState (int averageStr) {
IF(averageStr == 0) {
changeState(0);
}
annars om (averageStr <-80) {
changeState(1);
}
annars om (averageStr < -72) {
changeState(2);
}
annars om (averageStr <-67) {
changeState(3);
}
annars om (averageStr <-62) {
changeState(4);
}
annars om (averageStr <-57) {
changeState(5);
}
annat {
changeState(6);
}
}
char * StateToText() {
IF(State == 0) {
returnera "Calcalating...";
}
annars om (statligt == 1) {
returnera "fortfarande ganska långt från det";
displaybox2.SetColor("FFFF0000");
}
annars om (statligt == 2) {
returnera "Det blir närmare";
displaybox2.SetColor("FF00FF00");
}
annars om (statligt == 3) {
returnera "Inom the vakans";
displaybox2.SetColor("FF0000FF");
}
annars om (statligt == 4) {
returnera "Around the Corner";
displaybox2.SetColor("FFFF00FF");
}
annars om (statligt == 5) {
returnera "förmodligen bredvid dig";
displaybox2.SetColor("FF00FFFF");
}
annars om (statligt == 6) {
displaybox2.SetColor(THEME_ORANGE);
returnera "Du har hittat ägg!";
}
}
void changeState (int newState) {
IF(newState>State) {
State = newState;
}
}
void stateToBlinkPattern() {
IF(State == 0) {
setRGB(10,10,10,2000);
}
annars om (statligt == 1) {
setRGB(255,0,0,2000);
}
annars om (statligt == 2) {
setRGB(0,255,0,1500);
}
annars om (statligt == 3) {
setRGB(0,0,255,1000);
}
annars om (statligt == 4) {
setRGB(255,0,255,1000);
}
annars om (statligt == 5) {
setRGB(0,255,255,1000);
}
annars om (statligt == 6) {
setRGB(-1,-1,-1,1000);
}
}
int calAverageStrength() {
int numberOfValidSignal = 0;
int TotalStrength;
för (int x = 0; x < 10; x ++) {
IF(signals[x]!=0) {
TotalStrength = TotalStrength + signaler [x];
numberOfValidSignal ++;
}
}
IF(numberOfValidSignal==0) {
Return 0;
}
annat {
int str = TotalStrength/numberOfValidSignal;
returnera str;
}
}
int LR = 0;
int LG = 0;
int LB = 0;
flyta stepsize_R = 0;
flyta stepsize_G = 0;
flyta stepsize_B = 0;
void spamRandomBlink (int varaktighet) {
för (int x = (varaktighet) / (400), x > = 0, x--) {
setRGB(-1,-1,-1,2000);
}
}
void setRGB (int R, int G, int B, int uDelay) {
IF(R==-1) {
R = random(100,255);
}
IF(G==-1) {
G = random(100,255);
}
IF(B==-1) {
B = random(100,255);
}
stepsize_R = (float)(R-LR) / (float) 200.
stepsize_G = (float)(G-LG) / (float) 200.
stepsize_B = (float)(B-LB) / (float) 200.
för (int x = 1; x < 201; x ++) {
analogWrite (redPin, LR+(x*stepsize_R));
analogWrite (greenPin, LG+(x*stepsize_G));
analogWrite(bluePin,LB+(x*stepsize_B));
delayMicroseconds(uDelay);
}
LR = R;
LG = G;
LB = B;
}