Différences
Ci-dessous, les différences entre deux révisions de la page.
python:micropython:es [2023/08/19 19:37] – [2.2 Entrée numérique] phil | python:micropython:es [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | [[: | ||
- | |||
- | ===== MicroPython - Entrées, Sorties (GPIO) ===== | ||
- | {{ : | ||
- | |||
- | [Mise à jour le : 1/6/2023] < | ||
- | |||
- | * **Ressources** | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | |||
- | * **Lectures connexes** | ||
- | * [[python: | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | |||
- | |||
- | ==== 2. Entrées, sorties numériques ==== | ||
- | |||
- | {{ : | ||
- | {{ : | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | === 2.3 Interruption === | ||
- | {{ : | ||
- | * **Matériel** : [[arduino: | ||
- | |||
- | == 2.3.1 Présentation == | ||
- | Une **interruption** est un **arrêt temporaire** de l' | ||
- | L’interruption est provoquée par une cause externe (action sur un bouton-poussoir, | ||
- | On utilise les interruptions afin de permettre des **communications non bloquantes** avec des périphériques externes. \\ | ||
- | Une interruption tient compte de l’état logique présent sur une broche. Couramment, on la déclenchera sur **le front montant, le front descendant, ou chacun des fronts** d’un signal logique. | ||
- | |||
- | <callout type=" | ||
- | Une interruption sera reconnue si le signal présente des fronts " | ||
- | Les figures ci-dessous représentent un signal transmis à la fermeture du contact d’un anémomètre. Le signal de gauche n’est pas utilisable à cause du rebondissement du contact. En effet, il contient quatre fronts montants au lieu d’un seul comme dans le cas du signal de droite.</ | ||
- | |||
- | {{ : | ||
- | |||
- | == 2.3.2 Configuration == | ||
- | La configuration en entrée de la broche destinée à recevoir un évènement est identique à celle du paragraphe précédent. \\ \\ | ||
- | |||
- | == 2.3.3 Evènement et gestionnaire d' | ||
- | Un évènement est attaché à un gestionnaire (service d' | ||
- | |||
- | {{ : | ||
- | == 2.3.4 Exemples de code == | ||
- | < | ||
- | * [[# | ||
- | * [[# | ||
- | |||
- | <pane id=" | ||
- | < | ||
- | |||
- | //Exemple de code pour un **Raspberry Pi Pico**// | ||
- | <code python *.py> | ||
- | </ | ||
- | |||
- | </ | ||
- | |||
- | <pane id=" | ||
- | * **Ressource** : < | ||
- | |||
- | //Exemple de code pour un **ESP32 Feather Huzzah**// | ||
- | <code python *.py> | ||
- | # Code partiel du programme HORLOGE | ||
- | |||
- | # Réglage de l' | ||
- | time_offset=12*3600+0*60+0 # hh+mm+ss | ||
- | |||
- | # Routines de service d' | ||
- | def handle_interrupt_min(pin): | ||
- | global time_offset | ||
- | time_offset+=60 | ||
- | time.sleep(.2) | ||
- | |||
- | def handle_interrupt_hr(pin): | ||
- | global time_offset | ||
- | time_offset+=3600 | ||
- | time.sleep(.2) | ||
- | |||
- | # Réglage des minutes | ||
- | # Ajout de 60s à l' | ||
- | button_min = Pin(25, Pin.IN) | ||
- | # Gestionnaire d' | ||
- | button_min.irq(trigger=Pin.IRQ_RISING, | ||
- | |||
- | # Réglage des heures | ||
- | # Ajout de 3600s à l' | ||
- | button_hr = Pin(26, Pin.IN) | ||
- | # Gestionnaire d' | ||
- | button_hr.irq(trigger=Pin.IRQ_RISING, | ||
- | {{ : | ||
- | </ | ||
- | <callout type=" | ||
- | </ | ||
- | </ | ||
- | {{ : | ||
- | <callout type=" | ||
- | |||
- | {{ : | ||
- | ==== 3. Entrées analogiques ==== | ||
- | * **Ressource** | ||
- | * < | ||
- | |||
- | === 3.1 Présentation === | ||
- | * **Ressource** | ||
- | * < | ||
- | {{ : | ||
- | === 3.2 Exemples de code === | ||
- | < | ||
- | * [[# | ||
- | * [[# | ||
- | |||
- | <pane id=" | ||
- | * **Ressource** | ||
- | * < | ||
- | //Exemple de code pour un **Raspberry Pi Pico**// | ||
- | <code python *.py> | ||
- | # ------------------------------------------------------------------------------- | ||
- | # Lecture et affichage dans la console de la tension issue d'un potentiomètre | ||
- | # Date : 22/5/2023 | ||
- | # Matériels : Raspberry Pi Pico, Shield Grove, pot. 10k | ||
- | # ADC accessibles sur le shield Grove pour RP2 : | ||
- | # Connecteur: ADC : GPIO | ||
- | # A0 : ADC0 : 26 | ||
- | # A1 : ADC0,ADC1: 26,27 | ||
- | # A2 : ADC1,ADC2: 27,28 | ||
- | # IDE : Thonny | ||
- | # ------------------------------------------------------------------------------- | ||
- | from machine import ADC, Pin | ||
- | import time | ||
- | |||
- | # Le potentiomètre 10kOhm est connecté à l' | ||
- | # Attention : La tension doit être comprise entre 0 - 3,3V (3,6V max !) | ||
- | # sur une entrée analogique. | ||
- | # Configuration | ||
- | pot = ADC(Pin(26)) | ||
- | |||
- | while (True): | ||
- | val=pot.read_u16() # lecture de l'ADC | ||
- | U = val*3.3/ | ||
- | print(" | ||
- | time.sleep(1) | ||
- | </ | ||
- | </ | ||
- | |||
- | <pane id=" | ||
- | * **Ressource** | ||
- | * < | ||
- | //Exemple de code pour un **ESP32 Feather Huzzah**// | ||
- | <code python *.py> | ||
- | # ADC accessibles en Python sur la carte ESP32 Feather Huzzah : | ||
- | # ADC:GPIO | ||
- | # A2 : 34 | ||
- | # A3 : 39 | ||
- | # A4 : 36 | ||
- | # A7 : 32 | ||
- | # A9 : 33 | ||
- | |||
- | from machine import ADC, Pin | ||
- | |||
- | # Le potentiomètre 10kOhm est connecté à l' | ||
- | # Configuration | ||
- | adc = ADC(Pin(34)) | ||
- | # Sur une entrée analogique, la tension doit | ||
- | # être comprise entre 0 - 3,3V (3,6V max !) | ||
- | adc.atten(ADC.ATTN_11DB) # voir doc | ||
- | # Mesure | ||
- | value = adc.read() | ||
- | |||
- | print(value) # affichage dans la console | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||