Bat téléphone du vieux téléphone à cadran

Avertissement : aucun rotatif vieux ne téléphones ont été blessés dans ce projet !   J’avais acheté un grand nombre de téléphones rotatifs d’une vente immobilière et inclus dans cet achat était une boîte de téléphones cassés et des pièces de téléphone.  C’est dans cette boîte que j’ai eu mes matières premières pas partir d’un téléphone rotatoire de travail. 

Ce n’est pas un Instructable complet que j’ai omis de prendre les photos bon le long du chemin, mais j’espère faire encore un de ces (mieux je l’espère) et documentera mieux à ce moment-là.

Par guidomax, j’ai vu l’Instructable suivant: (Merci guidomax!!!)   et avoir une collection de téléphones/parties rotatives, je voulais voir ce que je pourrais faire avec eux.

Je décide que je voudrais essayer de rendre le téléphone bat avec le signal et présentez-le comme un cadeau à ma fille pour les vacances.

Voici une courte vidéo de fonctionner.  La musique est beaucoup plus forte en personne.

Mes étapes :
1. tout d’abord j’ai évoqué l’Instructable ci-dessus pour voir si je pouvais obtenir le fonctionnement de l’interface et comme le suggère l’Instructable, c’était assez facile de le faire.

2. j’ai pris un vieux corps de téléphone et apprêté et pulvériser peints en rouge.  J’ai fait le combiné aussi et le cordon.

3. j’ai voulu le code de l’Arduino pour jouer le thème de Batman et de produire une chauve-souris signal quand « B », « A », « T », « M », « A », « N » a été composé sur le téléphone.

Le code prenait juste le code de guidomax et modifing il sorte au lieu d’une sortie en série de l’ordinateur, il a juste vérifié pour la chaîne appropriée d’un nombre composé.  Pour exanple BATMAN est « 228626 ». Cette chaîne, voyant l’Arduino, il a commencé la chanson et allumé le signal bat.

La chanson : J’ai eu un bouclier de vague Adafruit dont je n’avait jamais utilisé et vu cela comme une occasion de le vérifier. Il a fallu une bonne journée pour moi de le construire (il est livré en kit) et puis il y a une procédure à respecter pour obtenir votre fichier wav sur le bouclier.  C’est une procédure facile si vous utilisez iTunes.  Juste acheter la chanson et le convertir au besoin en utilisant les menus d’iTunes et faites glisser vers le bouclier. Sans iTunes, c’est plus compliqué, mais la page Adafruit vous guide à travers elle.

Le Bat-Signal : Plusieurs autres Instructables montrer comment faire un signal et j’ai pris ce que je pouvais d’eux mais c’était plus ou moins tâtonnements avant que je suis venu avec l’idée de la fin.  J’ai couper une bouteille d’eau environ de moitié et mettre un petit trou dans le bouchon à vis. J’ai inséré une LED rouge dans le petit trou. J’ai peint en noir le bouchon de la bouteille.  Pour obtenir l’image s’affiche très bien, j’ai dû couper un symbole de la petite chauve-souris et fixez-le en face de la bouteille.  Cela a fonctionné, mais je pense qu’il doit y avoir une manière plus ordonnée.   J’ai chaud collé la bouteille à une ouverture à l’arrière du téléphone (colle chaude est merveilleuse!), j’ai fait.

Le code : mon idée de départ était d’avoir plusieurs super héros dans le code. C’est à dire si vous composé de Batman, tu as le thème de la musique et le signal, si que vous avez composé SUPERMAN, tu as une musique différente, etc..  Ainsi vous pourrez voir un code qui est là pour cela mais j’ai jamais eu que jusqu'à maintenant.  Il est juste de BATMAN.

Batmanv2
Cela une tentative d’avoir plusieurs wav files et joue l’injecteur approprié
basé sur la séquence des numéros composés sur le téléphone
Si 228626b alors jouer le thème de batman

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include « WaveUtil.h »
#include « WaveHC.h »

Carte de SdReader ;    Cet objet conserve les informations de la carte
Vol FatVolume ;    Il conserve les informations pour la partition sur la carte
FatReader racine ;   Il conserve les informations pour le système de fichiers sur la carte
FatReader f ;      Il conserve les informations pour le fichier que nous allons jouer

WaveHC vague ;      C’est le seul objet (audio) de la vague, puisque nous allons jouer seulement un à la fois

#define DEBOUNCE 100 / / bouton debouncer

