Différence between Serial and Serial1 Mega2560

Bonjour, Hello

J’ai uploadé le programme ASCII table dans mon mega 2560
I uploaded the ASCII table tutorial program in my mega 2560

1 - Lorsque je le fais s’exécuter sur le Serial (idem programme de base), j’obtiens la bonne réponse dans Hercules
1 - When I execute on the serial port (same as origin program), I get the right result when I look the answer with Hercules

ASCII Table ~ Character Map#CR#LF!, dec: 33, hex: 21, oct: 41, bin: 100001#CR#LF", dec: 34, hex: 22, oct: 42, bin: 100010#CR#LF#, dec: 35, hex: 23, oct: 43, bin: 100011#CR#LF$, dec: 36, hex: 24, oct: 44, bin: 100100#CR#LF%, dec: 37, hex: 25, oct: 45, bin: 100101#CR#LF&, dec: 38, hex: 26, oct: 46, bin: 100110#CR#LF’, dec: 39, hex: 27, oct: 47, bin: 100111#CR#LF(, dec: 40, hex: 28, oct: 50, bin: 101000#CR#LF…etc

2 - dans le programme, je change Serial en Serial1. J’obtiens cette réponse
2 - In the same program, I change Serial in Serial1. I get a new answer !!

_V^[[»õ;'5¿#ETX¿y/=#ESC=9#ETB5#ESC¿e=#USå뽧¿759‹¿™™§¿/5#SI‹¿›§¿!9#ETB‹¿—§¿;-#‹¿ŸŸŸŸå뻧¿759‹¿™—§¿/5#SI‹¿››§¿!9#ETB‹¿—›§¿;-#‹¿ŸŸŸŸå빧¿759‹¿™•§¿/5#SI‹¿›™§¿!9#ETB‹¿—™§¿;-#‹¿ŸŸŸåë·§¿759‹¿™“§¿/5#SI‹¿›—§¿!9#ETB‹¿——§¿;-#‹¿ŸŸŸŸå뵧¿759‹¿™‘§¿/5#SI‹¿›•§¿!9#ETB‹¿—•§¿;-#‹¿ŸŸŸå볧¿759‹¿™§¿/5#SI‹¿›“§¿!9#ETB‹¿—“§¿;-#‹¿ŸŸŸå뱧¿759‹¿™§¿/5#SI‹¿›‘§¿!9#ETB‹¿—‘§¿;-#‹¿ŸŸå믧¿759‹¿—Ÿ§¿/5#SI‹¿›§¿!9#ETB‹¿•Ÿ§¿;-#‹¿ŸŸŸŸåë#NUL…etc

C’est comme si la table ascii changeait en fonction du port série utilisé. En tout cas, je n’arrive pas à comprendre la logique du (2).
It is like it is not the same ascii characters that are treansmitted thru the different serial ports. Anyway, impossible for me to find some logic in the (2) answer.

Merci de m’orienter si ca parle à qqun
Thank’s for helping me if somebody has an idea

Matthieu

Bonjour,

Est ce que les deux ports sont initialisés à la même vitesse?

Oui l’initialisation est la même
Yes, same initialization

Dans le programme ASCII table , je change juste Serial en Seria1 par une opération remplacer
In the program I use the “replace” function to change serial in serial1

Mets ton code.
Tu as quoi comme interface pour te connecter sur Serial1?

J’utilise Hercules

void setup() {
//Initialize Serial1 and wait for port to open:
Serial1.begin(9600);
while (!Serial1) {
; // wait for Serial1 port to connect. Needed for native USB port only
}

// prints title with ending line break
Serial1.println(“ASCII Table ~ Character Map”);
}

// first visible ASCIIcharacter ‘!’ is number 33:
int thisByte = 33;
// you can also write ASCII characters in single quotes.
// for example, ‘!’ is the same as 33, so you could also use this:
// int thisByte = ‘!’;

void loop() {
// prints value unaltered, i.e. the raw binary version of the byte.
// The Serial1 Monitor interprets all bytes as ASCII, so 33, the first number,
// will show up as ‘!’
Serial1.write(thisByte);

Serial1.print(", dec: ");
// prints value as string as an ASCII-encoded decimal (base 10).
// Decimal is the default format for Serial1.print() and Serial1.println(),
// so no modifier is needed:
Serial1.print(thisByte);
// But you can declare the modifier for decimal if you want to.
// this also works if you uncomment it:

// Serial1.print(thisByte, DEC);

Serial1.print(", hex: ");
// prints value as string in hexadecimal (base 16):
Serial1.print(thisByte, HEX);

Serial1.print(", oct: ");
// prints value as string in octal (base 8);
Serial1.print(thisByte, OCT);

Serial1.print(", bin: ");
// prints value as string in binary (base 2) also prints ending line break:
Serial1.println(thisByte, BIN);

// if printed last visible character ‘~’ or 126, stop:
if (thisByte == 40) { // you could also use if (thisByte == ‘~’) {
// This loop loops forever and does nothing
while (true) {
continue;
}
}
// go on to the next character
thisByte++;
}

Quelle est l’interface physique pour te raccorder sur Serial1?

je le cable usb de l’arduino qui émule un port série pour voir ce qui se passe sur Serial

marche

J’ai un émulateur usb serie réglé à la bonne vitesse et après je récupere les fils du DB9 pour brancher sur Ground, RX1 et TX1 du Serial1 l’arduino

marche pas

Sur la db9 c’est du niveau TTL (0/5V) ou du niveau RS232 -V/+V

l’emulateur est le trendnet TU-S9

https://www.trendnet.com/langfr/products/USB-adapters/TU-S9

Il semble bien que ce soit du Rs232 vrai -V/+V et du pas du TTL 0/5V , pas sur que l’arduino apprécie trés longtemps le -V/+V sur ses I/O (les cordons USB/RS232 tournent generalement vers -9/+9 v )

NB Ne pas tenir compte de cette réponse , c’etait un test de reponse par mail

Il semble bien que ce soit du Rs232 vrai -V/+V et du pas du TTL 0/5V , pas sur que l’arduino apprécie trés longtemps le -V/+V sur ses I/O (les cordons USB/RS232 tournent generalement vers -9/+9 v )

les TU-S9 ne pouvant pas délivrer de courant important le risque de destruction du microcontrlleur est modéré mais en plus des niveaux de tension différents c’est de la logique négative qui sort du TU-S9, pas étonnant que ça donne rien de clair en ASCII !!

1 → -9V (et non +5V)
0 → +9V (et non 0V)
(
Un MAX232 ou équivalent doit être intercalé entre Arduino et TU-S9 (il assure inversion logique et adaptation de niveaux de tension)

Essaie d’ajouter pinMode( 19, INPUT_PULLUP ); dans setup(), ça a résolu un problème que j’avais avec un module HC-05 qui fonctionnait sur Serial mais pas sur Serial1

@guix : déjà essayé

Je vais creuser les niveaux de tension, je vous tiens au courant. En attendant si vous avez d’autres idées.

Bonjour

Pour ne pas avoir a invereser et abaisser les niveaux de tension pourquoi ne pas abandonner le TU-S9 de Trendnet au profit d’un simple adaptateur USN-UART à base de FT232, CP2102 ou CH340 ?

(perso : mon TU-S9 ne sert plus beaucoup, il est rare que j’ai encore à me connecter à du ‘vrai RS232’, l’époque des modems, Palm et Pocket PC est loin derrière…).
TU-S9

Oui çà sert de moins en moins , mais de savoir que l’on en a un sous la main “au cas où” est important :wink:

Max232 fonctionne merci a tous

Merci pour le retour.