Rotierende Telefon + Arduino + unsichtbare Tinte = Geburtstagsgeschenk


ich habe eine Reihe von Wählscheibe Telefone und Telefon-Teile, die ich dachte, ich könnte in eine dumme Art und Weise verwenden.

Ich beginnend mit diesem instructable

Wenn ich fertig war, habe ich ein Element, das wie folgt funktioniert:

-Wählen Sie beliebige Zahl oder Zahlenfolge
-große rote Taste um die Sequenz zu testen.
-die Arduino spielt einen Song auf die erste Ziffer der Sequenz gewählt.
- Aber wenn die richtige Reihenfolge gewählt wird, in diesem Fall meine Töchter Name, die Arduino wird spielen die "Happy Birthday Song", drehen Sie das Metallsieb und UV-Leds Leuchten. Dadurch wird erkennbar, dass die "Happy Birthday-Nachricht schrieb ich auf dem Bildschirm mit dem Stift unsichtbare Tinte.

Video zu folgen

Also im Grunde ist was ich habe:

Der Arduino zeichnet die Telefon mit Wählscheibe Eingabe als Zeichenfolge und prüft dann der Code für eine bestimmte Zeichenfolge.

Wenn es nicht, dass die Saite ist, spielt es dann einer der 5 Songs, die in der Skizze codiert sind.

Wenn es die richtige Zeichenfolge ist dann die Arduino weist das Servo zu drehen und das UV-Licht leuchtet und spielt das Geburtstagslied.

Der Code folgt:

Ich habe Stücke von ihm hier und da. Die Ton-Funktion wird zusammen mit einer pitches.h-Datei verwendet.

/ * 21.03.12 - begonnen, Projekt mit Wählscheibe zu machen
-Geburtstagsgeschenk für Christine verwendet werden
-Idee:
Rufnummern werden ein anderes Lied spielen.
wählen ihren Namen werden LEDs leuchten die Happy Birthday-Messgae zeigen
oder die glückliche Hochschule für Harrie und Riek

-beginnend mit dem Code für die batphonev1
-viele Änderungen vornehmen müssen

-v2 - Watys haben viele Lieder oder Notizen betrachten anzufangen

*/
#include < Servo.h >
#include "pitches.h"

Herzlichen Glückwunsch zum Geburtstag
Int Melodybd [] = {NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_C4,
NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4, NOTE_C4, NOTE_C4,
NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_B4, NOTE_B4, NOTE_A4,
NOTE_F4, NOTE_G4, NOTE_F4};
Int NoteDurationsbd [] = {3, 16, 4, 4, 4, 2, 3, 16, 4, 4, 4,2, 3, 16, 4,4,4,4,4,3,16,4,4,4,2};
Int NumNotesbd = 25;

Aniversary
Hier kommt die Braut
Int Melodyanv [] = {NOTE_A3, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_A3, NOTE_D4, NOTE_B3, NOTE_C4, NOTE_A3, NOTE_C4, NOTE_F4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_D4};
Beachten Sie die Laufzeiten: 4 = Viertelnote, 8 = Achtelnote usw..:
Int NoteDurationsanv [] = {2,3,8,1,2,3,8,1,2,3,8,2,3,8,2,3,8,1};
Int NumNotesanv = 18;

1, starwars
Int melody1 [] = {NOTE_G5, NOTE_G5, NOTE_G5, NOTE_DS5, NOTE_AS5, NOTE_G5, NOTE_DS5, NOTE_AS5, NOTE_G5};
Int noteDurations1 [] = {3, 3, 3, 4, 8, 3, 4, 8, 2};
Int numNotes1 = 9;

//   2. zwei Bits Sache
Int melody2 [] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};
Int noteDurations2 [] = {4,8,8, 4,4,4,4,4};
Int numNotes2 = 8;

3 pop geht das Wiesel

Int melody3 [] = {}
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_E4,
NOTE_G4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_C4,
NOTE_D4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_C4, 0,
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_E4,
NOTE_G4, NOTE_E4, NOTE_C4, 0, NOTE_A4,
NOTE_D4, NOTE_F4, NOTE_E4, NOTE_C4, 0};

