Programmation du robot Raspberry Pi: faire suivre les lignes (partie 2)

importer RPi.GPIO comme GPIO

importer temps

de l293d importer L293D

classe Robot():

def __init__(soi, motor_left_pin1=17, motor_left_pin2=27, motor_right_pin1=23, motor_right_pin2=24,

line_follow_pin_left=19, line_follow_pin_right=6 ):

GPIO.mode réglages(GPIO.BCM)

GPIO.setwarnings(Faux)

# modules init

soi.moteur = L293D(motor_left_pin1, motor_left_pin2, motor_right_pin1, motor_right_pin2)

soi.line_follow_pin_left = line_follow_pin_left

soi.line_follow_pin_right = line_follow_pin_right

GPIO.installer(soi.line_follow_pin_left, GPIO.DANS)

GPIO.installer(soi.line_follow_pin_right, GPIO.DANS)

def lineFollowModeOn(soi):

status_left = Faux

status_right = Faux

tandis que Vrai:

status_left = booléen(GPIO.contribution(soi.line_follow_pin_left)) # Faux: pas en ligne / capteur trop éloigné du bas

status_right = booléen(GPIO.contribution(soi.line_follow_pin_right)) # True: en ligne

si status_left et status_right:

# one the line, follow straight on

soi.moteur.vers l’avant()

elif status_left:

# ligne est à gauche, déplacez-vous à gauche (moteur à droite)

soi.moteur.avantDroite()

elif status_right:

# ligne est à droite, déplacez-vous à droite (moteur à gauche)

soi.moteur.avantGauche()

autre:

# se sont égarés, ligne de recherche. d’abord reculer de quelques cm

soi.moteur.en arrière()

temps.dormir(7,5/soi.moteur.DIST_PER_SEC)

soi.moteur.Arrêtez()

# faire pivoter de x degrés pour rechercher la ligne

degrés_to_search = 45,0

soi.moteur.avantDroite()

s = GPIO.wait_for_edge(soi.line_follow_pin_left, GPIO.EN HAUSSE, temps libre=int(1000 * soi.moteur.SEC_PER_TURN / 360,0 * degrés_to_search))

soi.moteur.Arrêtez()

si s est ne pas Aucun:

# ligne trouvée, continuer

continuer

autre:

# rien trouvé, revenir à la position d’origine

soi.moteur.arrièreDroite()

temps.dormir(soi.moteur.SEC_PER_TURN / 360,0 * degrés_to_search)

# recherche de l’autre côté

soi.moteur.avantGauche()

s = GPIO.wait_for_edge(soi.line_follow_pin_right, GPIO.EN HAUSSE, temps libre=int(1000 * soi.moteur.SEC_PER_TURN / 360,0 * degrés_to_search))

soi.moteur.Arrêtez()

si s est ne pas Aucun:

# ligne trouvée, continuer

impression(“fonds”)

continuer

autre:

# ligne introuvable, revenir à la position d’origine, arrêter

soi.moteur.arrièreGauche()

temps.dormir(soi.moteur.SEC_PER_TURN / 360,0 * degrés_to_search)

soi.moteur.Arrêtez()

Pause

temps.dormir(0,001)

  • ELEGOO Mega 2560 R3 Kit de Démarrage Ultime Le Plus Complet avec Manuel d'Utilisation Français pour Débutants et Professionnels DIY Compatible avec Arduino IDE
    Le moins cher et le plus complet de l’ UNO R3 Kit pour les débutants. Guide d’utilisation Français en PDF gratuit incluant l’introduction et le code exigé, cequi vous permet d’économiser le temps. Avec la nouvelle version de la carte de développement de l’UNO R3 + Câble USB et tous les composants élémentaires. 100% Compatible avec UNO R3, MEGA2560, NANO AvecÉcran LCD1602 + Servo(SG90) + HC-SR501 + Module de capteur à ultrasons + Carte de prototypage + Module d'alimentation de la Carte de prototypage
  • Quimat Carte Starter Kit de Demarrage Super ave Guide d'Utilisation Français pour Débutants et Professionnels DIY Compatible avec ArduinoIDE
    Starter Kit a 44 composants différents inclus CD avec des tutoriels (instructions du projet et code source), spécialement pour les débutants qui sont intéressés. La nouvelle version de la carte de développement Câble USB et tous les composants élémentaires, la carte d'extension, la carte d'extension Prototype, la batterie 9V DC, le module HC-SR04, l'écran LCD 1602 et l'embase à broche (à souder par vous-même) sont inclus. Tutoriel détaillé, compris l'introduction du projet peut être fourni gratuitement. 100% Compatible avec ArduinoIDEnano Le moins cher et le plus complet de l’ ArduinoIDE R3 Kit pour les débutants.c

Articles similaires

Bouton retour en haut de la page
Fermer