Arduino feux tricolores pour les débutants (22 / 25 étapes)

Étape 22 : capteurs ! Partie 4: Étalonnage (tout en boucles)

Dans différentes conditions d’éclairage, la cellule photoélectrique verrez une plage différente de valeurs. Essayez d’utiliser le même code mais dans un endroit sombre lieu. Maintenant, essayez d’utiliser le même code mais dans un très lumineux place. Vous verrez que le capteur est toujours désactivé dans un endroit sombre, et que le code fonctionne très bien en pleine lumière.

Pour résoudre ce problème, nous faisons ce qu’on appelle étalonnage ! Lorsque nous calibrons la photocellule, nous recherchons la valeur la plus élevée qu’il voit et la valeur la plus basse il voit et puis définissez le milieu entre ces deux valeurs. Nous allons pour calibrer la valeur pendant environ 5 secondes.

Pour ce faire, nous allons utiliser un certain nombre de figures différentes !

Tout d’abord, nous allons en savoir plus sur le temps. L’Arduino garde trace de combien de temps il a été depuis l’Arduino a été mis en marche. Nous pouvons regarder quoi de cette valeur.

Vous pouvez le faire en utilisant le millis fonction.

Un exemple de cela est : unsigned long current_time = millis(); où je stocke la valeur du temps dans la variable current_time .

Ce qui est un unsigned long ? A long est comme un entier, mais plus gros ! Une longue passe de-2,147,483,648 à 2 147 483 647. Le mot unsigned signifie qu’au lieu d’aller de-2,147,483,648 à 2 147 483 647, il va de 0 à 4 294 967 295. Étant donné que le temps n’est jamais négatif, nous utilisons un unsigned pour elle !
Plus de détails ici : http://arduino.cc/en/Reference/Long
et ici : http://arduino.cc/en/Reference/UnsignedLong

Ensuite nous allons utiliser ce qu’on appelle un while boucle ! A while boucle ressemble à un if déclaration, tandis que la condition prévue est true , il s’exécute. La différence entre un if déclaration et une while instruction est que le while déclaration continue l’exécution jusqu'à ce que la condition est false --tout comme la façon dont le loop fonction s’exécute jusqu'à ce que vous éteignez votre Arduino. Assurez-vous que votre end_time est également est un unsigned long.

Un exemple de cela est :
while(current_time < end_time)
{
  // do something

// now update the current time
  current_time = millis();
}

Le code que vous mettez dans la zone de « faire quelque chose » va continuer jusqu'à ce que le temps va passé end_time

Après cela, ce que nous devons faire est de rechercher les plus élevés et les valeurs les plus basses qui voit la photocellule et stocker ces valeurs.

Vous pouvez le faire par la valeur élevée à démarrer d’abord 0 et la faible valeur à 1023 .

sensor_low = 1023;
sensor_high = 0;

Ensuite, chaque fois que nous passons par le tout en boucle, nous allons étudier pour voir si la valeur de la sonde est inférieure à la valeur la plus basse on voit, dans l’affirmative, étant donné que cette nouvelle valeur est inférieure, nous allons définir la valeur faible à celle plutôt.

Un exemple de cela est :
if(sensor_value < sensor_low)
{
  sensor_low = sensor_value
}

De même avec la valeur haute, si le capteur voit une valeur plus élevée, nous allons affectez-lui la valeur plus élevée !

Un exemple de cela est :
if(sensor_value > sensor_high)
{
  sensor_high = sensor_value
}

Après les 5 secondes de calibrage, nous aller de l’avant et la valeur sensor_mid à la moyenne des valeurs basses et élevées.

Maintenant essayez vous-même :

int SENSOR_PIN=A0;
int sensor_mid = 511;

int GREEN = 2;
int YELLOW = 7;
int RED = 12;
int STREET_LIGHTS = 13;