Int noteDurations3 [] = {4, 8, 4, 8, 8, 8, 8, 4, 8, 4, 8, 4, 8, 3, 4, 8, 4, 8, 4, 8, 8, 8, 8, 4, 4, 2, 4, 4, 4, 4, 4};
Int numNotes3 = 31;

4 batman
Int melody4 [] = {NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_GS3, NOTE_G3, NOTE_G3, NOTE_GS3, NOTE_GS3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_GS3, NOTE_G3, NOTE_G3, NOTE_GS3, NOTE_GS3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_GS3, NOTE_G3, NOTE_G3, NOTE_GS3, NOTE_GS3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_GS3, NOTE_G3, NOTE_G3 NOTE_GS3, NOTE_GS3, NOTE_E4, NOTE_E4};
Int noteDurations4 [] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4,8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4};
Int numNotes4 = 32;

5 bekannte klassische
int melody5[]= {NOTE_E4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_D4,NOTE_E4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_C4 ,NOTE_D4,NOTE_D4,NOTE_E4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_E4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_D4,NOTE_G3,NOTE_E4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_E4,NOTE_D4,NOTE_C4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_D4,NOTE_C4 NOTE_C4};
Beachten Sie die Laufzeiten: 4 = Viertelnote, 8 = Achtelnote usw..:
Int noteDurations5 [] = {4,4,4,4,4,4,4,4,4,4,4,4,2,8,2,4,4,4,4,4,4,4,4,4,4,4,4,2, 4,4,4,4,4,8,8,4,4,4,8,8,4,4,4,4,2,4,4,4,4,4,4,4,4,4,4,4,4,2,8,2};
Int numNotes5 = 62;

Int NeedToPrint = 0;
Int Count;
mir
const Int Try_it = 3;
const Int In_from_dial = 2;
const Int LightOn = 11;

Int ButtonState = 0;         Variable für das Lesen des Drucktasten status
Int Firstnum = 0;
Char gespielt = ' n ';
Ende mine

Int LastState = LOW;
Int TrueState = LOW;
lange LastStateChangeTime = 0;
Int gelöscht = 0;

konstanten

Int DialHasFinishedRotatingAfterMs = 100;
Int DebounceDelay = 10;

Streicher
String Newstring;
Char Carrie [] = "227743";
Char Daniel [] = "326435";
Char Big50 [] = "1";
Char Harrie [] = "2";

Servo
Servo Myservo;  Erstellen Sie Servo-Objekt um ein Servo Steuern
Int pos = 0;    Variable, die Servoposition speichern

// --------------------------------------------

void setup()
{

Serial.Begin(9600);

PinMode (In_from_dial, Eingabe);  2
PinMode (Try_it, Eingabe);  3
PinMode (LightOn, Ausgang);    11
PinMode (13, OUTPUT);    12
myservo.Attach(6);  legt das Servo auf Pin 6 auf das Servo-Objekt

}

void loop() {}
DigitalWrite (13, HIGH);   Festlegen der LED auf
/*
Benutzer werden Nummern, bis sie die "try it" Buttonb treffen
müssen Sie also Zeichenfolge zu erstellen, bis die Taste gedrückt ist
*/
Lesen Sie den Zustand der Schaltfläche "Tryit"
DigitalWrite (LightOn, LOW);
ButtonState = digitalRead(try_it);
Try_it = hoch;
Wenn (ButtonState == LOW) {}

Int lesen = digitalRead(in_from_dial);

Wenn ((millis()-lastStateChangeTime) > DialHasFinishedRotatingAfterMs) {}
Das Zifferblatt ist nicht gewählt wird, oder hat gerade gewählt wird.
Wenn (NeedToPrint) {}
Wenn es gerade erst beendet ist, gewählt wird, müssen wir die Zahl der Seriennummer senden
Linie und die Anzahl zurücksetzen. Wir mod die Anzahl von 10 da '0' 10 Impulse senden.
Serial.println (Zahl % 10, DEC);

Jetzt müssen die Test-String der Graf hinzu und testen Sie es gegen die
Erforderlicher String-Wert, einen Hit zu bekommen
newstring.Concat(Count);

