EL fil Hat : Séquencée et sonore activé avec télécommande - propulsé par Arduino et Sparkfun (7 / 8 étapes)

Étape 7: La fonctionnalité et le Code

Fonctionnalités

Le code est assez explicite et (me semble) relativement bien commenté. Il y a aussi une commande de série println à chaque étape de la voie pour le débogage, surtout si vous devez modifier le code pour l’étalonnage du potentiomètre.

Lorsque vous allumez l’appareil, le fil EL sera « initialiser ». En d’autres termes, chacun d’eux flash une fois successivement, de broche 2 jusqu'à la broche 9.
Nous sommes maintenant dans un état d’attente jusqu'à ce que vous appuyez sur le bouton mode. Chaque pression sur le bouton mode permet de basculer dans une séquence différente et clignote le voyant du Mode (rouge), alors que l’opérateur peut confirmer un changement de mode (comme opérateur porte le chapeau).

Il y a 7 séquences qui boucle en continu entre les changements de mode. Au cours de ces modes, si l’opérateur ajuste le potentiomètre, la vitesse de la séquence change.

Modes séquentiels
Mode 1 - étape à travers tous
Mode 2 - remplir vers le haut du bas puis vide du bas
Mode 3 - vers le haut et vers le bas
Mode 4 - balayage de bas en haut, balayage de haut en bas
Le mode 5 - empiler et désempilement
Mode 6 - suppléant clignotant
Mode 7 - Criss cross

Capteur sonore Mode
Mode 8 - lorsque vous arrivez à ce mode, le Mode LED avec flash 10 fois rapidement afin que vous sachiez que vous êtes dans ce mode spécial.
Le potentiomètre devient maintenant votre réglage de la sensibilité sonore.

Toutes les séquences
Mode 9 - ceci pour quitter le Mode Sound et traverse en permanence plusieurs boucles de chacun des Modes de 1 à 7 (régulateur de vitesse au niveau du potentiomètre est maintenant actif). Lorsque vous appuyez sur le bouton Mode, nous retournons au Mode 1.

LE CODE
Tout le code de l’Arduino est à la fois ci-dessous et ci-joint.

Instructables rendent Glow 2012 HAT séquenceur
ARDUINO UNO rév. 3 + Dos EL Escudo SPARKFUN
//
=== Des pièces et CONFIG ===
EL Escudo Dos : Bouclier monté sur Arduino UNO Rev.3
EL fil : Connecté à El Escudo Dos numérique numérique 2 broches -> 9(OUTPUT)
Indicateur LED: indique le changement de mode et de la détection des sons Pin 13(OUTPUT)
Interrupteur momentané : sélecteur de Mode (normalement ouvert) connecté à la broche numérique 11(INPUT)
Potentiomètre : Speed/Sound connecté en analogique 0
DFRobot son capteur : Capteur sonore du Microphone connecté à 2 Analog

Écrit par : Dovadil

DISCAIMER : je suis un programmeur très amateur, alors s’il vous plaît ne pas juger le code sans doute inutilement compliqué.
J’ai juste eu une idée et fait arriver. J’espère que vous pouvez utiliser des morceaux de ceci pour votre propre projet.
PARTAGER!!!

constantes pour la touche entrée et 1 led sortie
const int buttonPin = 11 ;     le nombre de la tige poussoir
const int ledPin = 13 ;      le nombre de l’axe de la LED

const_variable pour le pot et le capteur sonore
const int analogInPin = A0 ;  Broche d’entrée analogique auquel est attaché le potentiomètre
const int analogInPinSound = A2 ;  Capteur sonore d’entrée analogique
int potValue = 0 ;        valeur lue dans le pot
int temps = 100 ;          intervalle de temps

varibales
Boolean initialiser = true ;
buttonState int = 0 ;         variable pour la lecture de l’état de bouton poussoir
mode d’int = 0 ;
int soundVal = 0 ;
int soundPotThresholdValue = 0 ;
int soundSensitivityLimit = 0 ;
int x ;
int y ;
int z ;

void setup()
{
initialiser une communication série à 9600 bits/s :
Serial.Begin(9600) ;
Les canaux EL sont sur les broches 2 à 9
Initialiser les broches comme sorties
pinMode (sortie 2) ;  canal A
pinMode (3, sortie) ;  canal B
pinMode (sortie 4) ;  canal C
pinMode (5, sortie) ;  canal D
pinMode (6, sortie) ;  canal E
pinMode (7, sortie) ;  canal F
pinMode (sortie 8) ;  canal G
pinMode (sortie 9) ;  canal H
Nous avons aussi deux LED d’État, l’Escudo, broche 10
pinMode (sortie 10,) ;
et ledPin (13 broches) sur l’Arduino lui-même
pinMode (ledPin, sortie) ;
pinMode (buttonPin, entrée) ;
}

