Arduino : Contrôle d’entrée sortie (3 / 4 étapes)

Étape 3: Écrire le Code

À l’aide de l' IDE Arduino créer une nouvelle esquisse.

Avant la fonction setup(), déclarez les variables pour la broche analogique relié à la photorésistance et la broche numérique relié à la LED.

 //Photoresistor Pinint analogPin = 0; // LED Pin int ledPin = 9; 

Pour ce firmware vous n’avez pas besoin de mettre quoi que ce soit dans la méthode d’installation. Normalement, vous déclareriez la broche numérique en sortie à l’aide de la fonction pinMode(), mais nous allons utiliser la fonction analogWrite(), qui ne nécessite pas la goupille pour être déclarées comme sortie.

Dans la fonction loop(), vous allez commencer par la lecture dans le niveau de luminosité de la photorésistance utilisant le même code de la dernière leçon.

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); } 

Ensuite, vous convertirez le niveau de lumière entrant à la plage correcte de la LED. Pour ce faire, vous utiliserez deux nouvelles fonctions - map() et constrain().

La fonction map possède cinq arguments d’entrée - la valeur, une valeur faible et une valeur élevée de la gamme actuelle et une valeur faible et une valeur élevée pour la plage cible.

 int val = map(value, fromLow, fromHigh, toLow, toHigh); 

Tout cela n’est re-mapper une valeur d’une plage en la valeur équivalente dans une autre plage. Par exemple, la carte (25, 0, 50, 0, 100) retournerait 50 (50 est l’équivalent dans le 0-100 vont à 25 dans la plage 0-50). Dans cette leçon, vous allez mapper l’éclairement (un 0-1023 gamme) à une gamme PWM (0-255). Une autre façon d’accompishing le même objectif dans ce cas serait de diviser la valeur de l’éclairement par 4 (0-255 est le quatrième des 0-1023), mais si vous l’avez fait, vous n’obtiendriez pas d’apprendre la fonction map(). En outre, parce que vous ne voulez pas votre veilleuse pour être sur quand il y a peu de lumière (p. ex., faible luminosité), vous voudrez modifier la plage d’éclairement. Par exemple, dans mon bureau la valeur d’éclairement est environ 340 lorsque les lumières sont allumées (ce n’est pas un bureau très lumineux). Je tiens à le traiter comme s’il y a assez de lumière que le voyant ne doit pas s’allumer, donc je brûle pas la LED quand les lumières sont allumées. Pour ce faire, je mappe la plage d’éclairement comme 350-1023.

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); // re-map the value from the analog pin to a smaller range // Experiment with the right fromLow level based on your environment int brightness = map(lightLevel, 350, 1023, 0, 255); } 

Vous devrez expérimenter cela à trouver la meilleure gamme d’utiliser (n’oubliez pas, vous pouvez utiliser le moniteur de série de la leçon précédente pour trouver la valeur brute de la photorésistance).

Cartographie de la gamme d’éclairement à l’aide d’une faible valeur qui est supérieure à une valeur que vous pourriez être saisie pourrait entraîner un nombre négatif (par exemple dans mon exemple, l’éclairement pourrait être 340 même si j’ai identifié l’extrémité inférieure de la plage à 350). Pour se protéger contre le réglage de luminosité à un nombre négatif, vous pouvez utiliser la fonction constrain().

La fonction constrain() prend trois arguments d’entrée - la valeur, une valeur faible et une valeur élevée.

 int val = constrain(value, lowValue, highValue); 

Si la valeur est comprise entre le cours et la haute valeur, alors la valeur est renvoyée. Si la valeur est inférieure les assouplir, puis exportées seront retourné. Si la valeur est supérieure à haute valeur, puis haute valeur sera retourné.

En utilisant la fonction constrain(), vous pouvez vous assurer vous ne régler la luminosité à une valeur incorrecte. Maintenant que vous avez une bonne luminosité, vous pouvez utiliser la fonction analogWrite() pour définir le PWM pour la goupille de LED. Une valeur de luminosité de 0 est un cycle de fonctionnement de 0 % (hors service) et une valeur de luminosité de 127 est un cycle d’utilisation de 50 %, etc..

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); // re-map the value from the analog pin to a smaller range // Experiment with the right fromLow level based on your environment int brightness = map(lightLevel, 350, 1023, 0, 255); // use constrain to avoid negative numbers and/or numbers above the high range brightness = constrain(brightness, 0, 255); // use analogWrite to send PWM data (a square wave) analogWrite(ledPin, brightness); } 

Articles Liés

Arduino contrôlée hélicoptère

Arduino contrôlée hélicoptère

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com). L'objectif de ce cours était pour nous enseigner la créativité, l'ingéniosité et l'application prati
Couvre-feu pour animaux de compagnie : Un Arduino contrôlée chatière

