Capteur de lumière Arduino avec avertisseur sonore et DEL clignotantes: 5 étapes

Capteur de lumière Arduino avec avertisseur sonore et DEL clignotantes: 5 étapes

Table des matières:

Anonim

C'est un projet plutôt cool que j'ai créé avec ma fille. Le produit final est amusant et vous donne quelque chose de cool à emmener à l’école pour une démonstration ou pour montrer à vos proches quand ils viennent nous rendre visite!

C'est une combinaison de trois autres petits projets Arduino:

- un capteur de lumière utilisant une cellule photoélectrique

- en utilisant un avertisseur piézo-électrique pour créer un avertisseur sonore avec une tonalité et une vitesse variables, et

- clignotement d'une séquence de LED à vitesse variable

Le produit final est un capteur de lumière avec une série de DEL qui (a) clignotent plus rapidement avec plus de lumière (et plus lentement avec moins) et (b) émet des bips plus rapides et plus forts avec plus de lumière (et plus bas et plus faibles avec moins.

Lorsque j'ai créé le diagramme de la planche à dessin à l'aide de Fritzing, j'ai effectué quelques ajustements à partir de la planche à pain d'origine afin qu'il soit clair pour visualiser les fils, etc.

Ce dont vous aurez besoin:

- planche à pain

- Arduino Uno

- 5x LED

- cellule photovoltaïque

- haut-parleur piézo

- 5 x résistance de 220 ohms (pour les LED)

- résistance 500 ohm (pour cellule photovoltaïque)

- résistance de 100 ohms (pour sonnerie piézo)

Pour être tout à fait honnête, j'ai sélectionné ces résistances en fonction du travail effectué par d'autres personnes et d'autres projets que j'ai trouvés en ligne. Je suis sûr qu'il y a de la science et des formules derrière cela, mais vous ne le trouverez pas dans cet Instructable, désolé.

Provisions:

Étape 1: Étape 1 - Câbler la première DEL

Commencez par les notions de base: connectez la carte à GND et aux broches 5V et assurez-vous de disposer de cavaliers reliant les rails positif et négatif à l’autre côté de la planche à pain, ce qui les rend "actifs" et vous aide à construire vos circuits sans passer par-dessus la planche à pain. trop.

Nous voulons créer une séquence de LED à utiliser indépendamment.

Connectons la première LED. Le côté positif de la LED se connecte à la broche 13. Le côté négatif de la LED se connecte avec une résistance de 220 ohms, qui est ensuite connectée à GND.

Étape 2: Étape 2 - Câbler les 4 autres DEL

Raccordez maintenant les quatre autres DEL suivant le même plan: les côtés positifs, respectivement, aux broches 12, 11, 10 et 9, et les côtés négatifs à la terre, en utilisant chacun une résistance de 220 ohms.

Les voyants sont prêts: vous pourrez les contrôler indépendamment, chacun à l’aide d’un code PIN distinct.

Étape 3: Étape 3 - Câbler le piézo

Nous voulons que notre capteur émette un bip. Pour cela, nous utiliserons un avertisseur sonore piézo-électrique, connectons-le.

Le fil négatif se connecte à GND et le fil positif se connecte d’abord à une résistance de 100 ohms, puis à la broche 7. Comme je l’ai déjà dit, la résistance de 100 ohms est proposée dans d’autres projets que j’ai trouvés en ligne.

Étape 4: Étape 4 - Câbler la cellule photovoltaïque

La cellule photovoltaïque est une simple résistance qui devient plus conductrice lorsqu'elle est exposée à la lumière. Ainsi, avec zéro lumière, il bloque 100% du courant et en pleine lumière, il permet au courant de circuler. La façon dont Arduino "lit" ceci est que zéro lumière renvoie une valeur de 0 et pleine lumière renvoie une valeur de 1024.

La cellule photovoltaïque n'a pas de côté négatif et positif. Vous allez donc relier un côté au rail positif du tableau. Le câblage du côté négatif est légèrement compliqué: vous allez le connecter tous les deux (a) sur le rail négatif à l'aide d'une résistance de 500 ohms et (b) directement sur la broche A0.

Le circuit est prêt. Regardons le code.

Étape 5: Étape 5 - le code

Vous trouverez ci-dessous le code complet à copier et coller. Il a // commentaires pour que vous puissiez comprendre ce qui se passe où.

Voici ce que fait le code:

1 - Le capteur lit le niveau de lumière en le mesurant de 0 à 1024

2 - Nous "traduisons" cette lecture en une instruction pour que la sonnerie émette un bip et que les DEL clignotent.

3 - Pour les LED, nous traduisons la lecture de la lumière en millisecondes de clignotement. Moins il y a de lumière, plus il clignote lentement. Lors de certains tests, même lorsque la lumière est forte, elle n’atteint pas 700 ou 800 (difficile d’obtenir 1024). J’ai donc utilisé 700 comme niveau de lumière "supérieur". En raison du mode de fonctionnement de la fonction MAP, si la lumière dépasse 700, le temps de clignotement devient un nombre négatif - et tout se bloque. J'ai donc créé une règle selon laquelle Blink_Time ne peut pas être inférieur à 20 millisecondes.

4 - Les voyants s’allument en séquence (c’est-à-dire que le premier s’allume, puis s’éteint, le suivant s’allume, etc.)

5 - Pour le buzzer, nous traduisons la lecture de la lumière (0 - 1024) en hertz (120 à 1500), donc plus il y a de lumière, plus le pitch est élevé.

6 - La sonnerie émet des bips en même temps que les première, troisième et cinquième DEL (et pendant la durée de vente), puis s'arrête pendant que les DEL s'interrompent. Cela crée un effet de pulsation, la lumière et le son au même rythme.

Ça y est. Profitez-en!

Code:

// Capteurs de lumière avec bips et séquence de leds comme un aéroport

// ints pour clignoter

int Blink_Time = 20; // crée cette variable à utiliser pour la longueur des clignotements et des intervalles

int Light_Level = 0; // crée cette variable à utiliser pour le niveau de lumière

int Light_Pin = A0; // la broche 0 sera utilisée pour la photocellule

// ints pour buzzer

int Buzz_Tone = 300; // crée cette variable pour le ton du buzzer

int Buzz_Tone_Max = 1500; // max herz pour ton buzz

int Buzz_Tone_Min = 120; // min herz pour ton buzz

void setup() {

pinMode (9, OUTPUT); // initialise la pinte 9 - 13 en tant que sorties pour les leds

pinMode (10, OUTPUT);

pinMode (11, OUTPUT);

pinMode (12, OUTPUT);

pinMode (13, OUTPUT);

pinMode (7, OUTPUT); // Définir l'avertisseur sonore - broche 7 comme sortie pour l'avertisseur sonore

Serial.begin (9600); Serial.println ("Ready"); // Ouvrir le port série à 9600 bauds pour surveiller le comportement des variables

}

boucle vide () {

Light_Level = analogRead (Light_Pin); // lit le niveau de lumière

Blink_Time = map (Light_Level, 0, 700, 300, 1); // règle le temps de clignotement en fonction du niveau de lumière (plus de lumière, plus de vitesse)

if (Blink_Time <= 20) {Blink_Time = 20;} // définit une limite minimale pour le temps de clignotement. Etant donné que le niveau de lumière peut dépasser 700, la fonction de mappage peut provoquer un temps de clignotement négatif, auquel cas le programme se fige.

// règle le bourdonnement en fonction du niveau de lumière (plus de lumière, plus de son, plus haut)

Buzz_Tone = map (Light_Level, 0, 700, Buzz_Tone_Min, Buzz_Tone_Max);

// affiche toutes les variables du moniteur série pour que vous puissiez voir ce qui se passe

Serial.print ("Light level =");

Serial.print (Light_Level);

Serial.print ("Temps de clignotement =");

Serial.print (Blink_Time);

Serial.print ("Buzz_Tone =");

Serial.print (Buzz_Tone);

Serial.println ("");

// première LED

tonalité (7, tonalité Buzz); // commence le bip en même temps que la première led s'allume

digitalWrite (9, HAUT); // allume la LED (HIGH correspond au niveau de tension)

délai (Blink_Time); // attend le temps de clignotement

digitalWrite (9, FAIBLE); // éteint la LED en diminuant la tension

noTone (7); // arrête le bip

// seconde LED

// pas de bip ici, je veux seulement trois bips alors je les mets sur les première, troisième et cinquième LED

digitalWrite (10, HAUT); // allume la LED (HIGH correspond au niveau de tension)

délai (Blink_Time); // attend le temps de clignotement

digitalWrite (10, FAIBLE); // éteint la LED en diminuant la tension

// troisième LED

tonalité (7, tonalité Buzz); //bip

digitalWrite (11, HAUT); // allume la LED (HIGH correspond au niveau de tension)

délai (Blink_Time); // attend le temps de clignotement

digitalWrite (11, LOW); // éteint la LED en diminuant la tension

noTone (7);

// quatrième LED

digitalWrite (12, HAUT); // allume la LED (HIGH correspond au niveau de tension)

délai (Blink_Time); // attend le temps de clignotement

digitalWrite (12, FAIBLE); // éteint la LED en diminuant la tension

// cinquième LED

tonalité (7, tonalité Buzz);

digitalWrite (13, HAUT); // allume la LED (HIGH correspond au niveau de tension)

délai (Blink_Time); // attend le temps de clignotement

digitalWrite (13, FAIBLE); // éteint la LED en diminuant la tension

noTone (7);

délai (5 * Blink_Time); // pause entre les séries de LED clignotantes + bips

}