Accordeur de guitare pour les aveugles (en utilisant un Arduino) (6 / 8 étapes)

Étape 6: Programe - Arduino Code

/ / Écrit dans Arduino 1.0.1 pour Mini Pro 3.3V ATmega328
Décembre 2012
Le code écrit pour REMAP : www.remap.org.uk A la charité qui produit des équipements de mesure pour les personnes handicapées.
Code conçu pour utiliser un Arduino pour faire un accordeur de guitare approprié pour l’usage par les aveugles
L’accordeur de guitare modifiée était un chérubin WST-550
Utiliser, copier, modifier, améliorer le code tous que vous aimez, ne garantit cependant... Bonne chance / s’amuser...

Cela définit les propriétés des tons vos commentaires.
#define NOTE_FLAT 93 / / la tonalité jouée lorsqu’un bémol est détecté: G plat
#define NOTE_SHARP 887 / / la tonalité jouée lorsqu’une note forte est détectée: ré dièse
#define NOTE_6E 105 / / le ton joué quand un 6E est détecté (mais le ton est effectivement E4)
#define NOTE_5A 157 / / le ton joué quand une 5 a est détecté (mais le ton est effectivement A3)
#define NOTE_4D 235 / / la tonalité jouée lorsqu’un 4D est détecté (mais le ton est effectivement D3)
#define NOTE_3G 352 / / la tonalité jouée lorsqu’un 3G est détecté (mais le ton est effectivement G2)
#define NOTE_2B 559 / / le ton joué quand un 2 b est détecté (mais le ton est effectivement B1)
#define NOTE_1E 837 / / le ton joué quand une 1E est détecté (mais le ton est effectivement E1)
#define NOTE_DURATION 300 / / tous les temps en millisecondes, la durée de ton jouée au démarrage ou lorsque vous sélectionnez une chaîne
#define NOTE_DELAY1 200 / / temps de rétroaction entre les deux bips
#define 400 NOTE_DUR2 / / la durée de ton joué quand une mélodie en chaîne est détectée

Broches d’entrée pour la lecture de la note de LEDs
p6E int = 7 ;    Broche reliée à la LED de la 6E
p5A int = 6 ;    Broche reliée à la LED 5 a
p4D int = 5 ;    Broche reliée à la LED 4D
p3G int = 4 ;    Broche reliée à la LED 3G
p2B int = 3 ;    Broche reliée à la LED 2 b
p1E int = 2 ;    Broche reliée à la 1E LED

Broches d’entrée pour la lecture de la chanson de LED
p40 int = 11 ;  Broche reliée à des diodes qui combinent les LEDs + 50 et + 40
p30 int = 12 ;  Broche reliée à la + 30 LED
int p20 = 13 ;  Broche reliée à la + 20 LED
int p10 = 14 ;  (Pin analogique 0) broche reliée à la + 10 LED
int tune = 15 ; (Broche analogique 1) broche reliée à la 0 LED
n10 int = 16 ;  (Broche analogique 2) broche reliée à la -10 LED
int n20 = 18 ;  (Broche analogique 4) broche reliée à la -20 LED
n30 int = 17 ;  (Broche analogique 3) broche reliée à la -30 LED
int n40 = 19 ;  (Broche analogique 5) broche reliée à des diodes qui combinent les LEDs-40 et -50

Autres broches
spkr int = 10 ;  Broche de sortie qui se connecte à la sortie casque via une résistance (valeur la plus élevée qui donne encore une sortie assez forte).
bouton int = 9 ; Broche d’entrée qui se connecte à la touche de sélection de chaîne.
plat int = 8 ;   Entrer code confidentiel qui détecte si l’accordeur est en mode demi-ton ?

Variables
int offset = 0 ;      Dans quelle mesure désaccordé la chaîne est, par exemple si -30 est allumée la valeur de cette variable sera -40.
Remarque int = 0 ;        Variable d’enregistrement quelle note a été détectée 1 = 1F, 2 = 2 b, 3 = 3 G, 4 = 4 D, 5 = 5 a, 6 = 6E.
RemarqueSélectionnez int = 0 ;  Cette option stocke quelle chaîne a été sélectionné si le mode de chaîne spécifique est en utilisation 0 = off.
int lastOffset = 0 ;  Offset précédent vu.
int lastNote = 0 ;    Note précédente vu.

void setup() {}

Serial.Begin(9600) ;  Pour la recherche de pannes