--de V1---
// -----------------
int needToPrint = 0 ;
int count ;
mine
int redLed = 8 ;
int in_from_dial = 7 ;
lightOn int = 6 ;
int craddleUp = 9 ;
int val = faible ;     variable pour stocker la valeur lue
//
int lastState = faible ;
int trueState = faible ;
long lastStateChangeTime = 0 ;
autorisé d’int = 0 ;

constantes

int dialHasFinishedRotatingAfterMs = 100 ;
int debounceDelay = 10 ;

chaînes
String nouvelleChaine ;
Char [] testeur = "123" ;

Char [] Batman = "228626" ;
Char [] Spiderman = "774337626" ;
char de Superman [] = "78737626" ;
char de Batgirl [] = "2284475" ;

-fin de V!---

void setup() {}
mettre en place le port série
Serial.Begin(9600) ;
putstring_nl ("WaveHC avec sélection de chanson ») ;

putstring ("RAM libre:") ;       Ce qui peut aider avec le débogage, manquer de RAM est mauvais
Serial.println(freeRam()) ;      s’il s’agit moins de 150 octets Il peut épeler ennuis !

Définissez les broches de sortie pour le contrôle de la DAC. Ce broches sont définis dans la bibliothèque
pinMode (sortie 2) ;
pinMode (3, sortie) ;
pinMode (sortie 4) ;
pinMode (5, sortie) ;

de V1
pinMode (in_from_dial, entrée) ;  12
pinMode (lightOn, sortie) ;    11
pinMode(craddleUp,INPUT) ;  9
pinMode(redLed,OUTPUT) ;  9
fin v1

pin13 LED
pinMode (13, sortie) ;



Si (! card.init(true)) //play avec 4 MHz spi si 8MHz ne fonctionne pas pour vous
Si (! card.init()) {//play avec spi 8 MHz (par défaut plus rapide!)
putstring_nl ("carte init. a échoué!") ;  Quelque chose a mal tourné, permet d’imprimer les raisons pour lesquelles
sdErrorCheck() ;
while(1) ;                            puis « arrêter » - ne rien faire !
}

Enable optimiser la lecture - certaines cartes peuvent timeout. Désactiver si vous rencontrez des problèmes
card.partialBlockRead(true) ;

Maintenant, on va chercher une partition FAT !
uint8_t partie ;
pour (partie = 0; partie < 5; partie ++) {/ / nous avons jusqu'à 5 emplacements de regarder dans
Si (vol.init (carte, partie))
rupture ;                             Nous avons trouvé un, laisse en liberté sous caution
}
Si (partie == 5) {/ / si nous avons fini ne pas trouver un:(
putstring_nl ("aucun FAT partition valide!") ;
sdErrorCheck() ;      Quelque chose a mal tourné, permet d’imprimer les raisons pour lesquelles
while(1) ;                            puis « arrêter » - ne rien faire !
}

Permet d’indiquer à l’utilisateur sur ce que nous avons trouvé
putstring ("partition à l’aide") ;
Serial.Print (partie, DEC) ;
putstring (", est de type FAT") ;
Serial.println(vol.fatType(),DEC) ;     FAT16 ou FAT32 ?

Essayez d’ouvrir le répertoire racine
Si (! root.openRoot(vol)) {}
putstring_nl ("Impossible d’ouvrir le répertoire racine!") ; Quelque chose a mal tourné,
while(1) ;                             puis « arrêter » - ne rien faire !
}

Ouf ! Nous avons passé les parties difficiles.
putstring_nl("Ready!") ;
}

ici il s’agit
le bouclage continuera jusqu'à ce que le récepteur est pickerd vers le haut
puis la séquence de numérotation est enregistrée et archivée
Si un coup est trouvé, puis allumer lumière (pour Batman) et/ou
jouer la chanson

void loop() {}


attendre que le récepteur doit être levé
une fois levée, puis la composition peut être vérifiée
allumer led pour montrer que le téléphone vit rouge
Val = digitalRead(craddleUp) ;   lire l’entrée pin


Si (val == HIGH) {}

digitalWrite (redLed, HIGH) ;


lecture int = digitalRead(in_from_dial) ;

