Étape 2: Breadboarding avec l’Arduino
J’ai commencé à explorer les sons produits par la fonction de tonalité sur l’Arduino, changement de hauteur, de durée et de retards (pour une bonne introduction sur l’Arduino, consultez cette Ible).
Pour le moteur que j’ai commencé à tester la valeur du paramètre pitch plus bas joué, qui semble être de 50 (mais il s’est retourné pour être autour de 100 pour le noyau ATtiny). J’ai eu l’idée de définir le délai entre les tons a joué un peu plus longtemps que le ton de l’exemple toneMelody. Un ton de 10 ms et un délai fixé à 11ms plus longues lui donne une « ondulation de le moteur type ».
J’ai fait un petit test programme changer la hauteur de deux tons, la recherche de la combinaison qui a donné un classique « son pistolet de l’espace » qui rappelle le StarBird (voir croquis ci-dessous). Comme entrée, j’ai utilisé deux interrupteurs double inclinaison comme entrée. A cette époque j’étais encore au stade expérimental avec trois commutateurs de l’État en utilisant uniquement une entrée analogique chacune (voir le schéma), un concept je suis passé par la suite comme expliqué dans l’étape sur l’interrupteur à bascule.
Les durées et les retards si éprouvé en changeant et en re-télécharger le programme. Ici, j’ai remarqué qu’il était préférable de définir le délai quelques ms plus courtes que la durée de ton, pour un bon son.
Puis j’ai ajouté quelques simple marche commutation des LED suivant le modèle de son.
Voici le programme de test :
/*
StarBird Sound Test
créé le 3 août 2012
par masynmachien
Ce code se trouve dans le domaine public.
*/
const int tonepin = 3 ; ton outputpin plus tard à changer
pour éviter toute interférence avec le téléchargement
int thisPitch = 820 ;
int Pitchdelta = 55 ;
int temps = 60 ;
int timeminus = 57 ;
void setup() {}
initialiser la communication série (pour le débogage uniquement) :
Serial.Begin(9600) ;
}
void loop() {}
lire le commutateur threestate :
int sensorReading = analogRead(A0) ;
if(sensorReading > 800)
{
augmenter la hauteur quand on les tire à 5 V
Si (thisPitch < 20000)
{/ / pitch maximumum
thisPitch = thisPitch + 1 ;
}
}
ElseIf (sensorReading < 200)
{
diminuer la hauteur quand on les tire à 5 V
Si (thisPitch > 700)
{/ / minimum pitch
thisPitch = thisPitch - 1 ;
}
}
lire le commutateur threestate :
int sensorReading2 = analogRead(A5) ;
if(sensorReading2 > 800)
{
augmenter la hauteur quand on les tire à 5 V
Si (Pitchdelta < 10000)
{/ / pitch maximumum
Pitchdelta = Pitchdelta + 1 ;
}
}
ElseIf (sensorReading2 < 200)
{
diminuer la hauteur quand on les tire à 5 V
Si (Pitchdelta > 0)
{/ / minimum pitch
Pitchdelta = Pitchdelta - 1 ;
}
}
jouer le terrain :
ton (tonepin, thisPitch, temps) ;
Delay(timeminus) ; délai entre les lectures de stabilité
ton (tonepin, thisPitch-(Pitchdelta/2), temps) ;
Delay(timeminus) ; délai entre les lectures de stabilité
ton (tonepin, thisPitch-Pitchdelta, temps) ;
Delay(timeminus) ; délai entre les lectures de stabilité
ton (tonepin, thisPitch-(Pitchdelta/2), temps) ;
Delay(timeminus) ; délai entre les lectures de stabilité
Serial.println(thisPitch) ;
Serial.println(Pitchdelta) ;
}