Go Down

Topic: software serial (Read 2196 times) previous topic - next topic

cpierredon

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 !

neoirto

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 !

cpierredon

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 !


neoirto

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

Bon beuf  8-)

karistouf

salut christian ;-) ( 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 ) ? :)

neoirto

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 !

karistouf

#6
Aug 28, 2010, 06:26 pm Last Edit: Aug 28, 2010, 06:52 pm by karistouf Reason: 1
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 ?

Teiva

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+


www.Zartronic.fr : Arduino & Robotique

karistouf

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

Teiva

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  :)
A+


www.Zartronic.fr : Arduino & Robotique

karistouf

#10
Aug 28, 2010, 09:50 pm Last Edit: Aug 28, 2010, 10:20 pm by karistouf Reason: 1
ok. compris, et merci.
;)
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 ?

Teiva

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  ;)

A+


www.Zartronic.fr : Arduino & Robotique

karistouf

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?

Teiva

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+


www.Zartronic.fr : Arduino & Robotique

karistouf

ok. donc on voit qu un seul device.
merci :-)
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 ;-)  )

Go Up