Programme
Equipement nécessaire : Carte Microbit + afficheur
L'afficheur donne la valeur de l'accélération et le temps pour lequel elle dure.
from microbit import * import utime # Adresse I2C du LCD (peut être 0x27 ou 0x3F selon le modèle) LCD_I2C_ADDR = 0x27 # Classe pour contrôler le LCD I2C class LCD: def __init__(self, addr): self.addr = addr self.init_lcd() def send(self, data, mode=0): buf = bytearray(2) buf[0] = mode buf[1] = data i2c.write(self.addr, buf) def command(self, cmd): self.send(cmd, 0) def write(self, text): for char in text: self.send(ord(char), 1) def clear(self): self.command(0x01) utime.sleep_ms(2) def init_lcd(self): utime.sleep_ms(50) self.command(0x33) # Mode 4 bits self.command(0x32) # Mode 4 bits self.command(0x28) # Écran 2 lignes, 5x8 points self.command(0x0C) # Affichage activé, pas de curseur self.command(0x06) # Auto-incrémentation du curseur self.clear() def set_cursor(self, line, col): addr = 0x80 + (0x40 * line) + col self.command(addr) lcd = LCD(LCD_I2C_ADDR) # Initialisation lcd.write("Init...") max_accel = 0 # Stocke la valeur max en m/s² start_time = 0 # Temps où l'accélération max est détectée duration = 0 # Durée de maintien de l'accélération max while True: accel_mg = accelerometer.get_z() # Lecture en mg (milligravité) accel_mg = abs(accel_mg) # Valeur absolue # Conversion en m/s² accel_ms2 = (accel_mg * 9.81) / 1000 # Si une nouvelle accélération max est détectée if accel_ms2 > max_accel: max_accel = accel_ms2 start_time = utime.ticks_ms() # Enregistre l'instant du début duration = 0 # Réinitialisation de la durée # Calcul de la durée si on est toujours sur la même valeur max if max_accel == accel_ms2: duration = (utime.ticks_ms() - start_time) / 1000 # En secondes # Affichage sur LCD lcd.clear() lcd.set_cursor(0, 0) lcd.write("Accel max:") lcd.set_cursor(0, 10) lcd.write("{:.2f}m/s2".format(max_accel)) lcd.set_cursor(1, 0) lcd.write("Temps:") lcd.set_cursor(1, 7) lcd.write("{:.1f} s".format(duration)) utime.sleep(0.5) # Pause avant la prochaine mesure |
Créé avec HelpNDoc Personal Edition: 5 raisons pour lesquelles un outil de création d'aide est meilleur que Microsoft Word pour la documentation