NeedToPrint = 0;
Count = 0;
gelöscht = 0;
}

}

Wenn (lesen! = LastState) {}
LastStateChangeTime = millis();
}
Wenn ((millis()-lastStateChangeTime) > DebounceDelay) {}
Entprellung - geschieht dies, sobald es stabil ist
Wenn (lesen! = TrueState) {}
Dies bedeutet, dass der Schalter entweder nur aus geschlossenen gegangen hat -> öffnen oder umgekehrt.
TrueState = lesen;
Wenn (TrueState == HIGH) {}
erhöhen Sie die Anzahl der Impulse, wenn es hoch gegangen ist.
Graf ++;
NeedToPrint = 1; Wir müssen diese Nummer Drucken (wenn das Zifferblatt drehen fertig ist)
}
}
}
LastState = lesen;
}

anderes
{
Benutzer will nun seine Einwahl testen
//
gespielt = ' n ';
Serial.println(newstring);
test_it();
Newstring = "";

}
}
// --------------------- my functions -------------------------
// ------------------------------------------------------------

Schalten der leds

void turnon_Leds()
{
DigitalWrite (LightOn, HIGH);

}

// --------------------------------------------------
Testen Sie die Zeichenfolge

void test_it()
{

Serial.println(newstring);
Serial.println(firstnum);
Delay(2000);

/*

Wenn "BIG50" dann Happy Birthday Spielen, Servo wiederum Leds schalten
Wenn "HARRIE" dann Anv Song wiederzugeben, Trun Servo schalten Sie leds

*/
Wenn (newstring.equals(Carrie)) {}

Schalten Sie servo
für (pos = 0; pos < 180; pos += 1) / / reicht von 0° bis 180°
{/ / in Schritten von 1 Grad
myservo.Write(POS);              Servo zu gehen, um die position in der Variable "pos" zu sagen
Delay(15);                       wartet 15ms für das Servo in die Position zu erreichen
}

turnon_Leds();

für (Int ThisNote = 0; ThisNote < NumNotesbd; ThisNote ++) {}

Int NoteDuration = 1000/NoteDurationsbd [ThisNote];

Ton (8, melodybd[thisNote],noteDuration);

um die Töne zu unterscheiden, setzen Sie eine Mindestzeit zwischen ihnen.
die Note Dauer + 30 % scheint gut zu funktionieren:
Int PauseBetweenNotes = NoteDuration * 1,4;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:

noTone(8);
}
gespielt = 'Y';
Delay(2000);

}

//-----------------------------------------

Wenn (newstring.equals(Daniel)) {}

Schalten Sie servo
für (pos = 180; pos > = 15; pos = 1) / / reicht von 0° bis 180°
{/ / in Schritten von 1 Grad
myservo.Write(POS);              Servo zu gehen, um die position in der Variable "pos" zu sagen
Delay(15);                       wartet 15ms für das Servo in die Position zu erreichen
}


turnon_Leds();

für (Int ThisNote = 0; ThisNote < NumNotesbd; ThisNote ++) {}

Int NoteDuration = 1000/NoteDurationsbd [ThisNote];

Ton (8, melodybd[thisNote],noteDuration);

Int PauseBetweenNotes = NoteDuration * 1,4;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);
}
gespielt = 'Y';
Newstring = "";
Delay(2000);
}

Serial.println got ("here1");
Delay(500);

benötigen Sie erste Difgit und verwenden Sie Fall, um den Song zu spielen

Serial.println("here2");
Serial.println(newstring);
Delay(1000);

Wenn (gespielt == ' n ') {}

1 0oder 9
Wenn ((newstring.startsWith("1")) || (newstring.startsWith("9"))) {

durchlaufen Sie die Töne der Melodie:
für (Int ThisNote = 0; ThisNote < numNotes1; ThisNote ++) {}
Int NoteDuration = 1000/noteDurations1 [ThisNote];
Ton (8, melody1[thisNote],noteDuration);

Int PauseBetweenNotes = NoteDuration * 1,30;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);

}
gespielt = 'Y';
Delay(500);
Newstring = "";
}

