Arduino : 1.5.7 (Windows 8), Carte : "Arduino Due (Programming Port)"
Emission.ino: In function 'void setup()':
Emission.ino:3:34: error: no matching function for call to 'UARTClass::begin(int, unsigned int)'
Emission.ino:3:34: note: candidate is:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:38:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/Arduino.h:189,
from Emission.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/UARTClass.h:41:10: note: virtual void UARTClass::begin(uint32_t)
void begin( const uint32_t dwBaudRate ) ;
^
C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/UARTClass.h:41:10: note: candidate expects 1 argument, 2 provided
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.
C'est spécifié que l'on peut réglé la vitesse de transmission que l'on souhaite. J'ai l'impression que c'est juste le 2ème paramètre qui pose problème...
floppp:
J'ai l'impression que c'est juste le 2ème paramètre qui pose problème...
Si tu vas regarder dans UARTClass.h tu verras que cette possibilité n'est pas implémentée.
Il n'y a que la forme begin(baudrate) qui soit définie pour la Due
On ne peut donc pas changer ce paramètre?
Je n'ai pas le choix, la configuration par défaut (bits de données, pas de parité, 1 bit de stop) ne convient pas pour mon application...
Comment faire si il me faut bits de données, pas de parité et 2 bits de stop?
Je suis allez voir ce topic, merci ; mais je n'ai aps tout compris.
Il est spécifié qu'avec la classe Hardware.Serial, on ne peut pas changer le 2nd paramètre?
En quoi télécharger la version ide-1.5 va permettre de faire fonctionner la fonction?
J'ai bien la dernière version (1.5.7), mais je n'ai pas totalement compris à quoi servait github.
Je suis en revanche d'accord avec ce que ydkim a écrit sur le forum anglais :
for Arduino uno or mega
/hardware/arduino/avr/cores/arduino/HardwareSerial.h (This has defines e.g. SERIAL_7E1)
for Arduino Due
/hardware/arduino/sam/cores/arduino/hardwareSerial.h ( There is no define for config)
Comment faire pour définir les mêmes configurations pour la DUE?
Je continues mon avancée en essayant de comprendre.
En fouillant dans UARTClass.h dans le répertoire sam, je m'aperçois qu'aucune fonction ne détaille le deuxième paramètre de void.begin : void begin( const uint32_t dwBaudRate ) ;
En revanche, en allant dans USARTClass.h, tout est définit : void begin( const uint32_t dwBaudRate , const uint32_t config ) ;
Il suffisait donc juste de passer sur le port UART1? Quand je test mon nouveau code, cela fonctionne :
floppp:
J'ai bien la dernière version (1.5.7), mais je n'ai pas totalement compris à quoi servait github.
Github c'est un espace de codage collaboratif. La problématique de base est simple : imagine que tu travailles avec d'autres personnes sur une librairie : tu fais des modif, un autre en fait etc ... sans github c'est le bordel : vous vous envoyez les fichiers dès qu'il y a une modif, faut les recopier dans une nouvelle etc ... La il y a un fichier central dans le cloud et toutes les personnes autorisée peuvent faire des modifs, les valider, les annuler ...
De plus même quelqu'un de l'exterieur peut suggérer des modifications, c'est d'ailleurs très courant sur arduino, ça permet notamment de proposer des corrections de bug ou des améliorations.
Chose également utile, tu peux synchroniser to github à tes fichiers sur ton PC, ainsi dès que tu fais des modif sur une librairie de ton pc par exemple, tu peux directement injecter les modif sur le github. De même que si tu n'as pas ton PC sous la main, tu peux bosser sur github, et en rentrant synchronisé ton pc pour récurer les modifs
Autre petite question, comment fait-on pour envoyer (toujours sur UART1), un niveau (haut ou bas) d'une certaine durée, mais qui ne prennent pas en compte la configuration du mon UART?
Par exemple, j'envoie un niveau de repos (exemple à 1) d'une certaine durée, et ensuite je commence ma transmission (avec mes bits de données,bits de stop, ...)
J'espère que vous avez compris. En fait je veux juste envoyez un niveau haut ou bas sur ma ligne, d'une certaine durée.
Qu'on m'arrête si je me trompe, je n'ai jamais tenté l'expérience et y'a peut-être une autre méthode : il suffit simplement de configuré le pin TX en OUTPUT, et de faire des digitalWrite() puis de relancer Serial1.begin() pour remettre le pin dans son état "normal"
Tout à fait B@tto, je tente de faire du DMX à la main, pour ensuite faire une fonction complète de DMX pour mon Arduino DUE.
EN effet, jepensais procéder de la sorte, car je ne vois pas comment on pourrait faire autrement...
Le problème est que l'on est pas très précis en utilisant un digitalWrite (en regardant à l'oscillo, j'obtient 92µs pour 88µs dans mon programme et 13µs pour 8µs établit dans mon programme).
L'utilisation digitalWrite + delayMicroseconds ne me semble pas très précise...