Projet Arduino-powered
Vidéo :
(Remarque : nous avons édité les sons sur la vidéo réelle. La raison en est que lors de l’enregistrement et vérifier nos clips nous ne pouvions pas entendre les bruits réels alors qu’ils étaient là. Lorsque nous avons rendu la vidéo, on pouvait entendre les sons réels qui ont été activés à l’aide de la machine distributrice, alors que nous avons pensé qu’ils n’ont pas été enregistrées par la caméra. Donc, c’est pourquoi vous entendez les sons deux fois ! Semble que la caméra * fait * enregistrer les sons après tout ! :) )
Matériaux requis ;
-SRF10 ou Devantech SRF08 ultrasonique Ranger Finder
-Les fils de raccordement Arduino (assez longtemps, sinon vous aurez besoin souder les fils entre eux)
-Tape
-Un distributeur automatique !
-Certains orateurs (ou il suffit d’utiliser votre ordinateur portable pour jouer des sons)
Outils nécessaires ;
-Arduino (+ traitement)
-Connaissances base Arduino & traitement
-Les chances sont que vous avez besoin de souder si vos fils ne sont pas assez longtemps
-Sons !
Processus ;
1. tout d’abord, trouver un endroit approprié. N’oubliez pas que vous avez besoin de cacher votre ordinateur portable, votre Arduino et éventuellement vos haut-parleurs hors de la vue.
2. vous aurez besoin sur place/stick le capteur à ultrasons de telle manière qu’il va déclencher un changement des données que les gens utilisent la machine distributrice. Maintenant, vérifiez si les fils sont assez longtemps de votre capteur à l’endroit vous allez cacher votre ordinateur portable, Arduino, etc.. Si ce n’est pas le cas, souder les fils jusqu'à ce qu’ils sont assez longues.
3. trouver les sons que vous voulez jouer lorsque le peuple déclenche le code par le biais de la sonde. Format MP3 est le plus facile à utiliser. Trouvé les sons que vous voulez ? Démarrer une nouvelle esquisse de traitement, enregistrez l’esquisse et collez vos sons dans le dossier correspondant. Voir le code de traitement dans la section « code brut ». Remplacez les noms de fichier .mp3 avec vos noms de fichiers mp3. Éventuellement, supprimer ou ajouter des sons comme vous s’il vous plaît.
4. copiez et collez le code de l’Arduino et tout se connecter les uns aux autres. Voir si vous recevez des données dans votre traitement de Arduino. S’assurer que tout fonctionne ! Quelque chose ne fonctionne pas ? Essayer de trouver l’erreur étape par étape. Votre traitement reçoit-il des valeurs ? Quel genre de valeurs ? Faire l’Arduino imprimer vos valeurs avant d’écrire, etc..
(Code doit être modifié un peu les chances sont de faire les choses à travailler pour vous!)
5. bien ! Temps de peaufiner. Commencez par placer vos outils (capteur, arduino, ordinateur portable, enceintes) où ils devraient être. Avant vous scotcher les fils, etc.. Vérifier (en test), les données que vous recevez lorsque des personnes utilisent la machine distributrice. Peaufinez votre code de telle sorte qu’il répond à la modification des données. C’est habituellement la partie la plus délicate !
6. tape le fils, Masquer tout, exécutez le code et profitez !
7. programme coincé ? Essayez de redémarrer traitement ou en réinitialisant votre Arduino.
Code brut ;
ARDUINO CODE--
SRF10 I2C ou SRF08 Devantech Finder Ranger par ultrasons Illustre l’utilisation de la bibliothèque de fils lecture des données de la Créé le 29 avril 2006 Cet exemple de code est dans le domaine public. #include void setup() lecture int = 0 ; void loop() changeAddress (oldAddress, newAddress) ; {while(1)} } } Le code suivant modifie l’adresse d’un Devantech à ultrasons télémètre (SRF10 ou SRF08) void changeAddress (int oldAddress, int newAddress)
par Nicholas Zambetti
et James Tichenor
Rangers Devantech Utrasonic SFR08 et 10 francs suisses
{
Wire.Begin() ; Joignez-vous à bus i2c (adresse facultatif pour maître)
Serial.Begin(9600) ; commencer la communication série à 9600bps
}
{
données int = 0 ;
int oldAddress = 0 x 70 ; I2C gebruikt enkel 7 bit adressen (de MSB) dus 0xE0 wordt 0 x 70
int newAddress = 0xE2 ; correspond à l’adresse 2--> 0xE4
int newAddress = 0x71 ; Seuls 7 bits sont utilisés--> 0 x 72
cale booléen = false ;
données = readData(newAddress) ;
{if(Data!=0)}
Serial.println(Data) ;
if(Data >100) {}
Serial.Write("e") ;
ElseIf (données < 90) {}
Serial.Write("f") ;
}
}
else {}
Serial.Write("0") ;
}
Delay(100) ; attendre un peu puisque les gens doivent lire la sortie
Delay(1000) ;
}
utilisation : changeAddress(0x70, 0xE6) ;
{
Wire.beginTransmission(oldAddress) ;
Wire.Write(Byte(0x00)) ;
Wire.Write(Byte(0xA0)) ;
Wire.endTransmission() ;
Wire.beginTransmission(oldAddress) ;
Wire.Write(Byte(0x00)) ;
Wire.Write(Byte(0xAA)) ;
Wire.endTransmission() ;
Wire.beginTransmission(oldAddress) ;
Wire.Write(Byte(0x00)) ;
Wire.Write(Byte(0xa5)) ;
Wire.endTransmission() ;
Wire.beginTransmission(oldAddress) ;
Wire.Write(Byte(0x00)) ;
Wire.Write(newAddress) ;
Wire.endTransmission() ;
}
Le code suivant est de lire les données du capteur
int readData (adresse int) {}
lecture int = 0 ;
étape 1: charger capteur lire les échos
Wire.beginTransmission(address) ; transmettre à un périphérique #112 (0 x 70)
pour l’adresse indiquée dans la fiche technique est de 224 (0xE0)
mais abordant i2c utilise la haute 7 bits donc c’est de 112
Wire.Write(Byte(0x00)) ; ensembles de Registre pointeur vers le registre de commande (0 x 00)
Wire.Write(Byte(0x51)) ; capteur de commande sur mesure en « centimètres » (0 x 51)
Utilisez 0 x 50 pouces
Utilisez 0 x 51 centimètres
Utilisez 0 x 52 pour microsecondes de ping
Wire.endTransmission() ; arrêter la transmission
étape 2: attendez lectures se produise
Delay(70) ; Fiche technique suggère au moins 65 millisecondes
étape 3: instruire capteur pour revenir à une lecture particulière echo
Wire.beginTransmission(address) ; transmettre à un périphérique #112
Wire.Write(Byte(0x02)) ; Jeux d’inscrire le pointeur pour faire écho à registre #1 (0 x 02)
Wire.endTransmission() ; arrêter la transmission
étape 4: demande de lecture du capteur
Wire.requestFrom (adresse, 2) ; demander les 2 octets du périphérique esclave #112
étape 5: recevoir la lecture du capteur
Si (2 < = Wire.available()) / / si les deux octets ont été reçus
{
lire = Wire.read() ; recevoir l’octet haut (remplace la précédente lecture)
lecture = lecture << 8 ; Maj octet haut à 8 bits de poids fort
lecture | = Wire.read() ; recevoir l’octet de poids faible comme 8 bits de poids faible
retour de lecture ;
}
return 0 ;
}
CODE DE TRAITEMENT –
Import processing.serial.* ; Minim minim ; Serial myPort ; int r ; void setup() {} println(Serial.List()) ; void serialEvent (Serial myPort) {} int inByte = myPort.read() ; println(inByte) ; Si (inByte == 102 & & main == false) {} pour (int i = 0; i < 9000; i ++) {} Si (r == 1) {} IN5.Play() ; {} void draw() stop() Sub Super.Stop() ;
Import ddf.minim.* ;
AudioPlayer
AudioPlayer in2 ;
AudioPlayer in3 ;
AudioPlayer in4 ;
AudioPlayer in5 ;
Main de booléen = false ;
taille (800, 600) ;
minim = new Minim(this) ;
in = minim.loadFile("god.mp3") ;
IN2 = minim.loadFile("applaus.mp3") ;
in3 = minim.loadFile("babygelach.mp3") ;
IN4 = minim.loadFile("scheet.mp3") ;
IN5 = minim.loadFile("muntje.mp3") ;
String portName = Serial.list() [6] ;
myPort = nouvelle série (ce, portName, 9600) ;
Background(0) ;
r = 0 ;
}
int r = int (random(1, 4)) ;
println(r) ;
main = true ;
println(Hand) ;
// }
in.Play() ;
}
ElseIf (r == 2) {}
IN2.Play() ;
}
ElseIf (r == 3) {}
in3.Play() ;
}
ElseIf (r == 4) {}
IN4.Play() ;
}
else {}
}
}
Si (inByte == 101) {}
main = false ;
println(Hand) ;
}
}
}
{
in.Close() ;
minim.Stop() ;
}