Des sketchs à ajouter à ArdPyLog (suite)


16. Module Line Tracker
(Apprendre à utiliser un module suiveur de ligne  – Catégorie: Capteurs)

 

L’objectif de cette activité est d’apprendre à utiliser un module suiveur de ligne KY-033.
Ce module détecte si une surface réfléchissant ou absorbant la lumière se trouve devant le capteur :

État 1 : le suiveur de ligne est au-dessus d’une ligne (surface non réfléchissante), la DEL du module est éteinte et la sortie du capteur est à un niveau haut.

 

État 2 : le suiveur de ligne est en dehors d’une ligne (surface réfléchissante), la LED sur le module est allumée et la sortie du capteur est à un niveau bas.

 

Affectation des broches :

 

Le module suiveur de ligne KY-033 peut être utilisé dans les robots, afin de suivre une ligne de manière autonome.

L’écran à cristaux liquides utilisé comporte deux rangées de 16 caractères, d’où son nom de LCD 1602 et le potentiomètre du montage permet de régler sa luminosité.

Le code de l’activité nécessite l’installation au préalable de la librairie  » LiquidCrystal  » d’Adafruit.
Afin d’ajouter une librairie à l’IDE Arduino, il faut aller dans le menu « Outils ->Gérer les bibliothèques » :

Il suffit ensuite de rechercher et d’ajouter la librairie  » LiquidCrystal  » d’Adafruit:

 

Le programme

Voici le code de l’activité :

const int onOffSwitchStateSwitchPin = 7;
const int PinLED = 6;

int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int state=0;

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


void setup() {

pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(PinLED,OUTPUT);
pinMode(A0, INPUT);

lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« ARDUINO -« );
lcd.setCursor(0, 1);
lcd.print (« LINETRACKER »);

}

void loop() {
onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
if ((onOffSwitchState == HIGH)&&(previousOnOffSwitchState == LOW))
{
state=1-state;
delay(10);
}
else
{
if ((onOffSwitchState == LOW)&&(previousOnOffSwitchState == HIGH))
{
delay(10);
}
}
previousOnOffSwitchState = onOffSwitchState;

if (state==1)
{

digitalWrite(PinLED, HIGH);
bool ValSensor=digitalRead(A0);

if (ValSensor==HIGH){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« LINETRACKER »);
lcd.setCursor(0, 1);
lcd.print (« ON LINE »);
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« LINETRACKER »);
lcd.setCursor(0, 1);
lcd.print (« NOT ON LINE »);
}
delay(500);
}

else
{
digitalWrite(PinLED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print (« ARDUINO -« );
lcd.setCursor(0, 1);
lcd.print (« LINETRACKER »);
digitalWrite(8, LOW);
delay(500);
}

}

 

Déroulement du programme :

– 1. Insertion des bibliothèques :

. Insertion de la librairie  » LiquidCrystal  » d’Adafruit,
. Initialisation de la librairie avec les broches utilisées pour l’écran LCD.

 

– 2. Déclaration des constantes et variables :

. const int onOffSwitchStateSwitchPin = 7 (constante nombre entier correspondant à la broche du bouton poussoir)

. const int PinLED = 6 (constante nombre entier correspondant à la broche de la DEL)

. int onOffSwitchState = 0 (variable nombre entier pour stocker la valeur du potentiel de la broche du bouton poussoir)

. int previousOnOffSwitchState = 0 (variable nombre entier pour stocker la précédente valeur du potentiel de la broche du bouton poussoir)

. int state = 0 (variable nombre entier correspondant à l’action à effectuer)

 

– 3. Initialisation des entrées et sorties :

. Initialisation du nombre de lignes et de colonnes de l’écran LCD,
. Initialisation de la broche du bouton poussoir en entrée digitale,
. Initialisation de la broche de la DEL en sortie digitale,
. Initialisation de la broche A0 en entrée digitale,
. Affichage du titre de l’activité « ARDUINO – LINETRACKER» sur l’écran LCD.

 

– 4. Fonction principale en boucle :

–> Lecture de la valeur de la broche du bouton poussoir,
–> Si le bouton poussoir est appuyé, la lecture de l’entrée A0 commence (la DEL rouge est allumée),
–> Affichage des messages « LINETRACKER ON LINE » ou « LINETRACKER NOT ON LINE » sur l’écran LCD en fonction de la valeur de la sortie du capteur,
–> Si le bouton poussoir est de nouveau appuyé, les mesures sont arrêtées (la DEL rouge est éteinte).