Modes de mettre broche
pinMode(p6E,INPUT) ;
pinMode(p5A,INPUT) ;
pinMode(p4D,INPUT) ;
pinMode(p3G,INPUT) ;
pinMode(p2B,INPUT) ;
pinMode(p1E,INPUT) ;

pinMode(p40,INPUT) ;
pinMode(p30,INPUT) ;
pinMode(p20,INPUT) ;
pinMode(p10,INPUT) ;
pinMode(tune,INPUT) ;
pinMode(n10,INPUT) ;
pinMode(n20,INPUT) ;
pinMode(n30,INPUT) ;
pinMode(n40,INPUT) ;

pinMode(flat,INPUT) ;
pinMode(spkr,OUTPUT) ;
pinMode(button,INPUT) ;
digitalWrite(button,HIGH) ;

Jouer des tons sur start up pour informer l’utilisateur que l’accordeur fonctionne.
ton (spkr, NOTE_1E, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_2B, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_3G, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_4D, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_5A, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_6E, NOTE_DURATION) ;
Delay(800) ;

Vérifier si l’accordeur est en mode de syntonisation de demi-ton. Si c’est le cas, jouer quelques tons plus
if(digitalRead(Flat) == 0) {}
Serial.println ("demi-ton mode est activé") ;
ton (spkr, NOTE_FLAT, 500) ;
Delay(800) ;
ton (spkr, NOTE_FLAT, 500) ;
Delay(800) ;
ton (spkr, NOTE_FLAT, 500) ;
Delay(800) ;
ton (spkr, NOTE_FLAT, 500) ;
Delay(800) ;
}

}

void loop() {}
lastOffset = décalage ;
lastNote = note ;
ButtonV() ; Vérifiez si le bouton est enfoncé
NotesV() ;  Vérifier si toutes les chaînes sont audibles
OffsetsV(); / / voir comment sortir de mélodie les chaînes sont
Si (note! = 0) {/ / si une chaîne a été détectée
Si (RemarqueSélectionnez == 0 || RemarqueSélectionnez == note) {/ / vérifier si une chaîne de caractères est étant à l’écoute
if(note == lastNote) {/ / Make sure la lecture s’est stabilisé pendant un certain temps (c.-à-d. deux répétition lectures)
if(offset == lastOffset) {/ / vérifier la lecture s’est stabilisée
Output() ;  Donner une rétroaction audio
}
}

}
}

Delay(200) ;

}

void Output() {/ / on a décelé une note donc le temps de donner quelques commentaires
Delay(100) ;

Tonalité de montrer quelle note
if(note == 1) {}
ton (spkr, NOTE_1E, NOTE_DUR2) ;
}
if(note == 2) {}
ton (spkr, NOTE_2B, NOTE_DUR2) ;
}
if(note == 3) {}
ton (spkr, NOTE_3G, NOTE_DUR2) ;
}
if(note == 4) {}
ton (spkr, NOTE_4D, NOTE_DUR2) ;
}
if(note == 5) {}
ton (spkr, NOTE_5A, NOTE_DUR2) ;
}
if(note == 6) {}
ton (spkr, NOTE_6E, NOTE_DUR2) ;
}
Delay(100) ;

Ton de donner une rétroaction sur comment pointu ou plat.
Si (offset > 1 || offset < 0) {}
offset = décalage * 5 ;
Si (décalage < 0) {}
offset = décalage *-1 ;
ton (spkr, NOTE_FLAT, offset) ;
Delay(250) ;
ton (spkr, NOTE_FLAT, offset) ;
Delay(250) ;
ton (spkr, NOTE_FLAT, offset) ;
Delay(250) ;
}
else {}
ton (spkr, NOTE_SHARP, offset) ;
Delay(250) ;
ton (spkr, NOTE_SHARP, offset) ;
Delay(250) ;
ton (spkr, NOTE_SHARP, offset) ;
Delay(250) ;
}
}
else {/ / ce qu’il faut jouer si la chaîne est dans tune
if(note == 1) {}
ton (spkr, NOTE_1E, NOTE_DUR2) ;
}
if(note == 2) {}
ton (spkr, NOTE_2B, NOTE_DUR2) ;
}
if(note == 3) {}
ton (spkr, NOTE_3G, NOTE_DUR2) ;
}
if(note == 4) {}
ton (spkr, NOTE_4D, NOTE_DUR2) ;
}
if(note == 5) {}
ton (spkr, NOTE_5A, NOTE_DUR2) ;
}
if(note == 6) {}
ton (spkr, NOTE_6E, NOTE_DUR2) ;
}
Delay(400) ;
}

}

