Jedi Serial connection

Hi i am hacking a Jedi Force Trainer and it is supposed to send serial ascii at 57600 like this

0 0 26 0 0 26 0 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 40 40 0 40 40 0 50 40 0 50 29 0 50 29 0 30 29 0 30 43 0 30 43 0

I know the Tx and Rx pins but the Software Serial library example doesn't read it. Do i have to modify the example?

Any hints on how to get the data would be really great!

Best,

Tim

does 57600 8N1 serial connection mean anything?

Some of those numbers look like ascii codes.

I know the Tx and Rx pins but the Software Serial library example doesn't read it.

What is connected to the Tx and Rx pins? What pin numbers are you referring to? There are pins on the Arduino labeled Rx and Tx. These are the hardware serial pins. The Softwae serial library won't be able to read them.

Do i have to modify the example?

Most likely. However, having no idea what example you are talking about, I can't be certain.

does 57600 8N1 serial connection mean anything?

57600 is the baud rate; 8 bits, no parity, 1 stop bit.

Software Serial library example doesn’t read it

@ 57600?
It’s only rated to 9600.
http://arduino.cc/en/Reference/SoftwareSerial

Hey thanks so much for your reply!

The code i use is below and the tx and rx are from the Jedi machine into the defined tx and rx pins 3 and 2 as in the arduino code. Here is a pic of the pins

/*
SoftwareSerial example

Sample of the SoftwareSerial library. Listens for serial in on pin 2
and sends it out again on pin 3.

by Tom Igoe
based on examples by David Mellis and Heather Dewey-Hagborg
written: 6 Jan 2007

*/

// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>

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

// set up a new serial port
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
byte pinState = 0;

void setup() {
// define pin modes for tx, rx, led pins:
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}

void loop() {
// listen for new serial coming in:
char someChar = mySerial.read();
// print out the character:
mySerial.print(someChar);
// toggle an LED just so you see the thing’s alive.
// this LED will go on with every OTHER character received:
toggle(13);

}

void toggle(int pinNum) {
// set the LED pin using the pinState variable:
digitalWrite(pinNum, pinState);
// if pinState = 0, set it to 1, and vice versa:
pinState = !pinState;
}

what about http://arduiniana.org/libraries/NewSoftSerial/

mySerial.begin(9600);

If the stuff's coming off the device at 57600 bps, then there's no way you're going to read it running the receiver at 9600, and as I pointed out, 9600 is the maximum speed of the software serial library.

You need to use the hardware serial interface.

(Please use the "Code" (#) button when posting code).

And you also need to connect the grounds from Arduino and the Jedi thingie together !!!

what about http://arduiniana.org/libraries/NewSoftSerial/

Did you look at that site:

  1. (New v3) It supports 300, 1200, 14400 and 28800 baud.**

Hey but i have a 16Mhz ATmega328P chip and i read that it goes to 57600

  1. digitalread/write scrapped in favor of direct port I/O. Revised routines now get perfect RX up to 57.6K on 16MHz processors and 31.25K on 8MHz processors.

so this code should work right :o

#include <NewSoftSerial.h>

NewSoftSerial mySerial(2, 3);

void setup()  
{
  Serial.begin(57600);
  Serial.println("Goodnight moon!");

  // set the data rate for the NewSoftSerial port
  mySerial.begin(57600);
  mySerial.println("Hello, world?");
}

void loop()                     // run over and over again
{
  if (mySerial.available()) {
    Serial.println();
      Serial.print(mySerial.read());
  }
  if (Serial.available()) {
      mySerial.print(Serial.read());
      
  }
}

so this code should work right

You tell us. If it doesn't, use the force, and make it.

hehe… i need to train more…

do you think the NewSoftSerial lib has the capability assuming i have the 16MHz chip?

Only one way to know. Try it.

Try it.

"There is no 'try'. Do. Or do not".

Actually, when it comes to bit-banging 57600, I'm pretty sure there is no "do", unless you're not "do"-ing much of anything else. You're pretty much guaranteed that you're going to at least occasionally drop a byte or more because your code isn't staring intently at that software serial pin when the data starts.

Much better to go with hardware serial, if your goal is to build a reliable gadget, rather than to demonstrate your l33t-ness.

Ran