void loop()
{
Démarrer le programme avec un run unique d’éclairage à LED
Si (initialiser == true)
{
Delay(10) ;
Serial.println("") ;
Serial.println("") ;
Serial.println("Initialising...") ;
Serial.println("") ;
État int ;
Faire défiler les huit canaux EL (2 à 9 broches)
pour (x = 2; x < = 9; x ++)
{
digitalWrite (ledPin, HIGH) ;    allumer la LED
digitalWrite (x, HIGH) ;         Allumez le canal EL
Delay(100) ;                    attendre 1/10 seconde
digitalWrite (ledPin, basse) ;     éteindre la LED
digitalWrite (x, faible) ;          désactiver le canal EL
Delay(50) ;                     attendre 1/10 seconde
digitalWrite (ledPin, HIGH) ;    allumer la LED
digitalWrite (x, HIGH) ;         Allumez le canal EL
Delay(100) ;                    attendre 1/10 seconde
digitalWrite (ledPin, basse) ;     éteindre la LED
digitalWrite (x, faible) ;          désactiver le canal EL
Delay(50) ;
s’arrête en cours d’exécution d’initialisation après une itération
mise en service = false ;
}
Serial.println("") ;
Serial.println ("Initialisation faite!") ;
Serial.println ("Waiting for trigger Mode") ;
}
Detail() ;

=== Le MODE 1 (étape à travers tous les canaux EL huit) ===
Si (mode == 1)
{
Faire défiler les huit canaux EL (2 à 9 broches)
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;              attendre 1/10 seconde
digitalWrite (x, faible) ;    désactiver le canal EL
}
}

=== Le MODE 2 (remplir vers le haut du bas puis vide du bas) ===
Si (mode == 2)
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
}
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, faible) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
}
}

=== Le MODE 3 (jusqu'à bas jusqu'à bas) ===
Si (mode == 3)
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
digitalWrite (x, faible) ;    désactiver le canal EL
}
pour (x = 2; x < = 9; x ++)
{
Detail() ;
y = 11-x ;
digitalWrite (y, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
digitalWrite (y, faible) ;    désactiver le canal EL
}
}

=== Le MODE 4 (balayer en bas vers le haut, balayer de haut en bas) ===
Si (mode == 4)
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;
Delay(Time) ;
}
pour (x = 9; x > = 2; x--)
{
Detail() ;
digitalWrite (x, faible) ;
Delay(Time) ;
}
}

=== Le MODE 5 (pile et désempilement) ===
Si (mode == 5)
{
pour (x = 2; x < = 9; x ++)
{
pour (y = 9; y > = x; y--)
{
digitalWrite (y, HIGH) ;
Delay(Time) ;
digitalWrite (y, faible) ;
Detail() ;
}
digitalWrite (x, HIGH) ;
}
pour (x = 9; x > = 2; x--)
{
pour (y = x; y < = 9; y ++)
{
digitalWrite (y, HIGH) ;
Delay(Time) ;
digitalWrite (y, faible) ;
Detail() ;
}
}
digitalWrite (y, faible) ;
Delay(Time+20) ;
}

=== MODE 6 (clignotement alternatif) ===
Si (mode == 6)
{
Detail() ;
digitalWrite (2, haut) ;
digitalWrite (4, élevée) ;
digitalWrite (6, HIGH) ;
digitalWrite (8, HIGH) ;
Delay(Time+75) ;
Detail() ;
digitalWrite (2, basse) ;
digitalWrite (4, faible) ;
digitalWrite (6, faible) ;
digitalWrite (8, faible) ;
digitalWrite (3, élevée) ;
digitalWrite (5, HIGH) ;
digitalWrite (7, HIGH) ;
digitalWrite (9, HIGH) ;
Delay(Time+75) ;
Detail() ;
digitalWrite (3, faible) ;
digitalWrite (5, faible) ;
digitalWrite (7, faible) ;
digitalWrite (9, faible) ;
}

