uControl
Mayo 20, 2013, 03:48:13 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Comunicando una Casio FX850P con la PC a traves de Arduino Mega 2560  (Leído 789 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Ariel
Global Moderator
dsPIC
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 10230



WWW
« : Julio 23, 2012, 10:33:17 »

Comunicando una Casio FX850P con la PC a traves de Arduino Mega 2560

Tengo una calculadora programable bastante vieja pero potente, programable en BASIC, con 32KB de RAM, que posee un puerto serie. Hace un par de dias vi en Retrocomputación que era posible conectarla a la PC mediante una placa Arduino, asi que me dije "vamos a intentarlo"!



¡Funciona! Este fue el primer programa transmitido.
(el programa ese no funciona, pero esa es otra historia Wink )


Despues de dar unas cuantas vueltas, conseguí hacerlo andar. A 600 baudios entre la Casio y el Arduino, y a 9600 entre Arduino y la PC. El amigo Peter Kant Tropus lo habia hecho a 300 baudios, pero a mi -la verdad- no me funcionó. Como decia, despues de muuuuchas pruebas, de jugar con la paridad, cantidad de bits y varias cosas mas, se me dio por cambiar la velocidad, y ZAZ!, anduvo  Grin

El programa usado es el que viene de demostración con el entorno Arduino, al que se le cambia la velocidad de transmisión, dejandoló asi:

Código:
/*
  Mega multple serial test
 
 Receives from the main serial port, sends to the others.
 Receives from serial port 1, sends to the main serial (Serial 0).
 
 This example works only on the Arduino Mega
 
 The circuit:
 * Any serial device attached to Serial port 1
 * Serial monitor open on Serial port 0:
 
 created 30 Dec. 2008
 by Tom Igoe
 
 This example code is in the public domain.
 
 */


void setup() {
  // initialize both serial ports:
  Serial.begin(9600);
  Serial1.begin(600);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.print(inByte, BYTE);
  }
}


Y las conexiones que hay que hacer son 3: GND, RX y TX (el pin 9 de la casio con el pin 18 de arduino, el pin 14 casio con el pin 19 arduino y el 30 de casio con el GND del Arduino.). Este es el pinout del conector de 30 pines de la Casio:


Una vez conectado todo, en la calculadora se entra en el modo BASIC, se selecciona el programa a transmitir, y se escribe:

Citar
SAVE "COM0:3,N,8,1,N,N,N,N,N"

y se presiona la tecla "EXE". Y listo!

Esto es lo que significa cada uno de los parámetros enviados:


Y aquí algunas fotos del "invento":


Hay como 20 años de diferencia entre la calculadora y el Arduino Mega  shocked



No tenia la ficha, asi que use tres patitas de LEDs que tenia por ahi bang




En lugar de "2", poner "3" para que la velocidad de transmisión sea de 600 baudios.

Saludos!


PD: Este programa si funciona! Wink


* Pantallazo.png (58.96 KB - descargado 310 veces.)
* Pantallazo-1.png (66.15 KB - descargado 308 veces.)
* Pantallazo-MultiSerialMega | Arduino 0022.png (22.23 KB - descargado 309 veces.)
* Pantallazo--dev-ttyACM0-2.png (17.52 KB - descargado 317 veces.)
* SDC16535.JPG (154.18 KB - descargado 266 veces.)
* SDC16536.JPG (139.6 KB - descargado 252 veces.)
* SDC16540.JPG (136.07 KB - descargado 252 veces.)
* Pantallazo--dev-ttyACM1.png (43.96 KB - descargado 267 veces.)
« Última modificación: Julio 23, 2012, 10:47:37 por Ariel » En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.096 segundos con 29 consultas. (Pretty URLs adds 0.008s, 3q)