projet crepp_git/crepp-projects/raspi-bot · branche main
Bluetooth.ino Voir sur GitLab
#include "UART.h"
#include "HBRIDGE.h"
#include "LED.h"

#include <Servo.h>

#define SENS_1 0
#define SENS_2 1

const byte enable_moteur_droite = 5; //Broche PWM
const byte enable_moteur_gauche = 6; //Broche PWM
const byte sens_moteur_droite = 7; 	
const byte sens_moteur_gauche = 8;

const int SHARP = A0;


int RX_HC = 12;//12
int TX_HC = 10;//10

int position_servo_180 = 90;
int position_servo_120 = 90;

int distance = 0;
int nb_lecture_sharp = 10;


UART hc_05(RX_HC,TX_HC);
HBRIDGE robot(enable_moteur_gauche, sens_moteur_gauche, enable_moteur_droite, sens_moteur_droite);
LED led_verte(9);
LED led_jaune(3);
LED led_defaut(13);

Servo servo_rpi_180;
Servo servo_rpi_120;
//String message_pi;
String message_hc;

byte puissance_moteur = 100;

void setup() {

//robot.debug();
Serial.begin(9600);
hc_05.begin(9600);
led_defaut.on();
led_verte.on(1000);
led_jaune.on();
servo_rpi_180.attach(3);
servo_rpi_120.attach(4);


servo_180(position_servo_120,90,40);
servo_120(position_servo_120,90,40);
}

void loop() {
  
message_hc = hc_05.read();
//message_pi = rpi.read();

 
if(message_hc!="") { 
   //Serial.println(message_hc);
   
   if(message_hc=="a")      {robot.motor_on(SENS_1,puissance_moteur, SENS_1, puissance_moteur);led_jaune.off();}
   else if(message_hc=="r") {robot.motor_on(SENS_2,puissance_moteur, SENS_2, puissance_moteur);
                             led_jaune.on();}
   else if(message_hc=="d") {robot.motor_on(SENS_1,puissance_moteur, SENS_2, puissance_moteur);led_jaune.off();}
   else if(message_hc=="g") {robot.motor_on(SENS_2,puissance_moteur, SENS_1, puissance_moteur);led_jaune.off();}
   else if(message_hc=="s") {robot.motor_off(0,0);led_jaune.off();}
   else if(message_hc=="1") {puissance_moteur=25;}
   else if(message_hc=="2") {puissance_moteur=50;}
   else if(message_hc=="3") {puissance_moteur=75;}
   else if(message_hc=="4") {puissance_moteur=100;}
   else if(message_hc=="5") {puissance_moteur=125;}
   else if(message_hc=="6") {puissance_moteur=150;}
   else if(message_hc=="7") {puissance_moteur=175;}
   else if(message_hc=="8") {puissance_moteur=200;}
   else if(message_hc=="9") {puissance_moteur=225;}
   else if(message_hc=="10"){puissance_moteur=255;}
   
   else if(message_hc=="11")  {servo_180(position_servo_180,20,40);}//servo_180(position_servo_180,20,40);
   else if(message_hc=="12")  {servo_180(position_servo_180,45,40);}
   else if(message_hc=="13")  {servo_180(position_servo_180,90,40);}
   else if(message_hc=="14")  {servo_180(position_servo_180,135,40);;}
   else if(message_hc=="15")  {servo_180(position_servo_180,160,40);}

   else if(message_hc=="20")  {servo_120(position_servo_120,30,40);}
   else if(message_hc=="21")  {servo_120(position_servo_120,60,40);}
   else if(message_hc=="22")  {servo_120(position_servo_120,90,40);}
   else if(message_hc=="23")  {servo_120(position_servo_120,120,40);}
   else if(message_hc=="24")  {servo_120(position_servo_120,140,40);}
   
   else if(message_hc=="c") {led_verte.blink(200,100,8);
                             //rpi.send("connect");
                             led_verte.on();}
   //else if(message_hc=="camera") {rpi.send("camera");}
 
}//fin if 


}//fin loop
//                    90                10
void servo_180(int pos_origine, int pos_expected, int delai_pas) {

   int delta = pos_expected - pos_origine;  //10-90 = -80
   int delta_abs = abs(delta);//80
   int pas = delta/delta_abs;//-1

   for (int i=0; i< delta_abs;i++) {  // défile n positions pour atteindre l'angle final     
         pos_origine=pos_origine+pas;  // ajoute 1 cran
         servo_rpi_180.write(pos_origine); // crée une impulsion   
    
         delay(delai_pas);//entre chaque positionnement    
    } // fin de for
    position_servo_180 = pos_origine;

}

void servo_120(int pos_origine, int pos_expected, int delai_pas) {

   int delta = pos_expected - pos_origine;
   int delta_abs = abs(delta);
   int pas = delta/delta_abs;

   for (int i=0; i< delta_abs;i++) {  // défile n positions pour atteindre l'angle final     
         pos_origine=pos_origine+pas;  // ajoute 1 cran
         servo_rpi_120.write(pos_origine); // crée une impulsion   
         
         delay(delai_pas);//entre chaque positionnement    
    } // fin de for
    position_servo_120 = pos_origine;
}