(w / vidéo) Robot de base Arduino, chercheur de lumière ! (4 / 8 étapes)

Étape 4: Intégrant des capteurs de lumière partie 2

Après en agitant les mains devant les capteurs de lumière et regardant sur leur variation de valeur, vous remarquerez lorsque la cellule photoélectrique détecte moins de lumière, le capteur valeur sera montée, et lorsqu’il détecte plus de lumière, le capteur de valeur va baisser. C’est parce que le capteur diminue la résistance lorsqu’il détecte une lumière vive. Lorsqu’il y a moins de résistance à travers les deux fils de la LDR, la broche d’entrée analogique va commencer à lire un signal au sol, ou quelque chose proche de lui. Lorsque le le LDR reçoit moins de lumière, augmente la résistance à la terre, et plus d’électricité se rende jusqu'à l’analogique broche de la résistance pullup qui est reliée au + 5v.

Par préférence personnelle, j’aime avoir le analogRead() fonction 0(min) retour si la cellule photoélectrique est sombre et 1023(max) s’il détecte une lumière vive. Nous pouvons résoudre ce problème en utilisant le logiciel. Il n’y a aucun changement dans le circuit.

À cette section de code :

SensorLeft = analogRead(LeftSensor) ;
Delay(1) ;

Nous pouvons ajouter :

SensorLeft = 1023 - analogRead(LeftSensor) ;
Delay(1) ;

Cela retire tout ce que la valeur les retours de fonction analogRead() de 1023 (qui est la valeur max, qu'elle peut retourner).
De cette façon, il va inverser ce que jamais la valeur les retours analogRead().
Par exemple, si la valeur de analogRead() est x

x = 0
Valeur de la sonde = 1023 - x
Valeur de la sonde = 1023-0
Valeur de la sonde = 1023

x = 1023
Valeur de la sonde = 1023 - x
Valeur de la sonde = 1023-1023
Valeur de la sonde = 0

Cette méthode peut servir à inverser n’importe quelle valeur, aussi longtemps que vous connaissez la valeur maximale, qu'elle sera de retour.
Par exemple, si un capteur renvoie un maximum de 255 :
Val = 255 - valeur capteur

Télécharger ce code sur la carte Arduino et testez-le.

Copier le code à partir de ce moment :

/****************************************************************************************************************
* Programme de lecture deux LDRs
* créé par : Anuj
* (c) tous droits réservés
*
*
* Installation physique :
* Deux LDRs reliés au sol et broche analogique 1(Right) et broche analogique 2(left)
*
*
******************************************************************************************************************/
À l’aide d’Arduino Duemilinove

Définitions de pin - attache une variable à une broche.
const int RightMotor = 2 ; Cette broche est utilisée pour activer ou désactiver le moteur droit. Connecté à la base d’un transistor NPN.
const int LeftMotor = 3 ; Cette broche est utilisée pour activer ou désactiver le moteur gauche. Connecté à la base d’un transistor NPN.
const int RightSensor = 1 ; Cette broche est utilisée pour lire la valeur du capteur droit.
const int LeftSensor = 2 ; Cette broche est utilisée pour lire la valeur du capteur gauche.

Définitions de variable

int SensorLeft ; Cette option stocke la valeur de l’axe gauche capteur à utiliser plus tard dans le sketch
int SensorRight ; Cette option stocke la valeur de l’axe droit capteur à utiliser plus tard dans le sketch

la méthode setup() s’exécute une fois lorsque le programme est exécuté. Lors de la
Arduino est réinitialisé, la setup() sera exécutée une fois de plus.

void setup() {}

pinMode (entrée, LeftSensor) ; Définit cette broche en tant qu’entrée. L’Arduino lira les valeurs de cette broche.
pinMode (entrée, RightSensor) ; Définit cette broche en tant qu’entrée. L’Arduino lira les valeurs de cette broche.
digitalWrite (A1, élevé) ; Permet une résistance pullup interne
digitalWrite (A2, élevé) ; Permet une résistance pullup interne
Serial.Begin(9600) ; Permet une connexion série par le biais de l’Arduino USB ou UART (bornes 0 & 1). Notez que le débit en bauds correspond à 9600
Serial.println ("\nReading capteurs de lumière.") ; Placé à la fin de void Setup() pour qu’il soit s’exécute une seule fois, juste avant le void Loop()
}

