jueves, 31 de mayo de 2012

Problemas intentando leer el puerto Serie.

Ya no se que probar. Estoy desesperado.

Desde que compre el Arduino con un completo Kit de sensores no he hecho mas que probar cosas y desde el primer dia encantado con los resultados.
Los ejemplos de los sensores mas variados me salen pero ahora me he quedado estancado intentando leer un aparato que trasmite datos por Puerto Serie.

He probado de todo todos los ejemplos librerias y codigos que he visto por ahy y nada que no va.

Pongo algunas fotos y el codigo con que lo estoy probando ahora por si alguiien puede echarme una manita (que no sea al cuello)

Aqui el interfaz Rs-232 TTL que estoy usando:





Como se puede ver se encienden los led. aunque no parpadean.

Aqui el codigo que estoy usando y que vario continaumente para ver si consigo que funcione. Os agradeceria que le echarais un vistazo a ver si hay algo mal.

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>

#define rxPin 2
#define txPin 3
#define ledPin 13

SoftwareSerial miSerial =  SoftwareSerial(rxPin, txPin);
byte pinEstado = 0;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  // define el modo para los pines tx, rx, led:
  Serial.print ("hello, world!");
 
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
 
  // configura el ratio de datos para el puerto SoftwareSerial
  miSerial.begin(4800);
}
void loop() {
 
  lcd.setCursor(0, 1);
 //lcd.print(millis()/1000);

  // escucha la llegada de nuevos datos serie:
  char unChar = miSerial.read();
  // imprime el caracter:
  // miSerial.print(unChar);
  lcd.print(unChar);
  Serial.print (unChar);
 
    // Comunta un LED para que veas que la cosa viva
  // este LED se enciende con cada NUEVO caracter recibido:
  toggle(13);

 // espera 10 milisegundos para leer mas
 
  delay(10);
}
void toggle(int pinNum) {
  // Establece el pin del LED usando la variable pinEstado:
  digitalWrite(pinNum, pinEstado);
  // si el pinEstado = 0, lo establece a 1, y vice versa:
  pinEstado = !pinEstado;
 
    }

Unas fotos del montaje:



Como podeis ver el codigo funciona, lo que ocurre es que no le llega nada por el puero serie.

y este es el aparatito culpable de mis desvelos:



Y por si pensais que el cuentavueltas o el cable puedan estar mal, aqui teneis la prueba de que no esto es lo que me lee un sniffer del puerto serie con el mismo cable, o sea que eso no es.




Saludos y perdonar el toston.

1 comentario:

  1. Haber si le hechas un vistaso a esta pagina, yo igual estoy intentando comunicar android con pic via puerto serie.
    http://v-lad.org/projects/gnu.io.android/

    ResponderEliminar