void ButtonV() {/ / vérifier si une chaîne spécifique est sélectionnée
if(digitalRead(Button) == 0) {/ / le bouton de lecture
RemarqueSélectionnez ++ ;  Incrément note sélectionnée chaque Appuyez sur le bouton

if(noteSelect == 7) {/ / tons à jouer si toutes les notes ont été pédalés à travers, c'est-à-dire revenir au mode normal
RemarqueSélectionnez = 0 ;
ton (spkr, NOTE_6E, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_5A, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_4D, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_3G, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_2B, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
ton (spkr, NOTE_1E, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}

if(noteSelect > 0) {/ / tons pour jouer que les notes sont pédalés à travers
ton (spkr, NOTE_1E, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
Si (RemarqueSélectionnez > 1) {}
ton (spkr, NOTE_2B, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
Si {(RemarqueSélectionnez > 2)
ton (spkr, NOTE_3G, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
Si {(RemarqueSélectionnez > 3)
ton (spkr, NOTE_4D, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
Si {(RemarqueSélectionnez > 4)
ton (spkr, NOTE_5A, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
Si {(RemarqueSélectionnez > 5)
ton (spkr, NOTE_6E, NOTE_DURATION) ;
Delay(NOTE_DELAY1) ;
}
}
}

void OffsetsV() {/ / lit hauteur LEDs et met la lecture dans le décalage variable
offset = 0 ;
if(digitalRead(P40) == 0) {}
Serial.println("P40") ;
offset = 40 ;
}
if(digitalRead(P30) == 0) {}
Serial.println("P30") ;
offset = 30 ;
}
if(digitalRead(P20) == 0) {}
Serial.println("P20") ;
Offset = 20 ;
}
if(digitalRead(P10) == 0) {}
Serial.println("P10") ;
offset = 10 ;
}
if(digitalRead(tune) == 0) {}
Serial.println("tune") ;
décalage = 1 ;
}
if(digitalRead(n40) == 0) {}
Serial.println("n40") ;
offset = -40 ;
}
if(digitalRead(n30) == 0) {}
Serial.println("n30") ;
offset = -30 ;
}
if(digitalRead(N20) == 0) {}
Serial.println("n20") ;
Offset = -20 ;
}
if(digitalRead(n10) == 0) {}
Serial.println("n10") ;
offset = -10 ;
}
}

void NotesV() {//Reads la note LEDs et magasins les résultats dans la variable Remarque
Note = 0 ;
if(digitalRead(p6E) == 0) {}
Serial.println("p6E") ;
Remarque = 6 ;
}
if(digitalRead(p5A) == 0) {}
Serial.println("p5A") ;
Note = 5 ;
}
if(digitalRead(p4D) == 0) {}
Serial.println("p4D") ;
Remarque = 4 ;
}
if(digitalRead(p3G) == 0) {}
Serial.println("p3G") ;
Note = 3 ;
}
if(digitalRead(p2B) == 0) {}
Serial.println("p2B") ;
Remarque = 2 ;
}
if(digitalRead(p1E) == 0) {}
Serial.println("p1E") ;
Note = 1 ;
}
}

Articles Liés

Appareil de navigation DIY pour les aveugles en utilisant Arduino et téléphone intelligent Android

Appareil de navigation DIY pour les aveugles en utilisant Arduino et téléphone intelligent Android

Dans ce projet, vous pouvez couvrir vos yeux et laissez votre smartphone naviguer vous pour éviter les obstacles, l'application est principalement un appareil de navigation DIY pour les aveugles.Je savais que 1Sheeld s'apprête à lancer un nouveau bou
Comment jouer de la guitare pour les débutants

Comment jouer de la guitare pour les débutants

Comment jouer la guitare pour les débutants - apprendre à jouer de la guitare en simple de suivre les étapes, nous offrons des leçons de guitare gratuites pour les débutants, plus gratuit guitar chord leçons. Comment jouer la guitare pour les débutan
Mode pour les aveugles

Mode pour les aveugles

