Go Down

Topic: Como fusionar dos programas en uno solo (Read 220 times) previous topic - next topic

psyshine

May 20, 2018, 04:48 pm Last Edit: May 21, 2018, 11:34 pm by surbyte Reason: Lee las normas del foro. Usa etiquetas
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

Code: [Select]
#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);    
}
}





 

surbyte

Cross post con el foro en inglés.

Hilo cerrado y luego borrado.
Lee las normas del foro.

Go Up