Différences entre versions de « Rasp-Hack-L293-Logiciel »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
  
 
{{bloc-etroit
 
{{bloc-etroit
  |text = Depuis que nous devons contrôler des broches (connectées aux sorties 4 et 17 du GPIO) nous devons utiliser la bibliothèque GPIO. Pour les détails, voyez la leçon 4.
+
  |text = Puisque nous avons besoin de des broches (connectées aux sorties 4 et 17 du GPIO), nous devons donc utiliser la bibliothèque GPIO. Pour les détails, sur ce point, [[Rasp-Hack-GPIO|voyez notre tutoriel sur GPIO]].
  
Il existe beaucoup de façons pour obtenir le sketch dont le listing suit sur votre Raspberry Pi. Peut-être est-il plus aisé de se connecter au Pi en utilisant SSH (Secure Shell) (voir leçon 6) ouvrez un éditeur à l'aide de la commande suivante :
+
Il existe beaucoup de moyen pour placer le sketch (ci-dessous) sur votre Raspberry Pi. Le plus simple sera peut-être de vous connecter au Pi en utilisant SSH (Secure Shell, [[PI-SSH|voir notre tutoriel]]) et d'ouvrir un éditeur à l'aide de la commande suivante :
<nowiki>
 
nano motor.py </nowiki>
 
  
et introduisez le code suivant, avant la sauvegarde du fichier avec CTRL-x.
 
 
}}
 
}}
  
[[Fichier:Rasp-Hack-L293-software-1.png]]
+
<nowiki>nano motor.py</nowiki>
 +
 
 +
et en introduisant le code suivant, avant la sauvegarde du fichier avec CTRL-x.
 +
 
 +
 
 +
{{ADFImage|Rasp-Hack-L293-software-1.png|450px}}
  
 
Voici le code :
 
Voici le code :
  
<nowiki>
+
<nowiki>#!/usr/bin/env python
 +
# -*- coding: utf8 -*-
 +
 
 
import RPi.GPIO as io
 
import RPi.GPIO as io
 
io.setmode(io.BCM)
 
io.setmode(io.BCM)
Ligne 31 : Ligne 35 :
 
         f.close()     
 
         f.close()     
 
     except:         
 
     except:         
         print("Error writing to: " + property + " value: " + value)  
+
         print("Erreur durant l ecriture de: " + property + " valeur: " + value)  
  
 
set("delayed", "0")
 
set("delayed", "0")
Ligne 38 : Ligne 42 :
 
set("active", "1")
 
set("active", "1")
  
 +
# clockwise signifie "sens horlogique" donc marche avant
 
def clockwise():
 
def clockwise():
 
     io.output(in1_pin, True)
 
     io.output(in1_pin, True)
 
     io.output(in2_pin, False)
 
     io.output(in2_pin, False)
  
 +
# clockwise signifie "sens anti-horlogique" donc marche arriere
 
def counter_clockwise():
 
def counter_clockwise():
 
     io.output(in1_pin, False)
 
     io.output(in1_pin, False)
 
     io.output(in2_pin, True)
 
     io.output(in2_pin, True)
  
 +
# passer en marche avant
 
clockwise()
 
clockwise()
  
 
while True:
 
while True:
     cmd = raw_input("Command, f/r 0..9, E.g. f5 :")
+
    # demander une saisie de commande a l'utilisateur
 +
     cmd = raw_input("Commande, f/r 0..9, exemple f5 :")
 +
 
 +
    # la direction est f pour forward (avant) et r pour rearward (arrière)
 
     direction = cmd[0]
 
     direction = cmd[0]
 
     if direction == "f":
 
     if direction == "f":
Ligne 55 : Ligne 65 :
 
     else:
 
     else:
 
         counter_clockwise()
 
         counter_clockwise()
 +
 +
    # la vitesse
 
     speed = int(cmd[1]) * 11
 
     speed = int(cmd[1]) * 11
 
     set("duty", str(speed))
 
     set("duty", str(speed))
 
</nowiki>
 
</nowiki>
  
Dans l'entête du programme en Python sont définies les broches en sortie.
+
Les broches de sortie sont définies dans l'entête du programme Python.
La fonction («set») que nous avons utilisé dans la leçon 8, nous permet d'écrire dans le module kernel PWM. Cette fonction définit les paramètres pour PWM.
+
La fonction '''set''' nous permet d'écrire la valeur d'une propriété dans le module kernel PWM (pour rappel les propriétés sont des fichiers spéciaux dans lesquels il faut écrire une des valeurs attendue).  
 +
 
 +
La fonctino '''set''' est utilisé pour définir les paramètres PWM.
 +
 
 +
Il existe deux autres fonctions, “clockwise” et “counter_clockwise”, elles contrôlent la direction du moteur en inversant l'état des deux broches d'entrée IN1 et IN2 du circuit intégré L293D.
  
Il existe deux autres fonctions personnelles, “clockwise” et “counter_clockwise”, elles contrôlent la direction du moteur en changeant les deux broches d'entrée.
+
Valeurs pour IN1 et IN2:
 +
* Si les deux broches de contrôle sont HIGH, ou LOW, le moteur reste à l'arrêt.
 +
