Arduino Mega: Serial2 problemi

Salve,
ho un Arduino Mega e non riesco ad utilizzare la comunicazione seriale se non quella tramite la USB. Sto semplicemente usando il codice di esempio della libreria di comunicazione, ma se invece della porta seriale provo a connettermi direttamente alla Serial2 o 3 ricevo sul Serial Monitor invece che una sequenza di 1 e 0 una sequenza di caratteri ascii del tipo quadrato e tondo.
Potete aiutarmi a risolvere il problema?
Grazie,
Tommaso

Ciao Tommaso
Ti elenco le possibili cause perché con la tua descrizione non riesco ad capirci tanto.
Hai messo un level shifter tipo MAX232 tra uscite Arduino e la seriale del PC?
La BAUDrate é giusta?
Il numero dei byte é giusto ( 7 o 8)
Il numero dei startbyte é giusto?
La sequenza dei Byte é giusta? (MSB o LSB prima)
Ciao Uwe

Ciao,
sinceramente non so come e dove impostare queste cose che mi dici.
Io ho semplicemente preso il programma di esempio di comunicazione seriale:

void setup()
{
// start serial port at 9600 bps:
Serial.begin(9600);
}

void loop()
{
Serial.print(0, BYTE);
Serial.print(1, BYTE);
}

e aperto il serial monitor.
Se uso il cavo usb vedo giusta la sequenza di 0 e 1 mentre se uso la serial2 (collegandomi ai pin 16 e 17 e non usando la usb) sul serial monitor vedo 2 caratteri ascii che si alternano in sequenza.
E' la prima volta che provo una comunicazione seriale non via USB e sinceramente credovo bastasse fare così, ma evidentemente mi manca qualcosa. Con quello che ti ho dato puoi aiutarmi? Se ti servono altre informazioni scusa, ma non sono pratico, comunque se mi dici provo a darti tutte le informazioni necessarie.
Grazie,
Tommaso

la Serial puoi vederla tramite il serial monitor perchè i pin tx e rx sono collegati al FT232 mentre le altre seriali non puoi vederle sul serial monitor.

Ciao Tommaso

Il serial.begin () inizializza la prima porta seriale non le altre.
Devi inizializzare anche le altre con serial1.begni() ecc.

Per stampare mandare qualcosa sulla seriale usa la funzione:
Serial.print() per la prima
Serial1print() per la seconda ecc

Ciao Uwe

Ciao, lo so che devo mettere ovunque Serial2... il codice che avevo scritto era solo indicativo per dire che con Serial (e quindi usando la USB) funziona, mentre se metto Serial2 (anche nel Begin ovviamente) il sistema trasmette dei dati, ma invece che tramettere quelli giusti trasmette caratteri ascii differenti...
Il mio problema è che io non posso usare la seriale via usb e sono costretto ad usare una seriale "vera" e dal test con il serial monitor ottengo risultati differenti e non so come risolvere il problema.
Grazie,
Tommaso

Ciao Tommaso

Scusami posso basarmi solo sulle informazioni che dai. Posso correggere il codice che metti.

Ma con il "serial monitor" cosa intendi?
Fisicamente come hai collegato l'arduino mega?

Ciao Uwe

ciao ragazzi ho fatto l astessa cosa che dice Tommaso con il MEga e nn mi aspettavo questo risultato!quindi Tommaso ha ragione!!!
vi posto prima il codice

// Arduino Mega using all four of its Serial ports 
// (Serial, Serial1, Serial2, Serial3), 
// with different baud rates:

void setup(){
  Serial.begin(9600);
  Serial1.begin(38400);
  Serial2.begin(19200);
  Serial3.begin(4800);

  Serial.println("Hello Computer");
  Serial1.println("Hello Serial 1");
  Serial2.println("Hello Serial 2");
  Serial3.println("Hello Serial 3");
}

void loop() {}

poidall'ide di arduino vedo su serial monitor e inpostoil baud che corrisponde al bein e questi sono i risultati:

  • baud 9600 Hello Computer

  • baud 38400 lhlbcimhepifhp

ecc per gli altri baud.cmq non sono i caratteri esatti e non posso postrali perche il forum non gli accetta boooooooooo

Ciao,
dal forum in inglese mi dicono che il problema è relativo al fatto che la seriale usa i 12 volt mentre arduino usa i 5 per cui ci vuole un convertitore. Non ho ancora provato, ma proverò in questi giorni.
Se volete leggete il post:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1275028176/6#6

Grazie,
Tommaso

Ciao a tutti
@ Tommaso
avevo scritto nel replay 1 "Hai messo un level shifter tipo MAX232 tra uscite Arduino e la seriale del PC?"
poi nel replay 6 "Fisicamente come hai collegato l'arduino mega?"

È la stessa cosa che scrivi che hai trovato nel link che nomini.

Posso aiutarTi quando leggi le risposte e rispondi alle domandi di chiarimento che Ti faccio.

Speriamo che non hai rotto i pin del Arduino perché hai fatto entrare tensioni troppo alte e negative.

@spank_78
I sintomi che descrivi sono corretti. La seriale "Serial.begin(9600);" é quella che attraverso il FT232 é collegato con l'USB.
Se sul IDE selezioni un BAUD-Rate differente del Arduino Ti succede che Ti escono caratteri strani.

a tutti:
Per provare le altre 3 Seriali Serve o un Integrato tipo MAX232 o simili per portare i livelli 0 e 5V a quelli giusti della RS232 oppure per esempio un FT232 che trasforma la seriale in USB (per esempio la schedina http://www.robot-italy.com/product_info.php?cPath=13_43&products_id=1446)

Ciao Uwe

sei stato molto chiaro!
Domanda i moduli xbee utilizzano i seriali1 quidni l'adattatore nn fa altro che uno shiftare i livelli di tensione?
mi fai un esempio epr cui uno dovrebbe utilizzare questo tipo di uscite?
grazie

ciao spank_78

Il XBee funziona con 3,3V percui i segnali 0-5v vengono adattati ai 0-3,3V. Nello schema: http://www.arduino.cc/en/uploads/Main/XbeeShieldSchematic.pdf é il partitore con le resistenze R1, R2, R5, R6 per TX e per RX non serve perché 3,3 V vengono riconosciuti dall' Arduino come livello HIGH.

Esempio di RS232? Puoi collegare tutte le periferiche che hanno una seriale. Una volta era lo standard nei computer. Oggigiorno é stata sostituita dalla USB.
Con una scheda come quella citata prima puoi fare di una seriale una USB slave.

Spero di averti risposto.
Ciao Uwe

Si sei stato chiaro grazie :wink:

avevo anche io dubbi .. grazia