Assemblage des codes

Fondamental

Si l'ensemble de vos pprogrammes fonctionnent, il faut un a un les intégrer dasn votre programme principal.

Conseil

ll est toujours conseillé de faire des programmes simples et de les tester souvent étape après étape.

Chaque programme doit être ecrit sous forme d'un sous programme void SousProgramme() :

1
void SousProgramme() :

Il est toujours difficile de trouver une ou plusieurs erreurs dans des programmes de plusieurs dizaines de lignes.

Il est aussi conseillé d'utiliser la fonction print("étape nX") pour déterminer la zone du programme qui ne fonctionnerait pas

Complément

Voici une proposition de programme que l'on fera ensemble, en partant tous sur une système composé :

  • d'un capteur d'éclairement

  • d'un DHT11

  • d'un DS18B20

  • d'un pilotage de store remplacé par un bandeau de LED (allumé : soleil)

voici un exemple de programme, Nous verrons ensemble comment comprendre puis utiliser le programme.

1
'''programme ESP32 '''
2
#déclaration des bibliothèques nécessaires :
3
from machine import Pin,ADC
4
from time import sleep,sleep_ms
5
import dht, onewire, neopixel, esp_ds18x20 #il faut ajouter sur l'ESP32 le fichier esp_ds18x20
6
#déclaration des variables e/s
7
D4 = dht.DHT11(Pin(4))
8
9
D5 = Pin(5)
10
d5_sensor = esp_ds18x20.DS18X20(onewire.OneWire(D5))
11
roms = d5_sensor.scan() #pour connaitre l'adresse du capteur ds18B20
12
#print('Adresse du capteur: ', roms) #pour connaitre l'adresse pas nécessaire ici
13
14
D34 = ADC(Pin(34))
15
D34.atten(ADC.ATTN_11DB)
16
17
BarreLed = neopixel.NeoPixel(Pin(2), 10) # bandeau 10 Leds sur la broche 2
18
for x in range(10):
19
        BarreLed[x] = (2, 2, 0)
20
        BarreLed.write()
21
print("store ouvert")
22
23
#fonction par capteurs
24
#DHT11
25
def MesureTint():
26
    try:
27
        sleep(1)
28
        # Le DHT11 renvoie au maximum une mesure toute les 1s
29
        D4.measure()
30
        # Récupère les mesures du capteur
31
        T0=(D4.temperature())
32
        #print("dht=",T0)
33
        return T0
34
        # Transmet la température sur la console de l'ordinateur
35
    except OSError as e:
36
        print('Echec reception')
37
        # Si l'esp ne reçoit pas les mesures du capteur
38
        
39
#Ds18b20
40
def MesureText():
41
    d5_sensor.convert_temp()#mesure la température
42
    global roms #indique que la variable de cette fonction fait partie du prog principal
43
    for rom in roms:
44
        ds18 = d5_sensor.read_temp(rom)
45
        #print("Ds18B20 = ", ds18)
46
        return ds18
47
    
48
def MesureEclairement():
49
    Ncapteur = D34.read()
50
    Eclairement = (Ncapteur-900)/2.47
51
    if Eclairement<0:
52
        Eclairement=0
53
    #print(Eclairement)
54
    return Eclairement
55
56
def OUVRIR(r,g,b):# 0< r,g,b < 10
57
    print("ouverture du store")
58
    for x in range(10):
59
        BarreLed[x] = (r, g, b)
60
        BarreLed.write()
61
        sleep(0.5)
62
        
63
def FERMER():
64
    print("fermeture du store")
65
    for x in range(9,-1,-1):
66
        BarreLed[x] = (0,0,0)
67
        BarreLed.write()
68
        sleep(0.5)
69
        
70
while True:
71
    #print(MesureTint(),MesureText())
72
    #print(MesureEclairement())
73
    sleep(1)
74
    FERMER()
75
    sleep(1)
76
    OUVRIR(2,2,0)
77

Ce programme nécessite des programmes intégrés au microcontrôleur