Ligne 1 : |
Ligne 1 : |
| {{Rasp-Hack-L293-NAV}} | | {{Rasp-Hack-L293-NAV}} |
| + | |
| + | {{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. |
| + | |
| + | 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 : |
| + | <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]] |
| + | |
| + | Voici le code : |
| + | |
| + | <nowiki> |
| + | 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("Error writing to: " + property + " value: " + value) |
| + | |
| + | set("delayed", "0") |
| + | set("mode", "pwm") |
| + | set("frequency", "500") |
| + | set("active", "1") |
| + | |
| + | def clockwise(): |
| + | io.output(in1_pin, True) |
| + | io.output(in2_pin, False) |
| + | |
| + | def counter_clockwise(): |
| + | io.output(in1_pin, False) |
| + | io.output(in2_pin, True) |
| + | |
| + | clockwise() |
| + | |
| + | while True: |
| + | cmd = raw_input("Command, f/r 0..9, E.g. f5 :") |
| + | direction = cmd[0] |
| + | if direction == "f": |
| + | clockwise() |
| + | else: |
| + | counter_clockwise() |
| + | speed = int(cmd[1]) * 11 |
| + | set("duty", str(speed)) |
| + | </nowiki> |
| + | |
| + | Dans l'entête du programme en Python sont définies les broches en sortie. |
| + | 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. |
| + | |
| + | 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. |
| + | |
| + | 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”) 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. |
| | | |
| {{Rasp-Hack-L293-TRAILER}} | | {{Rasp-Hack-L293-TRAILER}} |