=== Le MODE 7 (criss cross) ===
Si (mode == 7)
{
pour (x = 2; x < = 9; x ++)
{
y = 11-x ;
digitalWrite (x, HIGH) ;   allumer la LED (HIGH est le niveau de tension)
digitalWrite (y, HIGH) ;   allumer la LED (HIGH est le niveau de tension)
Si (x == 5)
{
Delay(Time/2) ;
}
d’autre
{
Delay(Time) ;
}
digitalWrite (x, faible) ;
digitalWrite (y, faible) ;
Detail() ;
}
}

=== MODE 8 (Mode son) ===
Si (mode == 8)
{
Test sonore
detailSound() ;
Si ((soundVal,DEC) == 512)
{
son flash vers le haut
pour (x = 2; x < = 9; x ++)
{
digitalWrite (x, HIGH) ;
Delay(40) ;
}
pour (x = 9; x > = 2; x--)
{
digitalWrite (x, faible) ;
Delay(40) ;
}
}
}

//=================MODE 9 ==================
Si (mode == 9)
{
runAllSequences() ;
}

//=================MODE 10 ==================
Si (mode == 10)
{
}
}

// =========================================
=== FONCTIONS DE ===
// =========================================

Sub detail()
{
lire l’analogue en valeur et la mapper à la gamme pour le temps
Si ((mode == 8) || (mode == 0)) Si pas en mode sonore, ou si le programme n’a pas commencé à juste
{
ne rien faire
}
d’autre
{
Si ((potValue! = analogRead(analogInPin))) //pot n’est pas modifié
{
temps = carte (potValue, 0, 1024, 40, 200) ;
imprimer les résultats de la série monitor :
Serial.Print ("\n potentiomètre =") ;
Serial.Print(potValue) ;
Serial.Print ("\t temporisation =") ;
Serial.Print(Time) ;
Serial.Print ("millisecondes") ;
attendre 2 millisecondes avant la prochaine boucle
pour le convertisseur analogique-numérique à régler
après la dernière lecture :
Delay(2) ;
potValue = analogRead(analogInPin) ;
}
}
lire l’état de la valeur du bouton poussoir :
buttonState = digitalRead(buttonPin) ;
Si (buttonState == HIGH)
{
buttonPressed() ;
digitalWrite (ledPin, basse) ;
}
}

Sub detailSound()
{
soundPotThresholdValue = analogRead(analogInPin) ; seuil de
soundSensitivityLimit = carte (soundPotThresholdValue, 0, 1024, 0, 512) ;
soundVal=analogRead(analogInPinSound) ; valeur réelle de son
Si (soundVal > soundSensitivityLimit)
{
Serial.Print ("\n Threshold Level =") ;
Serial.println(soundSensitivityLimit) ;
Serial.Print ("\n son niveau d’entrée =") ;
Serial.println(soundVal) ;
digitalWrite (ledPin, HIGH) ;
pour (x = 2; x < = 9; x ++)
{
digitalWrite (x, HIGH) ;
Delay(15) ;
}
pour (x = 2; x < = 9; x ++)
{
digitalWrite (x, faible) ;
Delay(15) ;
}
}
digitalWrite (ledPin, basse) ;
Delay(10) ;
}

