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 IDELe 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 ArduinoIDEStarter 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