Go Down

Topic: Ayudaaaaaa por fiiiii, con lectura de datos puerto serie (Read 681 times) previous topic - next topic

anonimator

Hola compis.

Debido a los largo periodos de tiempo que he dedicado a elaborar un codigo de recepción para la lectura de datos y probando todas las opciones que yo creia mas o menos aceptables no consigo mi proposito y es el de leer los datos enviados desde mi emisor arduino con XBee, el caso es que monitoreo el envio y todo me sale ordenadito pero no consigo la lectura.

Alguien me puede ayudar, se lo agradeceré bastante aunque no tanto como mis neuronas.

Ahí os dejo mis codigos.

Gracias. ;)

ENVIO------------------------------------------------------------------------------------------------------------------------------------


int eje_xPin = A0;
int eje_yPin = A1;
int pmotorPin = A2;
int recPin = 2;

  // Definir e inicializar variables donde guardar lecturas sensores
  //Recordatorio codigo: un Array o matriz empieza a contas sus casillas desde 0 no desde 1.
int valor_sensor [ ] = {90, 90, 128, 0}; 

  //Variable utilizada como contador para las funciones for 
int i;

void setup()
{
  //Definir el pin del sensor digital como entrada.
pinMode(recPin, INPUT);


  //Inicializar el puerto serie para su utilizacion a 9600 bps
Serial.begin(19200);
}

void loop()
{
  //Leer los datos de las entradas analogicas y digital, y guardarlo como valores integer en el array.
valor_sensor[0] = analogRead(eje_xPin);
valor_sensor[1] = analogRead(eje_yPin);
valor_sensor[2] = analogRead(pmotorPin);
valor_sensor[3] = digitalRead(recPin);

  //Normalizar valores leidos para ser tratados correctamente por los servos (0-180 grados); motor (0-255 punto medio 128).
  //Orden de grabacion no hace falta normalizar valor al ser una entrada digital (0 o 1)
for (i=0; i<2; i=i++) {
  valor_sensor = map(valor_sensor, 0, 1023, 0, 180);
}
  valor_sensor[2] = map(valor_sensor[2], 0, 1023, 0, 255);

  //enviar por puerto serie valores separandolo por comas, y utilizar el caracter $ para identificar el comienzo de la trama, el retorno de carro
  //sera el caracter de fin del trama
Serial.print("$");
for (i=0; i<3; i=i++) {
  Serial.print(valor_sensor);
  Serial.print(",");
}
Serial.print(valor_sensor[3]);
Serial.println();
delay (500);

}


RECEPCION-------------------------------------------------------------------------------------------------------------------------

const int eje_xPin = A0;
const int eje_yPin = A1;
const int pmotorPin = A2;
const int recPin = 2;

void setup() {
  // initialize serial:
  Serial.begin(19200);
  // make the pins outputs:
  pinMode(eje_xPin, OUTPUT);
  pinMode(eje_yPin, OUTPUT);
  pinMode(pmotorPin, OUTPUT);
  pinMode(recPin, OUTPUT);
 
  }

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // busque el siguiente número entero válido en el flujo entrante de serie
    int eje_x = Serial.parseInt();
    // do it again:
    int eje_y = Serial.parseInt();
    // do it again:
    int pmotor = Serial.parseInt();
   
   int rec = Serial.parseInt();
   
     if (Serial.read() == '\$') {
      // constrain the values to 0 - 255 and invert
      // if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
      eje_x = 255 - constrain(eje_x, 0, 255);
      eje_y = 255 - constrain(eje_y, 0, 255);
      pmotor = 255 - constrain(pmotor, 0, 255);

      // fade the red, green, and blue legs of the LED:
      analogWrite(eje_xPin, eje_x);
      analogWrite(eje_yPin, eje_y);
      analogWrite(pmotorPin, pmotor);
      digitalWrite(recPin, rec);
     
      // print the three numbers in one string as hexadecimal:
      Serial.print(eje_x, HEX);
      Serial.print(eje_y, HEX);
      Serial.print(pmotor, HEX);
     Serial.print(rec, HEX);
    }
  }
}



Go Up