Si ((millis()-lastStateChangeTime) > dialHasFinishedRotatingAfterMs) {}
le cadran n’est pas composé, ou vient de terminer le composé.
Si {(needToPrint)
Si c’est à peine fini composé, il faut envoyer le numéro dans la série
ligne et réinitialisez le compte. Nous mod le comptage par 10 parce que « 0 » enverra 10 impulsions.
Serial.println (Nbre % 10, DEC) ;

faut maintenant ajouter le comte à la chaîne de test et puis testez-le contre la
Chaîne requise pour prendre son pied
NewString.Concat(Count) ;

Si la chaîne est égale à Batman, allumez la lumière et démarrer le fichier wav
Serial.println(NewString) ;
Delay(2000) ;
// --------------------
// -------------- Batman -----------------
Si ((newstring.equals(Batman)) || (newstring.equals(Tester))) {
digitalWrite (lightOn, HIGH) ;

playcomplete ("BATMAN. « « « WAV ») ;
digitalWrite(lightOn,LOW) ;

}
---Spiderman---
Si (newstring.equals(Spiderman)) {}
bat_signal() ;
playcomplete("1.wav") ;
}
// --------------Superman -----------------
Si (newstring.equals(Superman)) {}
bat_signal() ;
playcomplete("1.wav") ;
}
// -------------- BatGirl -----------------
Si (newstring.equals(Batgirl)) {}
bat_signal() ;
playcomplete("1.wav") ;
}

needToPrint = 0 ;
Count = 0 ;
effacée = 0 ;
}

}

Si (lecture! = lastState) {}
lastStateChangeTime = millis() ;
}
Si ((millis()-lastStateChangeTime) > debounceDelay) {}
Debounce - cela arrive une fois qu’il est stabilisé
Si (lecture! = trueState) {}
Cela signifie que le commutateur soit juste allé de fermé a -> ouvrir ou vice versa.
trueState = lecture ;
Si (trueState == HIGH) {}
incrémenter le compteur d’impulsions si il est allé en haut.
Count ++ ;
needToPrint = 1 ; Nous aurons besoin d’imprimer ce nombre (une fois le cadran rotatif)
}
}
}
lastState = lecture ;
}
d’autre
{
nouvelleChaine = "" ;
digitalWrite (lightOn, faible) ;
digitalWrite(redLed,LOW) ;
}

}

Lit un fichier complet de bout en bout avec aucune pause.
void playcomplete(char *name) {}
Appelez notre aide pour trouver et jouer ce nom
playfile(Name) ;
alors que {(wave.isplaying)
ne rien faire pendant sa lecture
}
maintenant sa fait jouer
}

void playfile(char *name) {}
voir si l’objet vague est en train de faire quelque chose
Si (wave.isplaying) {/ / déjà jouer quelque chose, alors arrêtez d’elle !
Wave.Stop() ; Arrête
}
Regardez dans le répertoire racine et ouvrir le fichier
Si (! f.open (racine, nom)) {}
putstring ("Impossible d’ouvrir le fichier") ; Serial.Print(Name) ; retour ;
}
OK, lire le fichier et le transformer en un objet vague
Si (! wave.create(f)) {}
putstring_nl ("pas un valide" WAV") ; retour ;
}

OK le temps de jouer ! Démarrer la lecture
Wave.Play() ;
}

Cette fonction pratique retournera le nombre d’octets actuellement libres en RAM, grand pour le débogage !
int freeRam(void)
{
extern int __bss_end ;
extern int * __brkval ;
int free_memory ;
Si ((int) __brkval == 0) {}
free_memory = ((int) & free_memory)-((int) & __bss_end) ;
}
else {}
free_memory = ((int) & free_memory)-((int) __brkval) ;
}
Return free_memory ;
}

Sub sdErrorCheck(void)
{
Si (! card.errorCode()) retourner ;
putstring ("\n\rSD I/O erreur:") ;
Serial.Print(Card.ErrorCode(), HEX) ;
putstring (",") ;
Serial.println(Card.ErrorData(), HEX) ;
while(1) ;
}

L’Arduino, que j’ai utilisé était un UNO

Encore une fois, j’aimerais qu'avoir plus de photos et mieux documentées. La prochaine fois.

Ma fille pensée est un pur cadeau et elle semblait heureuse, mais c’est ce que font les filles. :)

Articles Liés

Un cadran de téléphone à cadran à un Arduino d’interface

Un cadran de téléphone à cadran à un Arduino d’interface

un vieux téléphone à cadran peut être utilisé pour diverses raisons dans vos projets d'Arduino - utilisez-le comme un nouveau périphérique d'entrée ou utiliser l'Arduino pour interfacer un téléphone à cadran à votre ordinateur.Il s'agit d'un guide tr
Comment transformer un téléphone à cadran old school en un périphérique d’entrée.

Comment transformer un téléphone à cadran old school en un périphérique d’entrée.

Un téléphone à cadran est parfait pour les pirates débutants.Ils ne sont pas très compliqués : pour l'essentiel, vous pouvez juste regarder les fils et deviner ce que la plupart d'entre eux contrôle.Glisser un microcontrôleur, et vous pouvez utiliser
RotaryX : Comment faire pour pirater un téléphone à cadran

