ACTIVITE ARDUINO/PYTHON : Ouverture automatique de porte (avec codes Arduino et codes Python équivalent)

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)

Laisser un commentaire