Rasp-Hack-L293-Logiciel

De MCHobby - Wiki
Révision datée du 1 mars 2016 à 10:37 par Admin (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

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.