RotaryX : Comment faire pour pirater un téléphone à cadran

Comme beaucoup de technologie analogique, un téléphone à cadran exploitée avec une série de commutateurs haute/basse qui peut facilement être raccordée à un Arduino pour programmation aventures. Ce tutoriel vous guidera dans le processus d'ouverture
Purple téléphone à cadran

Purple téléphone à cadran

j'ai eu un vieux téléphone à cadran qui avait besoin d'une bonne marque sur.  Alors pourquoi pas violet !Etape 1: Obtenir le téléphone et nettoyer j'ai trouvé ce téléphone à une vente immobilière.  Il est très sale, mais semble fonctionner.  J'ai uti
Raspberry Pi dans le téléphone à cadran

Raspberry Pi dans le téléphone à cadran

J'ai trouvé un vieux téléphone à cadran Western Electric dans mon grenier. C'est vraiment un étonnant morceau de matériel. Il semble fonctionner très bien plusieurs dizaines d'années après que sa construction en dépit de tout ce que l'abus a pris ava
Téléphone cadran rotatif + Arduino + encre Invisible = cadeau d’anniversaire

Téléphone cadran rotatif + Arduino + encre Invisible = cadeau d’anniversaire

j'ai un certain nombre de téléphones cadran rotatif et aux pièces téléphone j'ai pensé que je pourrais utiliser d'une certaine façon idiote.Je commence avec cette instructableQuand j'ai fini, j'ai une question qui fonctionne comme suit :-composer un
Faible technologie Rotary Phone fait sans fil.

Faible technologie Rotary Phone fait sans fil.

Un téléphone à cadran est cool, ils devraient rester cool même sans fil !Je dois dire que je n'aime pas les objets vintage. Un de mes préférés est bien sûr un vieux téléphone à cadran. J'ai utilisé d'en avoir un à la maison jusqu'à ce que j'avais 10
Adaptation d’un combiné téléphonique à un téléphone cellulaire

Adaptation d’un combiné téléphonique à un téléphone cellulaire

par Bill Reeve (billreeveAdapté pour instructables par souris (mouse.reeveAvertissement : La procédure décrite ici peut ne pas fonctionner pour vous - c'est un risque, que vous devez prendre. Si cela ne fonctionne pas, ou si vous cassez quelque chose
Station de recharge du téléphone des téléphone rétro

Station de recharge du téléphone des téléphone rétro

j'adore le look d'un téléphone à cadran vintage et avait un couple d'entre eux traînent ne demandant qu'à être ramené à la vie. Dans un accès d'inspiration, j'ai décidé d'épouser la forme et la fonction. Ainsi la rétro téléphone téléphone Charging St
2 Téléphone Intercom avec Buzzers...

2 Téléphone Intercom avec Buzzers...

Salut-j'ai remarqué lors de mes voyages autour du Conseil ces derniers temps, qu'il y a eu un certain nombre de projets pour un simple interphone 2 Téléphone. Ce n'est pas une mauvaise critique, mais la plupart d'entre eux ne semble pas avoir un moye
Rotatif téléphone iPod Dock

Rotatif téléphone iPod Dock

j'ai toujours aimé la réorientation une chose en une autre. Cette instructable montrera des photos de mon iPod rempli d'ancrage avec commentaire sur comment je l'ai mis ensemble. Je m'excuse que je na pas prendre des photos à travers l'ensemble du pr
Années 1970 raspberry Pi Amazon AlexaPhone

Années 1970 raspberry Pi Amazon AlexaPhone

Il s'agit d'un style des années 1970 trimphone j'ai transformé pour abriter un Pi de framboise exécutant le service de recherche vocale d'Amazon Alexa.Pour l'utiliser il suffit de décrocher le combiné, parler de votre requête, raccrocher et réponse d
Trucs et astuces pour un voyage parfait

Trucs et astuces pour un voyage parfait

Oh je pourrais continuer pendant jours ici, mais voici quelques uns de mes trucs favoris & astuces pour faire un road trip c'est l'aventure plutôt que juste un road trip qui vient vous devient une destination.Etape 1: Ne définissez pas les butées en
Choses de coupe en deux

Choses de coupe en deux

Pendant ma résidence au quai 9, je me suis demandé comment je pourrais injecter surprise, intuition et spontanéité dans ma pratique de l'art en utilisant des techniques de fabrication numérique. Comme j'ai travaillé par le biais de divers processus,