beginnt mit 2 oder 8
Wenn ((newstring.startsWith("2")) || (newstring.startsWith("8")))
{

durchlaufen Sie die Töne der Melodie:
für (Int ThisNote = 0; ThisNote < numNotes2; ThisNote ++) {}
Int NoteDuration = 1000/noteDurations2 [ThisNote];
Ton (8, melody2[thisNote],noteDuration);

Int PauseBetweenNotes = NoteDuration * 1,30;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);

}
gespielt = 'Y';
Delay(500);
Newstring = "";
}

beginnt mit 3 oder 7
Wenn ((newstring.startsWith("3")) || (newstring.startsWith("7")))
{

durchlaufen Sie die Töne der Melodie:
für (Int ThisNote = 0; ThisNote < numNotes3; ThisNote ++) {}
Int NoteDuration = 1000/noteDurations3 [ThisNote];
Ton (8, melody3[thisNote],noteDuration);


Int PauseBetweenNotes = NoteDuration * 1,30;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);

}
gespielt = 'Y';
Delay(500);
}

with4 oder 6 beginnt
Wenn ((newstring.startsWith("4")) || (newstring.startsWith("6")))
{

durchlaufen Sie die Töne der Melodie:
für (Int ThisNote = 0; ThisNote < numNotes4; ThisNote ++) {}
Int NoteDuration = 1000/noteDurations4 [ThisNote];
Ton (8, melody4[thisNote],noteDuration);

Int PauseBetweenNotes = NoteDuration * 1,30;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);

}
gespielt = 'Y';
Delay(500);

}

beginnt mit 5 oder 0
Wenn ((newstring.startsWith("5")) || (newstring.startsWith("0")))
{

durchlaufen Sie die Töne der Melodie:
für (Int ThisNote = 0; ThisNote < numNotes5; ThisNote ++) {}
Int NoteDuration = 1000/noteDurations5 [ThisNote];
Ton (8, melody5[thisNote],noteDuration);

Int PauseBetweenNotes = NoteDuration * 1,30;
Delay(pauseBetweenNotes);
der Ton ist zu spielen zu stoppen:
noTone(8);

}
gespielt = 'Y';
Delay(500);

}

}

Ende der Schleife
}

In Verbindung stehende Artikel

Wie erstelle ich unsichtbare Tinte

Wie erstelle ich unsichtbare Tinte

So kam ich auf diese erstaunliche könnte Formel für die Herstellung einer unsichtbare Tinte, mit nur unter UV/Schwarzlicht gesehen werden.Wie?Gute Frage!Schwarzlicht sind nicht anders als jede andere Art von Licht, ob Glühlampen, Leuchtstofflampen od
25-Cent unsichtbare Tinte/Kugelschreiber (UV-Licht sichtbar)

25-Cent unsichtbare Tinte/Kugelschreiber (UV-Licht sichtbar)

haben Sie jemals wollte einer von denen unsichtbare Tinte Kugelschreiber aus dem Store abkühlen, damit Sie geheime Botschaften an deine Freunde schreiben können? Oder vielleicht brauchen Sie es verwenden, um Völker Hände für die Zulassung zu einer Pa
Hohl, Buch, unsichtbare Tinte, Schwarzlicht

Hohl, Buch, unsichtbare Tinte, Schwarzlicht

In der Familie Geschenkaustausch habe ich meinen 13 Jahre alten Bruder wirklich in Sachen Spion ist.  In Gedanken an was ich, ihn machen könnte stieß ich auf ein instructable nach einem ausgehöhlten Buch.  Ich hatte es vorher getan und es funktionier
Wie erstelle ich eine Feder Stift (plus unsichtbare Tinte!)

Wie erstelle ich eine Feder Stift (plus unsichtbare Tinte!)

Feder Stifte sind genial!Sie können als Kostüm Requisiten, geheime Nachricht Stifte, Make-Believe Spielzeug und vieles mehr verwendet werden!Mit diesem instructable, zeige ich Ihnen wie erstelle ich einen Feder Stift PLUS unsichtbare Tinte zu gehen!B
Super einfach Hitze aktiviert unsichtbare Tinte (nicht Zitronensaft)

Super einfach Hitze aktiviert unsichtbare Tinte (nicht Zitronensaft)

