CARIA.2.0

Repo initial CARIA :
MAJ Interface Bootle amélioré
- Optimisation de la structure
- amélioration des fonctionnalités
- debug
. . .
This commit is contained in:
ccunatbrule
2024-05-28 15:47:08 +02:00
parent 6eb3071707
commit 9ae7f229e7
33 changed files with 1553 additions and 0 deletions

View File

@@ -0,0 +1,119 @@
import RPi.GPIO as GPIO
import time
import os
class AlphaBot(object):
def __init__(self, in1=12, in2=13, ena=6, in3=20, in4=21, enb=26):
self.IN1 = in1
self.IN2 = in2
self.IN3 = in3
self.IN4 = in4
self.ENA = ena
self.ENB = enb
# Définition des broches module d'évitement d'obstacles
DAOUT_PIN = 19
AOUT_PIN = 16
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(self.IN1, GPIO.OUT)
GPIO.setup(self.IN2, GPIO.OUT)
GPIO.setup(self.IN3, GPIO.OUT)
GPIO.setup(self.IN4, GPIO.OUT)
GPIO.setup(self.ENA, GPIO.OUT)
GPIO.setup(self.ENB, GPIO.OUT)
self.PWMA = GPIO.PWM(self.ENA, 500) # Utilisation d'une fréquence de 500 Hz pour le PWM
self.PWMB = GPIO.PWM(self.ENB, 500)
self.PWMA.start(0) # Démarre avec un rapport cyclique de 0 (moteurs arrêtés)
self.PWMB.start(0)
def stop(self):
GPIO.output(self.IN1, GPIO.LOW)
GPIO.output(self.IN2, GPIO.LOW)
GPIO.output(self.IN3, GPIO.LOW)
GPIO.output(self.IN4, GPIO.LOW)
self.PWMA.ChangeDutyCycle(0)
self.PWMB.ChangeDutyCycle(0)
print("Le robot est arreté")
def forward(self, speed):
GPIO.output(self.IN1, GPIO.HIGH)
GPIO.output(self.IN2, GPIO.LOW)
GPIO.output(self.IN3, GPIO.HIGH)
GPIO.output(self.IN4, GPIO.LOW)
self.PWMA.ChangeDutyCycle(speed)
self.PWMB.ChangeDutyCycle(speed)
print("Le robot avance avec une vitesse de", speed)
def backward(self, speed):
GPIO.output(self.IN1, GPIO.LOW)
GPIO.output(self.IN2, GPIO.HIGH)
GPIO.output(self.IN3, GPIO.LOW)
GPIO.output(self.IN4, GPIO.HIGH)
self.PWMA.ChangeDutyCycle(speed)
self.PWMB.ChangeDutyCycle(speed)
print("Le robot recul avec une vitesse de", speed)
def left(self, speed):
GPIO.output(self.IN1, GPIO.HIGH)
GPIO.output(self.IN2, GPIO.LOW)
GPIO.output(self.IN3, GPIO.LOW)
GPIO.output(self.IN4, GPIO.LOW)
self.PWMA.ChangeDutyCycle(speed)
print("Le robot tourne à guauche avec une vitesse de", speed)
def right(self, speed):
GPIO.output(self.IN1, GPIO.LOW)
GPIO.output(self.IN2, GPIO.LOW)
GPIO.output(self.IN3, GPIO.HIGH)
GPIO.output(self.IN4, GPIO.LOW)
self.PWMB.ChangeDutyCycle(speed)
print("Le robot tourne à droite avec une vitesse de", speed)
def setPWMA(self, value):
"""
Ajuste la vitesse du moteur A (gauche).
:param value: La valeur du rapport cyclique en pourcentage (0-100).
"""
self.PWMA.ChangeDutyCycle(value)
def setPWMB(self, value):
"""
Ajuste la vitesse du moteur B (droite).
:param value: La valeur du rapport cyclique en pourcentage (0-100).
"""
self.PWMB.ChangeDutyCycle(value)
def setMotor(self, left, right):
"""
Contrôle individuellement les vitesses des moteurs gauche et droit.
:param left: La vitesse du moteur gauche en pourcentage (0-100).
:param right: La vitesse du moteur droit en pourcentage (0-100).
"""
self.PWMA.ChangeDutyCycle(left)
self.PWMB.ChangeDutyCycle(right)
def objetrack_ir(self):
os.system('sudo python3 ~/AppControl/Infrared_Tracking_Objects.py')
def linetrack_ir(self):
os.system('sudo python3 ~/AppControl/Infrared_Line_Tracking.py')
def objetavoid_ir(self):
os.system('sudo python3 ~/AppControl/Infrared_Obstacle_Avoidance.py')
def obstacleavoid_ultrason(self):
os.system('sudo python3 ~/AppControl/Ultrasonic_Obstacle_Avoidance.py')
def move_ultrason(self):
os.system('sudo python3 ~/AppControl/Ultrasonic_Ranging.py')
def control_ir(self):
os.system('sudo python3 ~/AppControl/Infrared_Remote_Control.py')
def face_ia(self):
os.system('sudo python3 ~/AppControl/visage_camera_raspberry.py')
def line_ia(self):
os.system('sudo python3 ~/AppControl/visage_camera_v2_raspberry.py')