Du jour au lendemain, le programme ne fonctionne plus correctement


bonjour,

pour un projet je suis en train de réaliser un magasin automatisé.

j'ai programmé le tout grâce à pyfirmata, et tout fonctionnait à merveille !

et à partir du moment ou j'ai connecté les fils des moteurs à mes borniers de mon tableau électrique, une chose important ne fonctionne plus … la détection de mes capteurs de contact (j'ai utilisé un filtre pour que le signal sortant de ces capteurs comme celui - ci : filtre).

voici le code :

code: [select]
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
contrôle de leds branchées à l'arduino à partir
d'un pc au moyen du protocole firmata
interface graphique (tkinter)
"""


import sys
import os
import serial
import time
import pyfirmata

port = 'com3'

board = pyfirmata.arduinomega(port)


maliste = []
magasin = open("c:/users/kevin/desktop/magasin.txt",'r')
# inventaire = open("c:/users/kevin/desktop/iepscf/tfe/code/python/inventaire.txt",'r')

ok = ""

nom = ""
coord_x = 0
coord_y = 0
quantités = 0
i = 0

'''
moteurs
'''

moteur_x_aller = 29
moteur_x_retour = 27
moteur_y_aller = 23
moteur_y_retour = 25
moteur_z_aller = 24
moteur_z_retour = 22
em = 26
ind = 28

'''
capteurs
'''

capteur_x0 = board.get_pin('d:5:i')
capteur_y0 = board.get_pin('d:2:i')

capteur_induction = board.get_pin('d:4:i')

pieces = magasin.readlines()

magasin.close()
valeur_x = 0
valeur_y = 0
valeur_precedente = 0


it = pyfirmata.util.iterator(board)  # itérateur permet de ne pas engorger la communication série
it.start()


def moteur_capteur(moteur, capteur):
    board.digital[moteur].write(1)

    time.sleep(1)
    while true:
        if capteur.read() == false:
            board.digital[moteur].write(0)
           
            break

moteur_capteur(moteur_x_retour,capteur_x0)


en gros, j'utilise une fonction qui prend en entrée un moteur et son capteur associé. le moteur va tourner et dès que le contact de son capteur se ferme il s'arrête.

mais c'est pas ça le plus "drôle", c'est que quand je fais un mini programme de test pour voir l'état de mon capteur quand moi même j'appuie dessus, ben ça fonctionne (il passe bien à false quand j'appuie dessus, et true quand je n'appuie pas) ^^

donc le signal passe correctement dans la carte, mais quand j'utilise le programme (situé plus haut), ben il ignore totalement cette info …

et dernière chose qui à mon avis est l'os du problème, c'est que la led tx est tout le temps allumée.

sauf quand j'appuie sur un bouton, (celui la : bouton), qui est relié sur la bread board (je l'utilisais pour mes tests pour simuler le fait qu'un capteur à induction détectait du métal), dès que j'appuie dessus, le tx s'éteint.

voila je pense avoir tout récité, c'est pas évident de tout résumer pour ceux qui ne sont pas dans mon projet, donc si vous avez des questions n'hésitez surtout pas.   

d'avance merci

bonjour,

enlève le "break" pour voir.


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Du jour au lendemain, le programme ne fonctionne plus correctement


arduino

Comments

Popular posts from this blog

Error compiling for board Arduino/Genuino Uno.

Installation database is corrupt

esp8266 (nodemcu 0.9) client.write très lent ???