software serial

Bonjour,

Peut-on utiliser en même temps la fonction serial et softwareserial sur un arduino a base de at328 ???
Ce serait pour rajouter un seul port série.

Sinon, j'utiliserais un mega, mais c'est plus cher...

merci !

Oui tu peux mais il y a des limitations au Softwareserial, dont la plus grosse est qu'il n'y a pas de buffer.
Donc si tu n'est pas en train d'ecouter au moment ou tu recois des donnees, elles sont perdues !
Ce n'est pas forcément un problème dans tous les cas, mais si c'est pour faire du bidirectionnel continu, il faut oublier : le temps de traiter tes donnees sur le Serial hardware... Tu auras loupé les autres !
Donc tout depend de ce que tu veux faire !

a priori, je ne cherche qu'à commander le module, donc je ne me sert que de la fonction TX.

J'ai trouvé un exemple d'utilisation du Vmusic2 sur le sie d'arduino, il exploite en effet 2 ports série, dont un virtuel. Je vais m'en inspirer.

Mon but et d'envoyer des sons enregistrés sur une clef USB en me servant d'un clavier type PS2 ( sans PC bien sur)
La librairie PS2keyboard va me permettre ça.

Merci pour ta réponse en tous cas !

Wouaaaf... Funky le projet !
En tout cas, oui ca devrait très bien fonctionner sur ce type de comm.

Bon beuf :sunglasses:

salut christian :wink: ( super de se recroiser )
bonjour tout le monde.
je viens tout juste de recevoir la dualemilanove.

je désire intégrer la comunication avec Arduino dans WhiteCat: .le-chat-noir-numerique.fr/

Je ne pense pas avoir fait le tour de toutes les possibilités d'Arduino. et je viens tout juste de me connecter via le port série... mais cette discussion avec Christian m interppelle:

Je souhaites en effet recevoir les données depuis Arduino, mais aussi lui envoyer des données, et mettre en place un système suffisament ouvert pour tous les cas de figure soient possibles en spectacle vivant:
Arduino comme boite à boutons mais aussi comme centre de commandement de relais ou de PWM , ou encore de traitement en stand alone (avec un ethernet shield on peut creer du dmx en Art-Net à très moindre cout).

Ce qui m'interresse c'est de savoir les limites de la communication dans les deux sens entre une API et Arduino via la connexion série FTDI.

Concernant la perte des données, il me semblait qu'il était possible de créer un timer dans arduino avec millis et de permettre l appel de la lecture des IO de manière régulière (puis > stockage dans un tableau ).
un timer pour le flux des IO et leur stockage ( au 50me ou 25eme de sec, et un timer pour le mode reception/ emission avec un traitement des instructions à un framerate moindre ( 1/10eme de sec) . me tromperai je gravement dans l approche ?

la perte de données entrantes est elle inéluctable ? et peut on s affranchir des Delay (hormis dans la boucle principale ) ? :slight_smile:

Salut

D'autres te repondront mieux que moi à ce sujet, mais sur le principe, une interruption timée correctement et commandant la fonction read() de softwareserial devrait permettre de ne pas perdre de données.

Surtout si tu descends la vitesse à 2400bd.

Mais et ce que ça serait possible avec une communication à 9600bd ? la plupart des peripheriques externes utilisent cette vitesse de connection.

Et est-ce qu'a 9600, tu ne passes pas quasiment tout ton temps dans l'interruption ? Auquel cas il devient difficile d'effectuer des taches dans le main (notamment traiter le serial hardware...).

Si tu y parviens, en tout cas ça m'interesse !

bonjour neoirto .
et merci....

EDIT: software serial est pour communiqer en port série direct ? ou bien les pins TX and RX sont des abstractions ?

Software Serial est un peu obsolète, il faut le remplacer par NewSoftSerial :
http://arduiniana.org/libraries/newsoftserial/

Elle sera intégré dans la prochaine version d'Arduino

A+

bonjour teiva.
je me penches dessus. on est d accird qu elle fonctionne en usb et pas sur les PINS I/O ?

Et bien de base tu as Serial qui est connecté à l'USB.
NewSoftSerial te permet de créer un autre port série (soft) ( avec 2 pins pour faire rx et tx) sur lequel tu peux brancher une carte ou un module.
Si ton arduino n'est jamais branché par usb à un pc, tu peux aussi récupérer Serial tx et rx pour connecter une carte ou un module série.

Mais pour la mise au point et le débogage il est intéressant de garder le Serial sur l'USB et donc le pc pour afficher des messages ou saisir des commandes.

J'espère que c'est plus clair :slight_smile:
A+

ok. compris, et merci.
:wink:
EDIT: concernant l IC 2, si on connecte deux cartes arduino avec une en slave, l interface de la deuxieme est il un deuxieme device sur le port série, ou bien le comptage de IO et anaolgue se fait en additionnant le nombre de la premiere carte ?

Hélas ce n'est pas aussi simple ...
a) tu ne peux pas chainer les cartes : par l'interface série, c'est pas fait pour ( ou sinon assez difficile).
b) l'interface SPI ou I2C (wire) conviennent assez bien pour cette tâche.
Dans ce cas il y a un maitre et les autres esclaves. ça consomme 2 I/O en I2C(Wire) et 3 ou 4 pour le SPI (mais c'est plus rapide).
c) si tu as besoin de plus de I/O la mega est faite pour ça, et c'est beaucoup plus simple :wink:

A+

hello teiva. merci de ta réponse.
ma question est surtout le couplage de 2 ou plus arduino.
que se passe t il en termes de com: on a deux devices detectés ou bien c est une cascade sur le premier device?

A partir du PC tu vois que l'arduino qui est connecté par USB, pour les autres c'est à toi de faire un programme qui établira la liaison et transmettra les données.
Mais c'est peut être un peu compliqué pour un débutant, il faut mieux commencer avec une seule plaque, si tu as de gros besoin d'I/O il y a la mega, ou encore les multiplexeurs ... tout dépend de ton projet.
A+

ok. donc on voit qu un seul device.
merci :slight_smile:
question: y a t il une fonction pour merger en une seule chaine de carcatere, plusieurs chaines ? ( je suppose qu une seule execution print est préférable à plusieurs print )
(j en profite :wink: )

Bonjour Karistouf, tu va bien ???

oui, bon, moi, je me met tous juste à Arduino, je doit recevoir mon module demain je pense...

Mais je sent que ça va m'amuser bien.
Projets MIDI et DMX en vue, histoire de créer des instruments electro-acoustiques, pour un futur spectacle.

c'est bien white cat, mes chats adorent. ( j'en ai un blanc qui est fan ) :wink:

merci neoirto pour tes réponses, j'attend maintenant mon module tout frais de chez lextronic...

ca fait plaisir de te lire christian, un bail qu on ne s est croisés :wink:

ok. donc on voit qu un seul device.
merci Smiley

Oui

question: y a t il une fonction pour merger en une seule chaine de carcatere, plusieurs chaines ? ( je suppose qu une seule execution print est préférable à plusieurs print )

Non il est préférable de faire plusieurs print. ( sans hésitation ).

A+

merci pour le sans hesitation

:wink: