Go Down

Topic: Novato unir dos codigos (Read 116 times) previous topic - next topic

PablitoLo

necesito unir estos códigos pero desconozco de códigos para hacerlo, y ocupo ayuda para hacerlo:  brazo robotico
Code: [Select]

#include <Servo.h>

Servo servo1; 
Servo servo2;
Servo servo3;
Servo servo4;
char a;
String readString;
void setup() {
  pinMode(13,OUTPUT);
  servo1.attach(8);
  servo2.attach(9);
  servo3.attach(10); 
  servo4.attach(11);
  Serial.begin(9600);
servo1.write(8);
servo2.write(100);
servo3.write(164);
servo4.write(90);
delay(10);
}

void loop() {
 if (Serial.available()) { 
    a = Serial.read();
   
    if(a=='A'){
      motor1();
    }
   
    if(a=='B'){
      motor2();
    }
   
    if(a=='C'){
      motor3();
    }
     if(a=='D'){
      motor4();
    }
     if(a=='E'){
     digitalWrite(13,HIGH);
     delay(10);
    }
      if(a=='F'){
     digitalWrite(13,LOW);
     delay(10);
    }
  }

 
void motor1(){
        delay(10);   
        while (Serial.available()) {
                           
          char b = Serial.read(); 
          readString += b;       
        }
        if (readString.length() >0) {   
          Serial.println(readString.toInt()); 
          servo1.write(readString.toInt());
          readString=""; // Clear string
        }
}

void motor2(){
        delay(10);
        while (Serial.available()) {                 
          char b = Serial.read(); 
          readString += b;         
        }
        if (readString.length() >0) {
          Serial.println(readString.toInt()); 
          servo2.write(readString.toInt());
          readString="";
        }
}

void motor3(){
        delay(10);
        while (Serial.available()) {                 
          char b = Serial.read(); 
          readString += b;       
        }
        if (readString.length() >0) {
          Serial.println(readString.toInt()); 
          servo3.write(readString.toInt());
          readString="";
        }
}
void motor4(){
        delay(10);
        while (Serial.available()) {                 
          char b = Serial.read(); 
          readString += b;       
        }
        if (readString.length() >0) {
          Serial.println(readString.toInt()); 
          servo4.write(readString.toInt());
          readString="";
        }
}

Y sumobot
Code: [Select]

#include <SoftwareSerial.h>
#include <Servo.h>


int bluetoothTx = 2;
int bluetoothRx = 3;

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);


int Motor1A = 5;
int Motor1B = 6;



int Motor2A = 9;
int Motor2B = 10;

void setup ()
{
bluetooth.begin(115200);
bluetooth.print("$$$");
delay(100);
bluetooth.println("U,9600,N");
bluetooth.begin(9600);

pinMode( Motor1A, OUTPUT );
pinMode( Motor2A, OUTPUT );
pinMode( Motor1B, OUTPUT );
pinMode( Motor2B, OUTPUT );

digitalWrite( Motor1A, LOW );
digitalWrite( Motor2A, LOW );
digitalWrite( Motor1B, LOW );
digitalWrite( Motor2B, LOW );
}

int flag1 = -1;
int flag2 = -1;

void loop()
{
if(bluetooth.available())
{
char toSend = (char)bluetooth.read();
if(toSend == 'S')
{
 
flag1 = 0;
flag2 = 0;

digitalWrite( Motor1A, LOW);
analogWrite( Motor1B, LOW);

digitalWrite( Motor2A, LOW),
analogWrite( Motor2B, LOW);

}
if( toSend == 'F' || toSend == 'G' || toSend == 'I')
{
if (flag1 != 1)
{

flag1 = 1;
digitalWrite( Motor1A, HIGH);
analogWrite( Motor1B, 0 );
digitalWrite( Motor2A, HIGH);
analogWrite( Motor2B, 0 );
}
}
if(toSend == 'B' || toSend == 'H' || toSend == 'J')
{
if(flag1 != 2)
{

flag1 = 2;
digitalWrite( Motor1B, HIGH);
analogWrite( Motor1A, 0 );
digitalWrite( Motor2B, HIGH);
analogWrite( Motor2A, 0 );
}
}
if(toSend == 'L' || toSend == 'G' || toSend == 'H')
{
if(flag2 != 1)
{

flag2 = 1;
digitalWrite( Motor2B, HIGH);
analogWrite( Motor2A, 0 );
digitalWrite( Motor1A, HIGH);
analogWrite( Motor1B, 0 );
}
}
else
if(toSend == 'R' || toSend == 'I' || toSend == 'J')
{
if(flag2 != 2)
{

flag2 = 2;
digitalWrite( Motor1B, HIGH);
analogWrite( Motor1A, 0 );
digitalWrite( Motor2A, HIGH);
analogWrite( Motor2B, 0 );
}
}
else
{
if(flag2 != 3)
{

flag2 = 3;
digitalWrite ( Motor2A, LOW);
analogWrite ( Motor2B, LOW); 
digitalWrite ( Motor2B, LOW);
analogWrite ( Motor2A, LOW); 
}
}
}
}

surbyte

Los códigos se unen organizadamente.

Sin repetir variables o constantes comunes a ambos códigos, en ese caso le cambias el nombre a alguno.
Luego simplemente debes ser organizado.

Siempre va a ser de ambos códigos.

1. Empiezas por las librerías, constantes y variables globales.
Es todo lo que esta antes del setup.

Si hubiera funciones y rutinas, tambien las copio debajo.

REPITO: no puedes poner dos variables iguales. Si una se llama pulsador1 y resulta que tienes la suerte que en el segundo tmb se llama pulsador1 pues le cambias el nombre a la que gustes y lo haces en todo el código involucrado.

2. El setup.
Aca se inicializan los pines, se fijan velocidades del puerto serie, algunos inicios de objetos, etc.
Siempre del mismo modo, sin repetir.
Si los códigos tienen Serial.begiin(9600) y Serial.begiin(115200)  elige la velocidad de tu agrado.
Si comparten pines, entonces tendras que cambiar aquel pin común por otro libre.

3. Loop

Aca viene la parte mas complicada.
Pero siguiendo el criterio anterior no debería haber problema aunque hay que entender que se esta haciendo.

En tu caso veo un problema.
Tienes un código que le da órdenes desde el puerto serie y otro desde BT.
hasta ahi hablamos de lo mismo casi.

Ahora hay muchas órdenes involucradas. Resuelve cuales serán las que vas a usar.

Ve armando el código y cuando se te complica pregunta y veremos como seguir!!


Go Up