Page 1 sur 6

Coordoner moteur pas à pas et raspicam

Posté : sam. 11 avr. 2015 23:24
par Eddie
Bonjour,

Je voudrais associer dans une seule commande python le lancement simultanément de la commande pour faire démarrer le moteur PAP et la raspicam.
J'arrive à maitriser relativement les 2 séparément mais pas ensemble.

En faite c'est pour faire un time lapse sur légo dolly (je trouve ce nom drôle car même si tout le monde s'en fou c’était le nom de ma chienne avant). :roll:
Je pense qu'il y 'a des import en trop aussi...
En faite ça prend une photo (pas dans cette exemple car t = 22500) mais ensuite le moteur se met en marche...

Doit pas manquer grand chose. Une sorte de loop ? (loupe ?)

Merci à vous,

Code : Tout sélectionner

#!/usr/bin/env python

# Import required libraries
import sys
import time
import RPi.GPIO as GPIO
import os
import subprocess
import cgi
import serial
from subprocess import call

# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)

# Define GPIO signals to use
# Physical pins 11,15,16,18
# GPIO17,GPIO22,GPIO23,GPIO24
StepPins = [17,22,23,24]

# Set all pins as output
for pin in StepPins:
  print "Setup pins"
  GPIO.setup(pin,GPIO.OUT)
  GPIO.output(pin, False)

# Run a WHILE Loop of infinitely
while True:

        call("raspistill -o myimage_%04d.jpg -tl 3000 -t 22500 -w 800 -h 600", shell=True)

# Define advanced sequence
# as shown in manufacturers datasheet
Seq = [[1,0,0,0],
       [1,1,0,0],
       [0,1,0,0],
       [0,1,1,0],
       [0,0,1,0],
       [0,0,1,1],
       [0,0,0,1],
       [1,0,0,1]]

StepCount = len(Seq)-1
StepDir = 2 # Set to 1 or 2 for clockwise
            # Set to -1 or -2 for anti-clockwise

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 08:52
par Manfraid
Salut,

pourrais tu mettre ton code dans les balises "code" car sans l'indentation correcte cela est très difficile de lire ton code

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 10:19
par Eddie
Salut Manfraid

Oui tu as raison. Voilà qui est fait. Désolé j'étais dans mes pensées...
Il me prend la tête ce code...
Manfraid a écrit :Salut,

pourrais tu mettre ton code dans les balises "code" car sans l'indentation correcte cela est très difficile de lire ton code

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 10:51
par Manfraid
Merci, c'est déjà beaucoup plus lisible

par contre ton code pour le moment ne sait faire qu'une prise de photo en continue, il n'y as pas de gestion du moteur

as-tu déjà une idée sur la vitesse de rotation de ton moteur pas/seconde par exemple

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:01
par Eddie
Sisi il fait bien tourner le moteur si j’enlève la ligne raspistill
Mais me demande pas trop comment ça marche...
Je voudrais biens que les 2 se lance en même temps...

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:04
par Manfraid
donc il doit manquer un bout de code

car a la lecture du ode je ne vois que la mise a zéro des output et rien d'autre

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:09
par Eddie
Je sais pas mais pourtant je te jure que mon moteur tourne comme y faut. Tout doucement... et il se coupe avec CTRL C.
C'est les "seq" qui le font tourner non ?

Par contre une idée pour Raspistill ?

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:19
par Manfraid
en fait c'est normal tu fait une boucle infinie sur la prise de photo, donc c'est celle ci qui est prioritaire

le mieux je pense est que déjà il faudrait mieux ordonné le programme, par exemple une fonction qui fait bouger le moteur et une autre qui fait la capture d'image.

ensuite tu appelles la fonction pour faire déplacer le moteur, une fois la position atteinte tu prend la photo et tu recommence
par exemple (je ne met pas le code des fonctions je n'ai pas trop le temps de chercher

Code : Tout sélectionner

def moveto(position):
    #le code pour déplacer le moteur

def capture():
   # le code pour la prise de photo

# liste des positons pour les photos
position = [0,100,200,300,400]
# et pour finir l'appel des fonction
for pos in position:
    moveto(pos)
    capture()


en espérant que le principe que je te donne puisse t'aider

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:24
par Eddie
ok c'est cool merci.

Je vais regarder ça... Merci pour la piste.

Re: Coordoner moteur pas à pas et raspicam

Posté : dim. 12 avr. 2015 11:25
par Manfraid
Mais de rien,

sinon déjà essaye de faire une recherche sur le net pour trouver une class python qui gère un moteur pas à pas( pas la peine de réinventer la roue lol)