master
Gnieark 5 years ago
parent 446b0eb8a9
commit d6894e4575

@ -0,0 +1,6 @@
{
"board": "arduino:avr:nano",
"configuration": "cpu=atmega328old",
"sketch": "lineFollowerBot.ino",
"port": "/dev/ttyUSB0"
}

@ -0,0 +1,19 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"/home/gnieark/arduino-1.8.8/tools/**",
"/home/gnieark/arduino-1.8.8/hardware/arduino/avr/**"
],
"forcedInclude": [
"/home/gnieark/arduino-1.8.8/hardware/arduino/avr/cores/arduino/Arduino.h"
],
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}

@ -0,0 +1,135 @@
int ledDebugDroite = 5;
int ledDebugGauche = 4;
int moteurGauche = 2;
int moteurDroite = 3;
int capteurGauche = A0;
int capteurDroite = A1;
int pinButton = 12;
int seuil = 200;
int seuilGauche = 200;
int seuilDroite = 200;
void setup()
{
pinMode(ledDebugDroite, OUTPUT);
pinMode(ledDebugGauche, OUTPUT);
pinMode(moteurGauche, OUTPUT);
pinMode(moteurDroite, OUTPUT);
pinMode(pinButton, INPUT);
}
void setSeuil()
{
stop();
//on attend que le bouton soit relaché
int a=1;
while( a==1){
a = digitalRead(pinButton);
delay(1);
}
int minGauche;
int minDroite;
minGauche = analogRead(capteurGauche);
minDroite = analogRead(capteurDroite);
digitalWrite(ledDebugDroite,LOW);
digitalWrite(ledDebugGauche,LOW);
while (a ==0){
delay(1);
a = digitalRead(pinButton);
}
//Nouvel appui sur le bouton
while(a==1){
delay(1);
a = digitalRead(pinButton);
}
int maxGauche;
int maxDroite;
maxGauche = analogRead(capteurGauche);
maxDroite = analogRead(capteurDroite);
seuilGauche = (minGauche + maxGauche) / 2;
seuilDroite = (minDroite + maxDroite) / 2;
for(int b = 0; b < 5; b++){
digitalWrite(ledDebugDroite,HIGH);
digitalWrite(ledDebugGauche,HIGH);
delay(200);
digitalWrite(ledDebugDroite,LOW);
digitalWrite(ledDebugGauche,LOW);
delay(200);
}
}
void stop(){
digitalWrite(moteurGauche,LOW);
digitalWrite(moteurDroite,LOW);
}
void tourneDroite(){
digitalWrite(moteurGauche,HIGH);
digitalWrite(moteurDroite,LOW);
}
void tourneGauche(){
digitalWrite(moteurGauche,LOW);
digitalWrite(moteurDroite,HIGH);
}
void avance(){
digitalWrite(moteurGauche,HIGH);
digitalWrite(moteurDroite,HIGH);
}
void loop()
{
int a;
a = digitalRead(pinButton);
if(a == 1){
//le buton a été appuyé
setSeuil();
}
int valGauche;
int valDroite;
valGauche = analogRead(capteurGauche);
valDroite = analogRead(capteurDroite);
if(valGauche < seuil)
digitalWrite(ledDebugGauche,HIGH);
else
digitalWrite(ledDebugGauche,LOW);
if(valDroite < seuil)
digitalWrite(ledDebugDroite,HIGH);
else
digitalWrite(ledDebugDroite,LOW);
if((valGauche < seuilGauche) && (valDroite < seuilDroite))
avance();
if((valGauche < seuilGauche) && (valDroite > seuilDroite)){
tourneDroite();
while(valDroite > seuilDroite){
valDroite = analogRead(capteurDroite);
delay(1);
}
}
if((valGauche > seuilGauche) && (valDroite < seuilDroite)){
tourneGauche();
while(valGauche > seuilGauche){
valGauche = analogRead(capteurGauche);
delay(1);
}
}
if((valGauche > seuilGauche) && (valDroite > seuilDroite))
stop();
}
Loading…
Cancel
Save