Couvre-feu pour animaux de compagnie : Un Arduino contrôlée chatière

Le problème: vous voulez restreindre le temps lorsque votre animal de compagnie est autorisé à aller à l'extérieur. C'est peut-être parce que le quartier n'est pas sans danger pour votre chat ou votre petit chien pendant la nuit (maraude coyotes vien
Arduino contrôlée de fenêtre pour chat

Arduino contrôlée de fenêtre pour chat

je soumets cette instructable le défi de l'Arduino. N'oubliez pas de voter !Mon voisin a eu un petit problème avec son chat. Il veulent de sortir et de revenir trop souvent à l'intérieur. Habituellement, il ouvre juste la fenêtre de sa cuisine et nou
Arduino contrôlée solénoïde moteur

Arduino contrôlée solénoïde moteur

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com). Dans ce instructable, vous allez apprendre à faire un moteur de solénoïde alimenté, plus précisément
Arduino contrôlée stores automatisés avec une interface utilisateur Web

Arduino contrôlée stores automatisés avec une interface utilisateur Web

cette instructable est un guide détaillé sur la façon de construire un contrôleur automatisé pour exécuter un moteur pouvant fonctionner à l'ouverture et la fermeture des stores. Le contrôleur permet les blinds ouvrir et fermer basé sur un calendrier
Autocollant de fenêtre numérique (Arduino contrôlée)

Autocollant de fenêtre numérique (Arduino contrôlée)

un autocollant de taille matrice de LED qui affiche des images en séquence à partir d'une carte SD, pour produire une animation signe ou « vitrophanie ». Arduino contrôlée ! Inclut également le code de Windows, Mac et Linux pour la conversion des fic
Arduino contrôlée CNC / 3D imprimante hybride

Arduino contrôlée CNC / 3D imprimante hybride

Dame Nature fait... Nous construisons des.BuildersBot fusibles impression 3D & fraisage CNC dans rêve d'un générateur "3dprintingindustry.com"Le BuilderBot est une machine de conception ouverte, qui utilise OpenLogiciels et matériels ouvert.
Capteur infrarouge guidée Arduino contrôlée L293D Robot (partie 2)

Capteur infrarouge guidée Arduino contrôlée L293D Robot (partie 2)

Voici la partie 2 de l'Arduino contrôlée Robot L293D.Partie 2 comprend Sensors.This infrarouge fait partie d'une série d'instructables conduisant à un adepte de la ligne Robot.QRD1114 capteur infrarouge reliée à ArduinoÉtape 1: Câblage du capteur inf
Arduino contrôlée variateur de lumière

Arduino contrôlée variateur de lumière

Avertissement : Certaines personnes essaient de construire ce avec un opto-coupleur avec zerocrossing coz droit « c'est mieux » ? Certains sont même dit, dans les magasins d'électronique, il est préférable d'utiliser tel un opto-coupleur. MAL. Ceci f
Bit cogner étape par étape : Arduino contrôle de WS2811, WS2812 et LED RGB WS2812B

Bit cogner étape par étape : Arduino contrôle de WS2811, WS2812 et LED RGB WS2812B

Avertissement: l'an dernier, quelques bibliothèques différentes ont été écrits pour contrôler ces LEDs RGB omniprésent par les collègues responsables de Adafruit, achetant et le projet FastSPI.  Les bibliothèques fonctionnent très bien, et nous devri
Arduino contrôlée LED Strip Holiday Lighting

Arduino contrôlée LED Strip Holiday Lighting

avec les prix tombent sur la bande de LED éclairage, mise en place d'éclairage Permanent de vacances devient plus possible chaque jour.  Un Arduino est un contrôleur d'éclairage bricolage génial.Pour ce projet, j'ai utilisé des bandes de LED RVB anal
Arduino contrôlée minuterie de cuisine

Arduino contrôlée minuterie de cuisine

Chacun d'entre vous doit ont vécu ce que vous avez quelque chose à cuire sur votre gazinière tandis que de l'autre côté vous get occupé à regarder la télévision ou obtenir une conversation profonde que vous réalisez sur la détection d'une odeur qu'il
Orb Serial arduino contrôlée

Orb Serial arduino contrôlée

Ce qui est un Orb ?Quand j'ai vu pour la première fois l' Orbe ambiant de Ambient Devices, j'ai été assez impressionné.  Ils le décrivent comme une ampoule de verre qui utilise une couleur pour afficher les informations.  Toute sorte de situation pou
Arduino contrôlée ATX Power Supply

Arduino contrôlée ATX Power Supply

pouvez un microcontrôleur contrôler sa propre puissance ?  Eh bien presque !Une ATX alimentation, neuf ou d'un vieux PC, est un excellent moyen pour alimenter l'Arduino et autres projets de microcontrôleur.  Qui est couvert dans plusieurs ' ibles tel