* Si IN1 est HIGH et IN2 est LOW il tournera dans un sens.
 +
* Mais Si IN1 est LOW et IN2 est HIGH (donc l'inverse du cas précédent) alors le sens de rotation du moteur est inversé.
  
Si les deux broches de contrôle sont HIGH, ou LOW, le moteur est à l'arrêt. Mais si IN1 is HIGH et IN2 LOW il tournera dans une direction, mais dans le sens inverse si les valeurs de IN1 et IN2 sont inversées.
+
La boucle principale du programme attend vos commandes sous la forme d'une lettre (“f” or “r”) suivit d'un d'un chiffre entre 0 et 9.
  
La boucle principale du programme attend vos commandes sous la forme d'une lettre (“f” or “r”) et un chiffre entre 0 et 9 inclus. La lettre indique la direction du moteur et le chiffre sa vitesse, nous multiplions ce chiffre par 11 pour obtenir une valeur située entre 0 et 99 inclus comme demandé par la bibliothèque PWM.
+
La lettre indique la direction du moteur (f=forward=avant et r=rearward=arrière) et le chiffre indique sa vitesse. Nous multiplions le chiffre par 11 pour obtenir une valeur située entre 0 et 99 (inclus) comme attendu par le module PWM.
  
 
{{Rasp-Hack-L293-TRAILER}}
 
{{Rasp-Hack-L293-TRAILER}}

Version actuelle datée du 1 mars 2016 à 10:37

Puisque nous avons besoin de des broches (connectées aux sorties 4 et 17 du GPIO), nous devons donc utiliser la bibliothèque GPIO. Pour les détails, sur ce point, voyez notre tutoriel sur GPIO.

Il existe beaucoup de moyen pour placer le sketch (ci-dessous) sur votre Raspberry Pi. Le plus simple sera peut-être de vous connecter au Pi en utilisant SSH (Secure Shell, voir notre tutoriel) et d'ouvrir un éditeur à l'aide de la commande suivante :

nano motor.py

et en introduisant le code suivant, avant la sauvegarde du fichier avec CTRL-x.


Rasp-Hack-L293-software-1.png
Crédit: AdaFruit Industries www.adafruit.com

Voici le code :

#!/usr/bin/env python
# -*- coding: utf8 -*-

import RPi.GPIO as io
io.setmode(io.BCM)

in1_pin = 4
in2_pin = 17

io.setup(in1_pin, io.OUT)
io.setup(in2_pin, io.OUT)

def set(property, value):
    try:        
        f = open("/sys/class/rpi-pwm/pwm0/" + property, 'w')
        f.write(value)
        f.close()     
    except:        
        print("Erreur durant l ecriture de: " + property + " valeur: " + value) 

set("delayed", "0")
set("mode", "pwm")
set("frequency", "500")
set("active", "1")

# clockwise signifie "sens horlogique" donc marche avant
def clockwise():
    io.output(in1_pin, True)
    io.output(in2_pin, False)

# clockwise signifie "sens anti-horlogique" donc marche arriere
def counter_clockwise():
    io.output(in1_pin, False)
    io.output(in2_pin, True)

# passer en marche avant
clockwise()

while True:
    # demander une saisie de commande a l'utilisateur
    cmd = raw_input("Commande, f/r 0..9, exemple f5 :")

    # la direction est f pour forward (avant) et r pour rearward (arrière)
    direction = cmd[0]
    if direction == "f":
        clockwise()
    else:
         counter_clockwise()

    # la vitesse 
    speed = int(cmd[1]) * 11
    set("duty", str(speed))

Les broches de sortie sont définies dans l'entête du programme Python. La fonction set nous permet d'écrire la valeur d'une propriété dans le module kernel PWM (pour rappel les propriétés sont des fichiers spéciaux dans lesquels il faut écrire une des valeurs attendue).

La fonctino set est utilisé pour définir les paramètres PWM.

Il existe deux autres fonctions, “clockwise” et “counter_clockwise”, elles contrôlent la direction du moteur en inversant l'état des deux broches d'entrée IN1 et IN2 du circuit intégré L293D.

Valeurs pour IN1 et IN2:

  • Si les deux broches de contrôle sont HIGH, ou LOW, le moteur reste à l'arrêt.
  • Si IN1 est HIGH et IN2 est LOW il tournera dans un sens.
  • Mais Si IN1 est LOW et IN2 est HIGH (donc l'inverse du cas précédent) alors le sens de rotation du moteur est inversé.

La boucle principale du programme attend vos commandes sous la forme d'une lettre (“f” or “r”) suivit d'un d'un chiffre entre 0 et 9.

La lettre indique la direction du moteur (f=forward=avant et r=rearward=arrière) et le chiffre indique sa vitesse. Nous multiplions le chiffre par 11 pour obtenir une valeur située entre 0 et 99 (inclus) comme attendu par le module PWM.


Source: Adafruit's Raspberry Pi Lesson 9. Controlling a DC Motor

Réalisé avec l'aide de Mr Carette J. à qui nous remettons tous nos remerciements.

Tutoriel créé par Simon Monk pour AdaFruit Industries. Tutorial created by Simon Monk for AdaFruit Industries

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.