Modifications

Sauter à la navigation Sauter à la recherche
3 161 octets ajoutés ,  1 mars 2016 à 10:37
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{Rasp-Hack-L293-NAV}}
 
{{Rasp-Hack-L293-NAV}}
 +
 +
{{bloc-etroit
 +
|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 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 en introduisant le code suivant, avant la sauvegarde du fichier avec CTRL-x.
 +
 +
 +
{{ADFImage|Rasp-Hack-L293-software-1.png|450px}}
 +
 +
Voici le code :
 +
 +
<nowiki>#!/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))
 +
</nowiki>
 +
 +
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.
    
{{Rasp-Hack-L293-TRAILER}}
 
{{Rasp-Hack-L293-TRAILER}}
29 917

modifications

Menu de navigation