5min $5 unsichtbare Tinte unter Verwendung der bereits dort Hitze empfindliche Chemikalie auf Thermopapier. Ich denke das funktioniert viel besser als Zitronensaft, weil Zitrone Hälfte brennen erfordert, dass Sie das Papier zu zeigen, dass up.this vi
Unsichtbare Tinte

Unsichtbare Tinte

Wie machen unsichtbare Tinte - die besten video-Clips sind hier einfach Tutorial darum, unsichtbare Tinte für Tintenstrahldrucker. Cool für Ihre wichtigen Dokument sicherer zu machen..
Wie Sie unsichtbare Tinte zu machen (und auch anzeigen)

Wie Sie unsichtbare Tinte zu machen (und auch anzeigen)

Dies ist eine coole und einfache Möglichkeit, unsichtbare Tinte zu machen und zu sehen, Ihr schreiben, wann immer Sie wollen.Schritt 1: Schritt 1: Materialien Benötigen Sie eine normale gelbe Textmarker, es kann eine andere Farbe, aber gelb ist am be
Wie erstelle ich einen Filzstift COCA-COLA / unsichtbare Tinte

Wie erstelle ich einen Filzstift COCA-COLA / unsichtbare Tinte

https://www.YouTube.com/watch?v=8KkMsSROprI&feature=youtu.beSchritt 1: Ein Filzstift COCA-COLA zu tun / unsichtbare Tinte, die Sie brauchen! Schritt 2: Im heutigen Instructables betrachten wir eine ziemlich ungewöhnliche Art und Weise der Verwendung
WLAN-Arduino Oszilloskop

WLAN-Arduino Oszilloskop

In dieser Anleitung erkläre ich wie man eine Windows 8.1 Telefon, Arduino Uno Board und HC-05 Bluetooth-Modul verwenden, um eine drahtlose Oszilloskop zu bauen. Die Telefonanwendung hat die kritischen Funktionen eines Oszilloskops, obwohl die Bandbre
Gehackt Hexbug Spider Arduino Steuerung

Gehackt Hexbug Spider Arduino Steuerung

Dieses Projekt hat Hexbug Arduino basierende Roboter Spinne überprüfe. Die Steuerung wird unser Projekt abschließen, durch die Bereitstellung von Telefon und Computer.http://Make.robimek.com/Arduino-Control-Hexbug-Spider/Schritt 1: Materialien:Hexbug
Mein altes Handy + Arduino = Phonoduino

Mein altes Handy + Arduino = Phonoduino

Hallo, ist dies ein Projekt von meinem alten Nokia 1100 Handy und Arduino Mega. Durch diese vielen Arduino und Gsm ist basierend Projekt möglich. Das Telefon wird funktionieren wie ein GSM-Modul und Sie können gesendete Nachricht oder rufen Sie jeman
Sonic Screwdriver arbeiten

Sonic Screwdriver arbeiten

04.02.2014 aktualisierenVersion 3.0 ist fertig und kann auf Instructables aufgestellt werden. Ich habe nicht in der Lage, die Anweisungen zu beenden, da ich gerade Schule wieder nach oben angefangen habe, aber sie kommen sollten, in der Hoffnung auf
Erweiterte Moskito Repeller und klatsche

Erweiterte Moskito Repeller und klatsche

Hallo, in diesem Tutorial werde ich Ihnen zeigen, wie man eine elektronische Mücke Repeller und klatsche von Arduino gesteuert. Wann immer Sie in der Nähe von Ihrem Schreibtisch sitzen möchte niemand hören knallende Geräusche der klatsche aber ein Re
Erhalten Sie Ihr Getränk auf, sicher. Die Altoids Treiber bezeichnet.

Erhalten Sie Ihr Getränk auf, sicher. Die Altoids Treiber bezeichnet.

Dies ist ein Set mit sich führen, wenn Sie trinken gehen und keinen Fahrer haben. Sie können nicht ins all diese Informationen, so Sie zu prüfen, 24-Stunden unsichtbare Tinte oder so etwas, Haha möchten vielleicht wohl fühlen. Betrachten Sie es als i