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 | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||