la méthode loop() exécute maintes et maintes fois,
aussi longtemps que l’Arduino a pouvoir

void loop() {}
SensorLeft = analogRead(LeftSensor) ; Ce lit la valeur de la sonde, puis l’enregistre à l’entier correspondant.
Delay(1) ; ce retard permet au convertisseur analogique/numérique IC récupérer pour la prochaine lecture.
SensorRight = analogRead(RightSensor) ; Ce lit la valeur de la sonde, puis l’enregistre à l’entier correspondant.
Delay(1) ; ce retard permet au convertisseur analogique/numérique IC récupérer pour la prochaine lecture.

Cette section de l’esquisse est utilisée pour imprimer les valeurs de la
capteurs à travers de la série de l’ordinateur. Utile pour déterminer
Si les capteurs fonctionnent et si le code fonctionne aussi correctement.
Ceci est connu comme le débogage.

Serial.Print ("capteur à gauche =") ; Imprime le texte à l’intérieur des guillemets.
Serial.Print(SensorLeft) ; Imprime la valeur de la sonde de gauche.
Serial.Print("\t") ; Imprime un onglet (espace).
Serial.Print ("capteur à droite =") ; Imprime le texte à l’intérieur des guillemets.
Serial.Print(SensorRight) ; Imprime la valeur de la sonde de droit.
Serial.Print("\n") ; Imprime une nouvelle ligne après toutes les données nécessaires sont affichées.
}

Ne copiez pas quoi que ce soit au-delà de ce point.

Maintenant il faut des capteurs à utiliser avec notre robot, mais nous ne sommes pas tout à fait encore fait. Nous avons besoin d’un moyen de comparer ces valeurs. En utilisant uniquement ces valeurs, nous pouvons déterminer si un capteur est lire une valeur plue ou moins puis l’autre capteur, ou si ils sont exactement les mêmes.

Maintenant, à cause de beaucoup d’autres facteurs tels que des divergences mineures dans la fabrication de LDR, gigue, EMI, etc., les valeurs pour le capteur de lumière sera rarement être exactement les mêmes. Donc au lieu de cela, nous pouvons utiliser un autre entier afin de déterminer si elles sont environ les mêmes. Nous pouvons y parvenir en utilisant le calcul de la différence entre les deux capteurs de lumière. Nous pouvons soustraire la valeur d’un capteur par la valeur de l’autre capteur et puis de trouver la valeur absolue du capteur. Ceci renverra la différence des deux capteurs et nous pouvons l’utiliser immédiatement ou enregistrer sur un autre entier, dans le cas où nous avons besoin de l’utiliser plus d’une fois. La valeur finale peut être utilisée pour déterminer si les capteurs sont en train de lire deux valeurs distinctes ou si elles sont assez semblables. La valeur est élevée, plus la différence. À l’aide d’un if déclaration, je peux dire, si les valeurs des capteurs sont dans des incréments de 100 des uns des autres, pour ce faire.

Si (SensorDifference < = 100) {}
Exécuter ce.
}

Ferroutage hors notre code précédent qui doit être encore être en cours d’exécution sur la carte Arduino,
Nous pouvons utiliser les deux entiers qui contiennent la valeur des capteurs à calculcate la différence et l’enregistrer dans un nouveau entier.

Le nouveau code ressemble à ceci. Les changements sont en caractères gras.

/****************************************************************************************************************
* Programme de lecture deux LDRs
* créé par : Anuj
* (c) tous droits réservés
*
*
* Installation physique :
* Deux LDRs reliés au sol et broche analogique 1(Right) et broche analogique 2(left)
*
*
******************************************************************************************************************/
À l’aide d’Arduino Duemilinove

Définitions de pin - attache une variable à une broche.
const int RightMotor = 2 ; Cette broche est utilisée pour activer ou désactiver le moteur droit. Connecté à la base d’un transistor NPN.
const int LeftMotor = 3 ; Cette broche est utilisée pour activer ou désactiver le moteur gauche. Connecté à la base d’un transistor NPN.
const int RightSensor = 1 ; Cette broche est utilisée pour lire la valeur du capteur droit.
const int LeftSensor = 2 ; Cette broche est utilisée pour lire la valeur du capteur gauche.

