Remarque : Cette activité peut être programmée avec le langage d’Arduino mais aussi en Python. Pour cela, il faut utiliser Nanpy (voir l’article Programmer-en-python-pour-la-carte-arduino)
Objectif : On fait passer la position d’un servomoteur de 45° à 90° quand l’éclairement est faible. Cela pourrait être utile pour une fermeture automatique de porte de poulailler à la tombée de la nuit … Résistance 1kΩ en série avec la LDR.
/*
Fermeture de la porte d’un poulailler pour un faible éclairement d'une photorésistance
*/
#include<Servo.h> // bibliothèque pour utiliser le servomoteur
int Valeur_A0;
float Tension_A0;
Servo MonServo ;
void setup(){
MonServo.attach(9) ; // on attribue la broche 9 pour l'instruction donnée au servomoteur
}
void loop(){
Valeur_A0=analogRead(A0); // lecture de la tension sur l'entrée analogique A0
// (valeur comprise entre 0 et 1023 qui correspond à une tension entre 0 et 5V)
Tension_A0=(float)Valeur_A0*5/1023; # conversion de la valeur en V
if (Tension_A0<4.0){ // Selon la tension lue, la position du servomoteur est de 90°
//ou 45° (ici on a choisi comme valeur de référence : 4V)
MonServo.write(90) ;
}
else{
MonServo.write(45) ;
}
delay(250);
}
# -*- coding: utf-8 -*-
"""
Programme Python pour montage Arduino ouverture automatique de porte de poulailler
Partie capteur :
la photorésistance est privée de lumière (quand la nuit tombe) ou est éclairée.
Partie actionneur :
Selon l’éclairement reçu par la photorésistance, le servomoteur prend une position à 45° ou 90°.
"""
######################################### IMPORTATION DES BIBLIOTHEQUES ET MODULES #############################################################################
from nanpy import ArduinoApi # importation des bibliothèques pour communication avec Arduino
from nanpy import SerialManager
from nanpy import Servo # pour utiliser le servomoteur
from time import sleep # pour faire des "pauses" dans l'exécution du programme
######################################### COMMUNICATION AVEC CARTE ARDUINO ET DEFINITION DES BROCHES ET VARIABLES #######################################################
connection = SerialManager(device='COM7') #indiquer le bon port de la carte Arduino
a = ArduinoApi(connection=connection) #connection à la carte Arduino, on précédera chaque instruction Arduino par
# a. (exemple a.pinMode(2,a.OUTPUT)
servo = Servo(9, connection=connection) # on attribue la broche 9 pour l'instruction donné au servomoteur
######################################### CODE ARDUINO EN LANGAGE PYTHON #################################################################################
while True:
Valeur_A0=a.analogRead(0) # lecture de la tension sur l'entrée analogique A0 (valeur comprise entre 0 et 1023
# qui correspond à une tension entre 0 et 5V)
Tension_A0=Valeur_A0*5.0/1023 # conversion de la valeur en V
if (Tension_A0<4.0): # Selon la tension lue, la position du servomoteur est de 90° ou 45° (ici on a choisi
# comme valeur de référence : 4V)
servo.write(90)
else:
servo.write(45)
print (Tension_A0)
sleep(0.25)