Hola, soy nuevo en esto y quisiera poder saber cambiar entre un programa y otro mediante un botón, el primer programa lo que hace es mover un carrito mediante un modulo bluetooth y el celular, y el otro lo que haces es que dicho carrito sea autónomo, lo cual los quisiera fusionar
código carrito bluetooth
#include <NewPing.h>
//pines de los sensores
#define trig_pin A1
#define echo_pin A2
#define maximum_distance 200
boolean goesForward = false;
int distance = 100;
NewPing sonar(trig_pin, echo_pin, maximum_distance); //funciones de los sensores
char getstr;
const int LeftMotorForward = 7; //Declarar los pines del del motor LN1
const int LeftMotorBackward = 6; //LN2
const int RightMotorForward = 4; //LN3
const int RightMotorBackward = 5; //LN4
void _mForward() //Adelante
{
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(RightMotorForward, HIGH);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorBackward, LOW);
Serial.println("go forward!");
}
void _mBack() //Atras
{
digitalWrite(LeftMotorBackward, HIGH);
digitalWrite(RightMotorBackward, HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorForward, LOW);
Serial.println("go back!");
}
void _mleft() //Izquierda
{
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorForward, HIGH);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorBackward, LOW);
Serial.println("go left!");
}
void _mright() //Derecha
{
digitalWrite(LeftMotorForward, HIGH);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorBackward, LOW);
digitalWrite(RightMotorForward, LOW);
}
void _mStop() //Detener
{
digitalWrite(RightMotorForward, LOW);
digitalWrite(LeftMotorForward, LOW);
digitalWrite(RightMotorBackward, LOW);
digitalWrite(LeftMotorBackward, LOW);
Serial.println("Stop!");
}
void setup()
{
Serial.begin(9600); //Declarar los pines de salida
pinMode(RightMotorForward, OUTPUT);
pinMode(LeftMotorForward, OUTPUT);
pinMode(LeftMotorBackward, OUTPUT);
pinMode(RightMotorBackward, OUTPUT);
distance = readPing();
delay(100);
}
void loop()
{
int distanceRight = 0;
int distanceLeft = 0;
delay(50);
if (distance <= 20){ //Si la distancia es menor o igual a 20 cm
_mStop(); //Detente
delay(300);
_mBack(); //Regresa
delay(400);
_mStop(); //Detente
delay(300);
}
else{
getstr=Serial.read();
if(getstr=='F')
{
_mForward();
}
else if(getstr=='B')
{
_mBack();
delay(200);
}
else if(getstr=='R')
{
_mleft();
delay(200);
}
else if(getstr=='L')
{
_mright();
delay(200);
}
else if(getstr=='X')
{
_mStop();
}
}
distance = readPing();
}
int readPing(){
delay(70);
int cm = sonar.ping_cm();
if (cm==0){
cm=250;
}
return cm;
}
código carrito autónomo
#define trig_pin A1 // echo pin
#define echo_pin A2 // Trigger pin
int maximumRange = 30;
long duration, distance;
void setup() {
Serial.begin (9600);
pinMode (trig_pin, OUTPUT);
pinMode (echo_pin, INPUT );
pinMode (7, OUTPUT);
pinMode (6, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
}
void loop ()
{
{
digitalWrite(trig_pin,LOW);
delayMicroseconds(2);
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
duration=pulseIn (echo_pin,HIGH);
distance= duration/58.2;
delay (50);
Serial.println(distance);
}
if (distance >= 30 ){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay (200);
}
else if (distance >=15 && distance <= 25) {
digitalWrite (2,HIGH);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
delay (1000);
}
else if (distance < 15){
digitalWrite (2, LOW);
digitalWrite (3, HIGH);
digitalWrite (4, LOW);
digitalWrite (5, HIGH);
delay (1000);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,HIGH);
digitalWrite (5,LOW);
delay (1000);
}
}