Python, mon programme ne marche pas HELP!

uneasperge Messages postés 2 Statut Membre -  
uneasperge Messages postés 2 Statut Membre -

Bonjour,

Mon prof m'a demandé de réaliser un programme Python qui permettrait à un robot (mBot) de suivre une ligne noire. Cependant, ce programme doit être activé depuis un autre appareil. D'après Thonny, la 19ème ligne (ligne soulignée) a une erreur mais je n'arrive pas à la trouver : (

Pouvez-vous m'aider ?

Merci d'avance : )

import board
import busio
import time
import pwmio
from digitalio import DigitalInOut, Direction

octet = ""

moteur_gauche=DigitalInOut(board.D1)
moteur_gauche.direction=Direction.OUTPUT
moteur_droite=DigitalInOut(board.D2)
moteur_droite.direction=Direction.OUTPUT

capteur_gauche=DigitalInOut(board.D3)
capteur_gauche.direction=Direction.INPUT
capteur_droite=DigitalInOut(board.D4)
capteur_droite.direction=Direction.INPUT

ser=busio.UART(board TX, board RX, baudrate=9600, timeout=0.300)

def suivre_ligne():
    if capteur_gauche.value == 1 and capteur_droite.value == 1:
        moteur_gauche.value = 1
        moteur_droite.value = 1
        
    elif capteur_gauche.value == 1:
        moteur_gauche.value = 1
        moteur_droite.value = 0
        
    elif capteur_droite.value == 1:
        moteur_gauche.value = 0
        moteur_droite.value = 1
while True:
    
    octet = ser.read(32)
    print("Octet = ", octet)
    time.sleep(1)
    
    if octet == b'1\r\n':
        suivre_ligne()
    elif octet == b'0\r\n':
        moteur_gauche.value = 0
        moteur_droite.value = 0

3 réponses

  1. georges97 Messages postés 14566 Date d'inscription   Statut Contributeur Dernière intervention   2 919
     

    Bonjour,

    Il semble que les modules Adafruit tels que busio nécessitent quelques instructions additionnelles pour assurer leur compatibilité avec le périphérique connecté

    voir :

    https://raspberrypi.stackexchange.com/questions/122262/how-to-avoid-importing-adafruit-python-modules-such-as-busio-and-board

    vérifier également si votre version de Thonny est à jour. Il vous faut au minimum python 3.6 pour fonctionner avec busio

    https://forums.raspberrypi.com/viewtopic.php?t=301860

    voir aussi :

    https://docs.circuitpython.org/en/latest/shared-bindings/busio/index.html

    Par ailleurs, de ce que je comprends de votre message, le programme est exécuté sur un ordinateur (peut-être un raspberry pi) et transmis (en wifi?) sur le mbot. Je chercherais donc à vérifier (dans un script de test) que le signal arrive bien et que leds ou servos-moteurs sont activés sur une instruction. Si je ne me trompe pas, busio communique sur un port i2c.

    Ceci dit, je n'ai pas suivi le portage de python sur mbot (et je n'ai que les versions qui fonctionnaient avec scratch et arduino/mbot).

    J'espère donc que ces pistes (sauf erreur de ma part sur toute la ligne) et d'autres à venir vous permettrons de trouver les corrections à appliquer.

    Ces erait bien de poster ici vos avancées.

    1
  2. hypothetix Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   68
     

    Bonjour,

    ser=busio.UART(board TX, board RX, baudrate=9600, timeout=0.300)
     Thonny doit signaler qu'il ne faut pas d'espace dans un nom de variable
     donc essaie:
     ser=busio.UART(boardTX, boardRX, baudrate=9600, timeout=0.300)
     
     Des exemples ici:
     https://www.programcreek.com/python/example/123500/busio.UART
     
     remarque:
     Pour deposer du code merci de suivre les directives suivantes ici:
     https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
     
     
     Bon courage
     


    1
  3. uneasperge Messages postés 2 Statut Membre
     

    Merci pour vos toutes réponses !

    Il semble que j'ai oublié de mettre un point entre "board" et "RX" et "board" et "TX" : )

    Merci pour les liens envoyés qui m'on réellement aidés !

    0