Sub buttonPressed()
{
digitalWrite (ledPin, HIGH) ;
Delay(300) ;             une pause pour contrôler le programme. veiller à ce changement de mode unique
mode = mode + 1 ;        Increment, Mode
Si (mode > 9) / / si le mode est supérieur à 9, redémarrage du mode 1
{
mode = 1 ;
Serial.println("") ;
Serial.println ("séquence Mode de réinitialisation") ;
Serial.println("") ;
pour (x = 0; x < = 3; x ++)
{
digitalWrite (ledPin, basse) ;
Delay(100) ;
digitalWrite (ledPin, HIGH) ;
Delay(100) ;
digitalWrite (ledPin, basse) ;
}
}
Serial.println("") ;
Serial.println("") ;
Serial.println ("touche enfoncée") ;
Serial.Print (« Mode: ") ;
Serial.Print(mode) ;
Serial.println("") ;
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}
Si le mode est le mode sonore, blink a conduit rapidement 10 fois
Si (mode == 8) //sound
{
pour (x = 0; x < = 10; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (ledPin, HIGH) ;
Delay(50) ;
digitalWrite (ledPin, basse) ;
Delay(25) ;
}
}
}
Sub runAllSequences()
{
=== Le MODE 1 (étape à travers tous les 8 canaux) ===
pour (z = 0; z < = 7; z ++) //because c’est relativement courte séquence, il quelques fois fois
{
Faire défiler les huit canaux EL (2 à 9 broches)
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;              attendre 1/10 seconde
digitalWrite (x, faible) ;    désactiver le canal EL
}
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== Le MODE 2 (remplir vers le haut du bas puis vide du bas) ===
pour (z = 0; z < = 3; z ++) //because c’est relativement courte séquence, il quelques fois fois
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
}
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, faible) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
}
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== Le MODE 3 (jusqu'à bas jusqu'à bas) ===
pour (z = 0; z < = 3; z ++) //because c’est relativement courte séquence, il quelques fois fois
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
digitalWrite (x, faible) ;    désactiver le canal EL
}
pour (x = 2; x < = 9; x ++)
{
Detail() ;
y = 11-x ;
digitalWrite (y, HIGH) ;   Allumez le canal EL
Delay(Time) ;        attendre 1/10 seconde
digitalWrite (y, faible) ;    désactiver le canal EL
}
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== Le MODE 4 (balayer en bas vers le haut, balayer de haut en bas) ===
pour (z = 0; z < = 3; z ++) //because c’est relativement courte séquence, il quelques fois fois
{
pour (x = 2; x < = 9; x ++)
{
Detail() ;
digitalWrite (x, HIGH) ;
Delay(Time) ;
}
pour (x = 9; x > = 2; x--)
{
Detail() ;
digitalWrite (x, faible) ;
Delay(Time) ;
}
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== Le MODE 5 (pile et désempilement) ===
pour (z = 0; z < = 3; z ++) //because c’est relativement courte séquence, il quelques fois fois
{
pour (x = 2; x < = 9; x ++)
{
pour (y = 9; y > = x; y--)
{
digitalWrite (y, HIGH) ;
Delay(Time) ;
digitalWrite (y, faible) ;
Detail() ;
}
digitalWrite (x, HIGH) ;
}
pour (x = 9; x > = 2; x--)
{
pour (y = x; y < = 9; y ++)
{
digitalWrite (y, HIGH) ;
Delay(Time) ;
digitalWrite (y, faible) ;
Detail() ;
}
}
digitalWrite (y, faible) ;
Delay(Time+20) ;
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== MODE 6 (clignotement alternatif) ===
pour (z = 0; z < = 10; z ++) //because il s’agit d’une courte séquence, il peut fois
{
Detail() ;
digitalWrite (2, haut) ;
digitalWrite (4, élevée) ;
digitalWrite (6, HIGH) ;
digitalWrite (8, HIGH) ;
Delay(Time+75) ;
Detail() ;
digitalWrite (2, basse) ;
digitalWrite (4, faible) ;
digitalWrite (6, faible) ;
digitalWrite (8, faible) ;
digitalWrite (3, élevée) ;
digitalWrite (5, HIGH) ;
digitalWrite (7, HIGH) ;
digitalWrite (9, HIGH) ;
Delay(Time+75) ;
Detail() ;
digitalWrite (3, faible) ;
digitalWrite (5, faible) ;
digitalWrite (7, faible) ;
digitalWrite (9, faible) ;
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}

=== Le MODE 7 (criss cross) ===
pour (z = 0; z < = 10; z ++) //because il s’agit d’une courte séquence, il peut fois
{
pour (x = 2; x < = 9; x ++)
{
y = 11-x ;
digitalWrite (x, HIGH) ;   allumer la LED (HIGH est le niveau de tension)

digitalWrite (y, HIGH) ;   allumer la LED (HIGH est le niveau de tension)
Si (x == 5)
{
Delay(Time/2) ;
}
d’autre
{
Delay(Time) ;
}
digitalWrite (x, faible) ;
digitalWrite (y, faible) ;
Detail() ;
}
}
pour (x = 2; x < = 9; x ++) //turn tous les canaux de remise - remise à zéro des arceau suivant
{
digitalWrite (x, faible) ;
}
}

Articles Liés

Projets des Carlitos : Sans fil discours contrôlé par Arduino Robot

Projets des Carlitos : Sans fil discours contrôlé par Arduino Robot

Nous rêvons tous d'avoir des appareils et machines qui peuvent obéir à nos commandes vocales. Eh bien, nous allons faire le premier pas vers ce qui en fait se produire et construire un discours contrôlé par Arduino-basé robot mobile.Vous pensez peut-
Bricolage Comment installer conduit de lumière zénithale avec télécommande sans fil

Bricolage Comment installer conduit de lumière zénithale avec télécommande sans fil

Lumière zénithale bricolage Howto Install LED avec télécommande sans fil
Module sans fil Radio fréquence à l’aide de microcontrôleur PIC.

Module sans fil Radio fréquence à l’aide de microcontrôleur PIC.

C'est un microcontrôleur basé projet de bricolage électronique. Le nom de Module RF sans fil à l'aide de microcontrôleur PIC. Le module RF est un petit circuit électronique utilisé pour transmettre, recevoir, ou ondes radio transceive sur l'un d'un c
Fast bricolage fils Hat

Fast bricolage fils Hat

ThiÉtape 1: matériaux -fil-métier à tricoter-tricot crochetÉtape 2: Configurer le métier à tisser Abord enrouler le fil autour de peg bas sur métier à tisser. Cela contribue à maintenir le fil en place. Ensuite, commencer enveloppant le fil autour de
Crédits de défilement simple séquence

Crédits de défilement simple séquence

aujourd'hui je vais vous montrer, mon collègue instructables utilisateur, comment créer un simple et facile des crédits séquence pour toutes les animations que vous avez faits(Ce instrutable suivante a été faite pour ma classe d'animation mais peut ê
Faire sabre laser avec effet sonore (par Arduino

Faire sabre laser avec effet sonore (par Arduino

Puisque j'ai appris comment utiliser arduino pour faire des trucs, j'ai toujours envie de l'utiliser pour faire un sabre laser avec effet sonore, et une fois que je fais un que j'ai découvert il n'est pas si difficile. Nous allons donc regardait pour
Sans fil Multi-Channel Voice-Controlled prises de courant avec Raspberry Pi

Sans fil Multi-Channel Voice-Controlled prises de courant avec Raspberry Pi

mise à jour 11/02/2014 : Merci à tous ceux qui ont voté pour ce projet au concours Raspberry Pi!Ce projet est une combinaison de plusieurs ressources de différence :Mon projet de single-prise de contrôle avec Raspberry Pi et Python, d'abord inspiré p
Sans fil lumière arc-en-ciel propulsé par Tesla Coil

Sans fil lumière arc-en-ciel propulsé par Tesla Coil

Voici un projet qui utilise l'énergie de radio fréquence généré par une bobine de Tesla petit, bipolaire à dynamiser un anneau de feux multicolores, cold cathode. Comme avec n'importe quel dispositif de haute tension, faites attention et bon jugement
Sonore activé caméra Flash

Sonore activé caméra Flash

un bruit rapide et sale et dangereux activé flash pour capturer les moments dans le tempsÉtape 1: La première chose que vous aurez besoin est un haut-parleur amplifié de l'ordinateur La victime sacrificielle ici est une paire de harmon kardons d'une
Fil moins robot. Très utile

Fil moins robot. Très utile

Bonjour à tous, il s'agit de Sai Jayanth.This est mon 1er modèle de travail instructable que j'ai préparé. Ce modèle de travail a été préparé par moi à cause de certains aspects. J'ai vu l'eau polluante en raison de l'industriel déchets libérant dans
Vocal contrôlées iRobot Create

Vocal contrôlées iRobot Create

J'ai reçu récemment un androïde accessoire ADK (Development Kit) et, par coïncidence, aussi juste reçu mon iRobot Créer.  Alors, j'ai décidé de mettre les deux ensemble pour obtenir un robot à commande vocale à l'aide de l'API Android comme un moyen
Arduino poisson Feeder Flux condensateur Upcycled du livre

Arduino poisson Feeder Flux condensateur Upcycled du livre

Cette instructable est conçu pour construire non seulement des articles ménagers pour la plupart une alimentation condensateur de flux dans un livre qui est propulsé par Arduino de poissons, plutôt il sert également un but en montrant que tout est po
Module de contrôle de feu d’artifice

Module de contrôle de feu d’artifice

Il y a quelques années, je suis tombé sur un module de contrôle de feu d'artifice construit par utilisateur Instructables : systemf92. Son module était un grand dessein (trouvé ici) et je savais que j'ai un jour devra construire quelque chose de semb
Arduino basé Bi-color LED Matrix Snake Game

Arduino basé Bi-color LED Matrix Snake Game

Nous avons démontré comment un Arduino basé jeu de Tetris Bi-color LED Matrix peut être construit dans notre dernière instructable. Nous étions tout à fait surprenant il a été présenté à la page d'accueil de Instructables et lui ont valu une poignée