Définitions de variable

int SensorLeft ; Cette option stocke la valeur de l’axe gauche capteur à utiliser plus tard dans le sketch
int SensorRight ; Cette option stocke la valeur de l’axe droit capteur à utiliser plus tard dans le sketch
int SensorDifference; / / cette valeur est utilisée pour déterminer la différence entre la gauche et la droite

la méthode setup() s’exécute une fois lorsque le programme est exécuté. Lors de la
Arduino est réinitialisé, la setup() sera exécutée une fois de plus.

void setup() {}

pinMode (entrée, LeftSensor) ; Définit cette broche en tant qu’entrée. L’Arduino lira les valeurs de cette broche.
pinMode (entrée, RightSensor) ; Définit cette broche en tant qu’entrée. L’Arduino lira les valeurs de cette broche.
digitalWrite (A1, élevé) ; Permet une résistance pullup interne
digitalWrite (A2, élevé) ; Permet une résistance pullup interne
Serial.Begin(9600) ; Permet une connexion série par le biais de l’Arduino USB ou UART (bornes 0 & 1). Notez que le débit en bauds correspond à 9600
Serial.println ("\nReading capteurs de lumière.") ; Placé à la fin de void Setup() pour qu’il soit s’exécute une seule fois, juste avant le void Loop()
}

la méthode loop() exécute maintes et maintes fois,
aussi longtemps que l’Arduino a pouvoir

void loop() {}
SensorLeft = analogRead(LeftSensor) ; Ce lit la valeur de la sonde, puis l’enregistre à l’entier correspondant.
Delay(1) ; ce retard permet au convertisseur analogique/numérique IC récupérer pour la prochaine lecture.
SensorRight = analogRead(RightSensor) ; Ce lit la valeur de la sonde, puis l’enregistre à l’entier correspondant.
Delay(1) ; ce retard permet au convertisseur analogique/numérique IC récupérer pour la prochaine lecture.

SensorDifference = abs(SensorRight = SensorLeft) ;

Cette section de l’esquisse est utilisée pour imprimer les valeurs de la
capteurs à travers de la série de l’ordinateur. Utile pour déterminer
Si les capteurs fonctionnent et si le code fonctionne aussi correctement.
Ceci est connu comme le débogage.

Serial.Print ("capteur à gauche =") ; Imprime le texte à l’intérieur des guillemets.
Serial.Print(SensorLeft) ; Imprime la valeur de la sonde de gauche.
Serial.Print("\t") ; Imprime un onglet (espace).
Serial.Print ("capteur à droite =") ; Imprime le texte à l’intérieur des guillemets.
Serial.Print(SensorRight) ; Imprime la valeur de la sonde de droit.
Serial.print("\t"); / / imprime un onglet (espace).
Serial.print ("capteur différence =") ; Imprime le texte à l’intérieur des guillemets.
Serial.Print(SensorDifference) ;
Serial.Print("\n") ; Imprime une nouvelle ligne après toutes les données nécessaires sont affichées.
}

Articles Liés

ARD-e: le robot avec un Arduino comme un cerveau

ARD-e: le robot avec un Arduino comme un cerveau

comment faire pour créer un robot Arduino contrôlée de source ouverte pour moins de 100 $.Si tout va bien après avoir lu ce instructable vous serez en mesure de prendre vos premiers pas dans la robotique. ARD-e a coûté environ 90 $ à 130 $ selon comb
Bon marché programmable bras robotique de l’Arduino

Bon marché programmable bras robotique de l’Arduino

C'est censé être un guide pour débutants à la façon de construire un bras robotique de l'Arduino. Son concept est d'être bon marché et facile à construire. Il s'agit d'un prototype d'optimiser mon code, mais il est parfait débuter avec Arduino roboti
2 roues Self Balancing Robot en utilisant Arduino et MPU6050

2 roues Self Balancing Robot en utilisant Arduino et MPU6050

2 roues Self Balancing Robot en utilisant Arduino et MPU6050.Utiliser Arduino comme le régulateur et la sonde MPU6050 pour contrôler l'équilibre. Juste ajouter un module Bluetooth Serial simple et utiliser une application de contrôleur Serial Bluetoo
Faire un Robot autonome avec Arduino UNO

