diff --git a/lineFollowerBot/.vscode/arduino.json b/lineFollowerBot/.vscode/arduino.json new file mode 100644 index 0000000..8103a56 --- /dev/null +++ b/lineFollowerBot/.vscode/arduino.json @@ -0,0 +1,6 @@ +{ + "board": "arduino:avr:nano", + "configuration": "cpu=atmega328old", + "sketch": "lineFollowerBot.ino", + "port": "/dev/ttyUSB0" +} \ No newline at end of file diff --git a/lineFollowerBot/.vscode/c_cpp_properties.json b/lineFollowerBot/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..7543de9 --- /dev/null +++ b/lineFollowerBot/.vscode/c_cpp_properties.json @@ -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 +} \ No newline at end of file diff --git a/lineFollowerBot/lineFollowerBot.ino b/lineFollowerBot/lineFollowerBot.ino new file mode 100644 index 0000000..465bfaa --- /dev/null +++ b/lineFollowerBot/lineFollowerBot.ino @@ -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(); +}