de mode pour les aveugles sont une robe qui permet aux aveugles à jouer du piano grâce à son interface. Les doigts des utilisateurs agissent comme les condensateurs qui rendent le circuit complet. Appliquer le concept de capacité de l'organisme, comm
HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight est un gant de prototype pour aider les aveugles. Il peut détecter la luminosité ou l'obscurité d'une surface avec la rétroaction tactile d'un moteur de vibration pour chaque doigt individuel. Il peut également détecter la distance des obje
Des téléphones aux caméras, photographie pour les aveugles

Des téléphones aux caméras, photographie pour les aveugles

Curieusement la photographie est devenue très populaire auprès des personnes ayant une déficience visuelle, beaucoup d'entre eux devenant publié en tant qu'artistes à part entière. Il y a beaucoup d'idées fausses sur les aveugles et les malvoyants, m
VisionRadio : une conception novatrice de la radio pour les aveugles ou les malvoyants.

VisionRadio : une conception novatrice de la radio pour les aveugles ou les malvoyants.

je suis étudiant en Design produit à l'Université de Dundee et ce projet semestres était de concevoir une radio de déconstruire une radio existante et la nouvelle conception de la coque extérieure. Pour commencer ce processus, que nous avons dû égale
Comment lire les tablatures de guitare : pour les débutants

Comment lire les tablatures de guitare : pour les débutants

Que vous soyez un débutant ou un joueur de guitare intermédiaire, lecture de notes d'une guitare peut être difficile et parfois déroutantes. Tablatures de guitare d'apprentissage est un moyen plus facile, plus simple d'apprendre à jouer une guitare.
Chaînes de bijoux-collier de fil à la main pour les femmes qui utilisent des techniques de bobinage base

Chaînes de bijoux-collier de fil à la main pour les femmes qui utilisent des techniques de bobinage base

créer ce bijoux fil à la main à l'aide de bobinage polyvalent et de techniques de torsion. Chaque perle inclus dans ce collier chaine pour les femmes est unique et réellement exceptionnel. Vous le méritez !Créer vos propres bijoux fil à la main est u
Comment faire de la soupe de lentilles pour les nuls en utilisant un four à micro-ondes

Comment faire de la soupe de lentilles pour les nuls en utilisant un four à micro-ondes

Être étonné de voir combien il est facile de faire un bol de soupe de lentilles rouges délicieux !N'importe qui peut faire cette merveilleuse soupe aux lentilles rouges en quelques minutes.Les 5 SECRETS de cette recette sont que lentilles rouges...Go
Rapide et facile de homestead utilise pour les bouteilles en plastique (PET)

Rapide et facile de homestead utilise pour les bouteilles en plastique (PET)

dans un passé pas trop lointain, vous achèteriez lait, sodas, etc. dans des bouteilles de verre qui vous devrez retourner au magasin pour être stérilisé et réutilisés. Maintenant, avec notre culture jetable, bouteilles en plastique ont remplacé ce sy
Rendre le Web plus Accessible pour les personnes handicapées

Rendre le Web plus Accessible pour les personnes handicapées

rapports indiquent qu' au moins 2,1 millions de l'utilisation estimée de 54,4 millions d'américains souffrant d'un handicap Internet. Pour les personnes handicapées, accéder à et de vivre pleinement documents présentés sur Internet peuvent souvent êt
Matériel ouvert abordable technologie axée sur l’Arduino pour personnes aveugles

Matériel ouvert abordable technologie axée sur l’Arduino pour personnes aveugles

Dans cet article, je voudrais vous parler d'un trousseau ultrasonique le dispositif pour les aveugles qui aident à détecter les obstacles à un niveau supérieur au cours de laquelle une simple canne blanche ne peut avertir les utilisateurs. Ces obstac
Accessoire téléphone mobile Bluetooth pour les appels manqués et SMS

Accessoire téléphone mobile Bluetooth pour les appels manqués et SMS

à la maison, je ne porte pas mon téléphone avec moi partout... alors parfois téléphone anneaux ou un SMS arrive et je n'entends pas que. Avec le volume de la musique jouée par les adolescents à la maison, ce n'est pas une surprise:-) alors j'ai décid
Un Conseil débutant ardunino facile pour les BLE compatible avec iOS SDK

Un Conseil débutant ardunino facile pour les BLE compatible avec iOS SDK

Cette instructable vous montrera comment connecter entre une carte compatible arduino et appareil iOS vient facilement avec une planche je fais récemment, dont le nom de « Azufier ». Visitez ici pour plus d'informationsÉtape 1: Quoi aurez-vous besoin