Faire un Robot autonome avec Arduino UNO

Équilibrage automatique Robot est très intéressant. Beaucoup d'amis autour de nous essayaient de faire un, mais ils ont rencontré beaucoup de défis, notamment le manque de programmes, les circuits électroniques appropriés et les structures de facile-
Chercheur de lumière Arduino

Chercheur de lumière Arduino

tout d'abord, je suis Suisse donc veuillez excuser mes fautes d'anglais.Voici une de mon premier petit projet que j'ai fait avec mon Arduino Uno.Il est est juste un peu chercheur de lumière. Le servo tourne vers la lumière.J'ai fait une vidéo pour vo
Introduction à la robotique de base

Introduction à la robotique de base

Cette instructable est destinée à aider à construire un robot de base que vous pouvez acheter en kit ou monter via opensource. Vous pouvez obtenir la trousse en utilisant la nomenclature opensource sur notre site Web, http://www.build-bots.com/. *HAL
Le robot Rover - contreplaqué Arduino et lasercut

Le robot Rover - contreplaqué Arduino et lasercut

Rover Robot est la construction plus simple que vous pouvez construire avec kit LOFI Robot EDUBOX . Rover est une base pour la plupart des autres constructions robot comme l'évitement d'obstacles, lumière suite, peinture, contrôle plus de bluetooth,
LDRs + Arduino = un simple robot qui peut détecter la lumière !

LDRs + Arduino = un simple robot qui peut détecter la lumière !

An LDR est une résistance dépendant de la lumière et a de nombreuses utilisations, par exemple, un photocel qui peut allumer les lumières de votre maison quand sa faire sombre à l'extérieur.Une façon intéressante pour comprendre comment cela fonction
En utilisant un Robot de dessin Arduino avec heures de tutoriels Code

En utilisant un Robot de dessin Arduino avec heures de tutoriels Code

J'ai créé un Arduino robot pour un atelier de dessin pour aider les adolescentes à s'intéresser à des sujets de souches (voir). Le robot a été conçu pour la tortue-style programmation des commandes telles que forward(distance) et turn(angle) permet d
Binguino : Un générateur de base Arduino Bingo

Binguino : Un générateur de base Arduino Bingo

Bingo!Ma petite-fille aime jouer au Bingo, donc je suis sorti et lui acheté unensemble bon marché dans une petite boutique discount. Les cartes et les marqueurs sont très bien,mais le disque spinner pour sélectionner les numéros est un morceau d'ordu
Obstacle Avoider Robot en utilisant Arduino Uno et capteur de proximité IR

Obstacle Avoider Robot en utilisant Arduino Uno et capteur de proximité IR

Suivez les étapes pour créer un Obstacle éviter Robot en utilisant Arduino Uno et IR capteur de proximitéEtape 1: Eléments requis1) Arduino Uno R3 (Clone fera l'affaire)2) capteurs de proximité IR (2 recommandé)3) châssis avec moteurs4) planche5) Con
Chercheur de lumière mini

Chercheur de lumière mini

Faites votre propre robot chercheur de lumière mini.Étape 1: Que vous faut-il -85 Attiny-Titulaire de l'IC DIP8-Programmeur pour le Attiny (j'ai utilisé une arduino uno en tant que programmeur)-2 x mini moteur (spécifications : 12x6mm, tension 1.5V,
Contrôle JavaScript robotique et basée sur un navigateur Arduino

Contrôle JavaScript robotique et basée sur un navigateur Arduino

vos connaissances en développement web et JavaScript permettent de contrôler les projets d'Arduino et même robots (nœud + robots = nodebots) !Ceci est rendu facile avec node.js, Firmata et Johnny-cinq. Let's get started ! Johnny-cinq logo par Mike Sg
CupBots - 3D plate-forme robotique imprimé pour Arduino et Raspberry Pi

CupBots - 3D plate-forme robotique imprimé pour Arduino et Raspberry Pi

Voici un projet de robotique du grand week-end d'entreprendre avec des amis ou des gens de votre espace de la machine locale. Vous aurez besoin une imprimante 3D très pratique à la 3D impression les fichiers STL en pièce jointe dans le cadre de la pr