voidsetup()
{
  pinMode(GREEN, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(RED, OUTPUT);
  pinMode(STREET_LIGHTS, OUTPUT);

calibrate();
}

voidloop()
{
  int sensor_value = analogRead(SENSOR_PIN);
  Serial.println(sensor_value);

if(sensor_value < sensor_mid)
  {
    green_light();
  }
  else
  {
    red_light();
  }
}

void calibrate()
{
  int sensor_high = 0;
  int sensor_low = 1023;
  int current_time = millis();
  int end_time = current_time + 5000;
  // we have to calibrate this in the first five seconds
 while (current_time < end_time)
 {
  // now update the current time
  current_time = millis();
   // update sensor value here!
   // your code here
   
   // record the minimum sensor value
   if (sensor_value < sensor_low)
   {
     //your code here
   }

// record the maximum sensor value
   if//your code here
   {
     sensor_high = sensor_value;
   }
 }
 
 //set mid to be the MIDDLE! :)
 sensor_mid = (sensor_high + sensor_low)/2;
}

void all_LEDs_off()
{
  digitalWrite(GREEN, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(RED, LOW);
  digitalWrite(STREET_LIGHTS, LOW);

}

void green_light()
{
  all_LEDs_off();
  digitalWrite(GREEN, HIGH);
}

void yellow_light()
{
  all_LEDs_off();
  digitalWrite(YELLOW, HIGH);
}

void red_light()
{
  all_LEDs_off();
  digitalWrite(RED, HIGH);
  digitalWrite(STREET_LIGHTS, HIGH);
}

Articles Liés

Concevoir un Custom Menu System--Android/Arduino de menus pour les débutants--absolument aucune programmation requise

Concevoir un Custom Menu System--Android/Arduino de menus pour les débutants--absolument aucune programmation requise

IntroductionCette instructable montre comment utiliser la libre pfodDesigner disponible sur GooglePlay pour concevoir un système de menus Android avec des sous-menus pour périphériques compatibles Arduino.Le tutoriel est adapté aux débutants. Aucune
Capteurs et Arduino serial communication pour les débutants de couleur

Capteurs et Arduino serial communication pour les débutants de couleur

Salut tous, je vais parler de capteurs couleur : comment construire et étalonner un et comment l'utiliser avec la communication série grâce à une carte Arduino.La dernière étape explique comment j'ai utilisé ce projet pour un Gimp (signifie « GNU Ima
Simple clic on/off de votre mobile Android en utilisant Arduino et pfodApp. Arduino pour les débutants

Simple clic on/off de votre mobile Android en utilisant Arduino et pfodApp. Arduino pour les débutants

IntroductionCe instructable montre comment vous pouvez passer un Arduino sur et en dehors de la sortie de votre mobile Android avec un simple clic sur l'icône pfodApp . Ajouter un relais conduit par cette sortie pour passer le matériel réel. Aucun co
Arduino ligne Robot suivants pour les débutants

Arduino ligne Robot suivants pour les débutants

* mise à jour GREEN 8 / 2 4 / 2 GREEN 1 voidsetup() {   // a variable created in here doesn't exist in loop } voidloop() {   // a variable created in here doesn't exist in setup } pour inclure plus de prix, source informations et modèles haut/bas/rou
LED + arduino "chenillard" (très simple, parfaite pour les débutants)

LED + arduino "chenillard" (très simple, parfaite pour les débutants)

BonjourC'est donc mon premier projet arduino. C'est très très simple et c'est bon pour les débutantsfondamentalement ses leds juste accroché de suite faire un chenillardÉtape 1: matériaux -8 x Led (j'ai utilisé des Leds 3V parce que je n'avais pas 5v
Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Mise à jour : un utilisateur invité pour sous-menu soutien. pfodApp a toujours soutenu des sous-menus, mais j'ai ajouté des sous-menus à pfodDesigner. L'instructable Design A Custom Menu System vous montre comment utiliser pfodDesigner pour générer u
BRICOLAGE domotique pour les débutants.  Absolument aucun codage ou soudure requise.  Android/Arduino pour allumage et extinction de choses

BRICOLAGE domotique pour les débutants. Absolument aucun codage ou soudure requise. Android/Arduino pour allumage et extinction de choses

Cette instructiable a pour but le débutant absolu. Si vous pouvez gérer un couteau bien aiguisé sans couper vos doigts vous peuvent faire et personnaliser ce contrôleur domotique.Ces instructions sont également en ligne à www.pfod.com.au sous Android
Comment changer un Arduino sous et hors tension de sortie de votre mobile Android.  Arduino pour les débutants

Comment changer un Arduino sous et hors tension de sortie de votre mobile Android. Arduino pour les débutants

Mise à jour : Voir Andriod/Arduino pour débutants - Design Custom Andriod menus pour activer et désactiver les sorties de l'Arduino. Absolument aucun programmation requis pour une alternative qui ne nécessite aucune programmation à tous.Comment les d
Arduino et LM35 à base de contrôleur de température pour les débutants

Arduino et LM35 à base de contrôleur de température pour les débutants

IntroductionVérifiez la température de votre propre système de surveillance à l'aide du capteur de température analogique Arduino et LM35. Il s'agit d'un projet de bricolage très simple pour les débutants de l'Arduino. Toutes les étapes et les exigen
Comment conduire une moto pour les débutants

Comment conduire une moto pour les débutants

Si vous lisez ces instructions, les chances sont que vous voulez entrer dans le monde de la motocyclette. Piloter une moto n'est pas aussi difficile que les gens pensent.DANGER : Équitation est une activité très dangereuse, donc gardez cela à l'espri
10 planche à pain projets pour les débutants

10 planche à pain projets pour les débutants

Maquette est un excellent moyen de construire des projets électroniques facilement et en moins de temps sans avoir besoin de soudure. Un problème auquel est confronté par les débutants dans le domaine de l'électronique, c'est qu'ils ne peut pas soude
Kit Robot pédagogique pour les débutants

Kit Robot pédagogique pour les débutants

mBot est un kit de robot pédagogique pour les débutants d'acquérir une expérience pratique sur la programmation graphique, électronique et robotique. C'est une solution tout-en-un pour l'apprentissage de la robotique et conçu pour l'éducation de la t
Détecteur avec LED de mouvement pour les débutants

Détecteur avec LED de mouvement pour les débutants

Il s'agit d'un projet simple, que j'ai fait pour tester certains détecteurs de mouvement, que j'ai acheté. Il détecte les mouvements et une LED s'allume lorsqu'il fait. Cela ne devrait prendre que 20 à 30 minutes de bout en bout et est un projet parf
Comment prendre des photos de l’exposition longue nuit avec un reflex numérique pour les débutants.

Comment prendre des photos de l’exposition longue nuit avec un reflex numérique pour les débutants.

Il s'agit d'un guide rapide et simple sur la façon de prendre des photos de l'exposition longue pour les débutants avec un reflex numérique. Je ne suis pas un photographe professionnel, mais je peux partager quelques conseils qui vous aideront à pren