Pages: [1]   Go Down
Author Topic: (SOLUCIONADO)Enviar dato hexadecimal por el puerto serie  (Read 3272 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola quiero enviar #define ID 0x00A1 por el puerto serie pero no soy capaz de que me pinte eso, lo que consigo pintar es A1 mediante Serial.print(ID,HEX), los ceros no aparecen, ¿como puedo hacer que pinte 00A1? Gracias
« Last Edit: August 21, 2012, 03:17:02 pm by tablet » Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Necesitas convertirlo primero en cadena de texto:

Code:
#include <stdio.h>

#define ID 0x00A1

void setup()
{
  int variable = ID;
  char texto[16];

  Serial.begin(9600);
 
  sprintf(texto, "%04X", variable);
  Serial.println(texto);
}

void loop()
{
}
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias me fue de lujo. Saludos.
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De nada,
Jorge

PD: Modifica el título a (SOLUCIONADO)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola compañeros.

Acabo de registrarme hace unos dias que intento ir aprendiendo programacion y electronica en arduino  smiley-lol

El caso es que tengo un problema parecido. La solucion que has jorgepl no entiendo ni papa jeje.

Bien el caso es que quiero controlar un equipo por entrada rs232. Tengo un conversor ttl a rs232 con el max232 sus condensadores y demás.

Estos son los comandos basicos que quiero mandar.
                        ascci                      hex
Power On        ~ P N CR                7Eh 50h 4Eh 0Dh
Power Off       ~ P F CR                 7Eh 50h 46h 0Dh

Este es el codigo que he intentado hacer manda comando power on espera 1 min y apaga luego vuelve a esperar 3 min para encender.

Si conecto el usb con el pc con el serial monitor todo bien aparece ~PN cambio de linea ~PN

En cambio el dispositivo no responde

Code:
int led = 13;

void setup()
{
pinMode(led, OUTPUT);     
Serial.begin(9600);    // configura el puerto serie a 9600bps
}
void loop()
{
Serial.println("~PN");
digitalWrite(led, HIGH);   
delay(1000);
Serial.println("~PN"); //power on

digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);   
delay(60000); //espera 1 min
digitalWrite(led, LOW);
Serial.println("~PF"); //Power off
delay(180000); //espera 3 min para volver a encender.
}

Si podeis aclararme si hay algun fallo de programa o me pongo a mirar hard  en principio pin rx y tx estan bien conectados .
El pinaje del dispositivo no esta claro si pin2-pin3 es rx o tx he probado intercambiandolos.

Gracias por vuestro tiempo

Saludos
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

El caso es que tengo un problema parecido.

La verdad es que yo no le veo mucho parecido  smiley

En cuanto al código, no hace exactamente lo que dices, de hecho, manda 2 veces el comando "Power on" con 1 segundo de tiempo entre ambos comandos. Por lo demás, debe funcionar según tus especificaciones

Como no dices que es lo que intentas controlar por puerto serie, no podemos saber si has conectado bien o no, ni por qué no te funciona.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola jorge
Gracias por tu rapida respuesta.
Mira si soy novato que pense que tenia relacion.

Efectivamente manda 2 veces power on, me exprese mal.

Estoy haciendo pruebas con un proyector usa pin 2 rx 3 tx y 5 gnd.  aqui el protocolo no es el mismo modelo pero los comandos son iguales.

El conversor que tengo es como este la version 5v

Conecto pin 0 rx a rx0
            pin 1 tx a tx0

alientacion +vcc a 5v ( da suficiente amperaje)
                gnd con gnd


Salidas conectadas al rs2320 ahi tengo una duda porque hay un +vcc que no conecto no se si hace falta.

En principio en serial monitor funciona ok ¿puede ser algun tema del comando que se mande en ascci o hex?

Por cierto uso placa arduino uno.

Saludos
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En principio en serial monitor funciona ok ¿puede ser algun tema del comando que se mande en ascci o hex?

ASCII es la representación en forma de carácter del valor hexadecimal que estás mandando, es decir, que cuando mandas 'P', lo que realmente estás mandando es 0x50.

Supongo que antes de ponerte con el arduino, has probado la conexión por hyperterminal que ponen en el documento del protocolo para verificar que funciona desde el PC, ¿verdad? Así te aseguras que la conexión por RS232 del proyector funciona y además verás como son los comandos que hay que enviar y la respuesta que da el proyector por puerto serie.

¿Cómo conectas el driver 232 al proyector? ¿Has cruzado Rx y Tx? También estaría bien que comprobases que el driver funciona correctamente: puenteando Rx y Tx en el conector RS232-0 y mediante otro programa en arduino (utilizando softserial.h) en el que envías datos y compruebas que recibes lo mismo que envías (has puenteado Rx y Tx).
Logged

Offline Offline
God Member
*****
Karma: 6
Posts: 630
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En el código no estás enviando el caracter CR. En el monitor cambia de línea porque la propia consola le tienes dicho que ponga una nueva línea.
Edito: error mío, sí lo estás enviando puesto que usas la instrucción println()
« Last Edit: June 21, 2012, 11:08:02 am by Cheyenne » Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solucionado.

Error de pinaje y configuracion del proyector resulta que estaba configurado para recibir comandos por ethernet en vez de rs232.

A veces lo mas elemental no te das cuenta.

Gracias  smiley-mr-green
Logged

Pages: [1]   Go Up
Jump to: