First commit
This commit is contained in:
28
IUT/Saé/robot arduino/.vscode/tasks.json
vendored
Normal file
28
IUT/Saé/robot arduino/.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"type": "cppbuild",
|
||||
"label": "C/C++: gcc.exe build active file",
|
||||
"command": "C:\\msys64\\ucrt64\\bin\\gcc.exe",
|
||||
"args": [
|
||||
"-fdiagnostics-color=always",
|
||||
"-g",
|
||||
"${file}",
|
||||
"-o",
|
||||
"${fileDirname}\\${fileBasenameNoExtension}.exe"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${fileDirname}"
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$gcc"
|
||||
],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"detail": "Task generated by Debugger."
|
||||
}
|
||||
],
|
||||
"version": "2.0.0"
|
||||
}
|
||||
12
IUT/Saé/robot arduino/capteur/capteur.ino/capteur.ino.ino
Normal file
12
IUT/Saé/robot arduino/capteur/capteur.ino/capteur.ino.ino
Normal file
@@ -0,0 +1,12 @@
|
||||
#define trigger_pin 9
|
||||
#define echo_pin 8
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
|
||||
}
|
||||
131
IUT/Saé/robot arduino/ino/main/main.ino
Normal file
131
IUT/Saé/robot arduino/ino/main/main.ino
Normal file
@@ -0,0 +1,131 @@
|
||||
// ; Pins capteurs de couleur
|
||||
#define DROITE A0
|
||||
#define GAUCHE A1
|
||||
|
||||
|
||||
|
||||
|
||||
// Pins carte de commande (moteur n°1)
|
||||
#define PWM_GAUCHE 5
|
||||
#define SENS_GAUCHE 4
|
||||
// (moteur n°2)
|
||||
#define PWM_DROIT 6
|
||||
#define SENS_DROIT 7
|
||||
|
||||
#define SIZE 60
|
||||
|
||||
unsigned int droite;
|
||||
unsigned int gauche;
|
||||
unsigned int cpt;
|
||||
|
||||
unsigned int queue_droite[SIZE];
|
||||
unsigned int queue_gauche[SIZE];
|
||||
|
||||
unsigned int c= 0;
|
||||
|
||||
void setup() {
|
||||
|
||||
|
||||
cpt = 0;
|
||||
|
||||
|
||||
// Capteur
|
||||
pinMode(GAUCHE, INPUT);
|
||||
pinMode(DROITE, INPUT);
|
||||
|
||||
|
||||
// Carte Commande
|
||||
pinMode(PWM_GAUCHE, OUTPUT);
|
||||
pinMode(SENS_GAUCHE, OUTPUT);
|
||||
pinMode(PWM_DROIT, OUTPUT);
|
||||
pinMode(SENS_DROIT, OUTPUT);
|
||||
|
||||
|
||||
// Affichage série
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
c++;
|
||||
// Lecture capteur de couleur
|
||||
gauche = analogRead(GAUCHE);
|
||||
droite = analogRead(DROITE);
|
||||
|
||||
/* Zone noires, avancer
|
||||
* Le robot est sur la ligne
|
||||
*/
|
||||
if(gauche > 700 && droite > 700)
|
||||
{
|
||||
vitesseGauche(180);
|
||||
vitesseDroit(180);
|
||||
}
|
||||
|
||||
|
||||
/* Capteur gauche --> blanc : tourner à droite
|
||||
* Le robot est à gauche de la ligne
|
||||
*/
|
||||
if(gauche < 200 && droite > 700)
|
||||
{
|
||||
vitesseGauche(150*0.9);
|
||||
vitesseDroit(-70);
|
||||
}
|
||||
|
||||
|
||||
/* Capteur droit --> blanc : tourner à gauche
|
||||
* Le robot est à droite de la ligne
|
||||
*/
|
||||
if(gauche > 700 && droite < 200)
|
||||
{
|
||||
vitesseGauche(-70);
|
||||
vitesseDroit(150);
|
||||
}
|
||||
|
||||
|
||||
/* Bleu : demi tour et arret=*/
|
||||
if(gauche > 380 && gauche < 570 && droite > 380 && droite < 570)
|
||||
{
|
||||
if (cpt == 0) {
|
||||
demiTour();
|
||||
cpt = 1;
|
||||
} else if (cpt == 1) {
|
||||
vitesseDroit(0);
|
||||
vitesseGauche(0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Controle du sens et de la vitesse du moteur Gauche
|
||||
void vitesseGauche(int vitesse) {
|
||||
if (vitesse >= 0) {
|
||||
digitalWrite(SENS_GAUCHE, HIGH);
|
||||
analogWrite(PWM_GAUCHE, vitesse);
|
||||
} else {
|
||||
digitalWrite(SENS_GAUCHE, LOW);
|
||||
analogWrite(PWM_GAUCHE, -vitesse);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Controle du sens et de la vitesse du moteur Droit
|
||||
void vitesseDroit(int vitesse) {
|
||||
if (vitesse >= 0) {
|
||||
digitalWrite(SENS_DROIT, HIGH);
|
||||
analogWrite(PWM_DROIT, vitesse);
|
||||
} else {
|
||||
digitalWrite(SENS_DROIT, LOW);
|
||||
analogWrite(PWM_DROIT, -vitesse);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void demiTour() {
|
||||
while(gauche < 700) {
|
||||
gauche = analogRead(GAUCHE);
|
||||
vitesseDroit(180);
|
||||
vitesseGauche(-180);
|
||||
}
|
||||
}
|
||||
|
||||
19
IUT/Saé/robot arduino/main.c
Normal file
19
IUT/Saé/robot arduino/main.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "stdio.h"
|
||||
#include "main.h"
|
||||
|
||||
|
||||
unsigned int queue_droite[SIZE];
|
||||
unsigned int queue_gauche[SIZE];
|
||||
|
||||
int main() {
|
||||
|
||||
|
||||
for (unsigned int i = 0; i<60; i++) {
|
||||
push(i, queue_droite);
|
||||
printf("%d, %d\n", queue_droite[0], queue_droite[29]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
12
IUT/Saé/robot arduino/main.h
Normal file
12
IUT/Saé/robot arduino/main.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#define SIZE 30
|
||||
|
||||
void push(int value, unsigned int *queue) {
|
||||
|
||||
// décaler les valeurs vers la droite
|
||||
for(int i = SIZE - 1; i > 0; i--) {
|
||||
queue[i] = queue[i - 1];
|
||||
}
|
||||
|
||||
// mettre la nouvelle valeur au début
|
||||
queue[0] = value;
|
||||
}
|
||||
Reference in New Issue
Block a user