Changer des constantes de programme Arduino sur une interface graphique ?

Hello la communauté Arduino !

Je travaille actuellement sur un programme qui permet de contrôler une carte DDS par un Arduino (générer un "chirp pulse" et laisser un blanc derrière). J'ai réussi cette partie, notamment grâce à cet article : http://web.gps.caltech.edu/~gab/docs/arduinoguide.pdf
(Le programme est à la fin)

Cependant, pour des soucis utilitaires, j'ai besoin de construire une "interface graphique" qui me permettrait de changer directement ceci :

/*======Startup register values======*/

const byte CFR1Start [ ] = {0x00 , 0x01 , 0x60 , 0x08 } ;
const byte CFR2Start [ ] = {0x00 , 0x0C , 0x29 , 0x00 } ;
const byte CFR3Start [ ] = {0x00 , 0x00 , 0x19 , 0x1C } ;
const byte CFR4Start [ ] = {0x00 , 0x05 , 0x01 , 0x20 } ;
const byte DRGStart [ ] = {0x00 , 0x00 , 0x00 , 0x00 } ; // Chirp Start
const byte DRGStop [ ] = {0x00 , 0xA3 , 0xD7 , 0x0A } ; // Chirp stop
const byte DRGStepRise [ ] = {0x00 , 0x00 , 0xD7 , 0x17 } ;
const byte DRGStepFall [ ] = {0x00 , 0x72 , 0x38 , 0x4A } ;
const byte DRGRate [ ] = {0x00 , 0x01 , 0x00 , 0x01 } ;
const byte ZeroByte = 0x00 ;
//Command to enable the DAC Cal ,
// should be 0x01XXXXXX, where X is the last 6 digits of CFR4Start
const byte DACCalEnable [ ] = {0x01 , 0x05 , 0x01 , 0x20 } ;

Les valeurs sont en hexadécimales. Je me sers d'un programme tierce fourni avec la carte DDS AD9914 pour connaitre les valeurs dont j'ai besoin.

Néanmoins, ouvrir le code arduino changer toutes ces valeurs manuellement, et tout relancer derrière est assez lourd.

Si quelqu'un a une petite piste que je pourrais exploiter, dans le sens de pouvoir écrire sur une interface simple : "DRGStart = ..." que je convertis en hexa et que j'arrive à envoyer à la bonne place dans le code, je suis preneur :smiley:

Merci à vous d'avance !

PS : Ceci est mon premier poste sur le forum, si j'ai mal fait quelque chose, je vous écoute aussi :smiley:

Re-up :smiley:

Bonjour,

La liaison série de ton Arduino est-elle utilisable pendant son fonctionnement ? Un moyen serait de l'utiliser pour envoyer tes nouvelles valeurs de paramètres... qui du coup ne seraient plus des constantes.

Salut 3Sigma ! Merci de ta réponse !

Je suis un gros noob ! Mais la liaison série est l'USB n'est-ce pas ?
J'utilise juste l'USB pour téléverser mon programme et alimenter l'Arduino. Donc je pense que c'est possible :slight_smile:

Pour les constantes, elles sont... amovibles XD Une partie d'entre elles en tout cas ! Je souhaite modifier les valeurs de :
DRGStart
DRGStop
DRGStepRise
DRGStepFall
DRG Rate
(ces valeurs correspondent à des "rampes" pour générer une sinusoïde qui monte en fréquence)

Par contre, je pensais (naïvement ?) qu'une fois un programme téléversé, il ne pouvait plus être modifié jusqu'au prochain téléversement ?

Krok_Odile:
Par contre, je pensais (naïvement ?) qu'une fois un programme téléversé, il ne pouvait plus être modifié jusqu'au prochain téléversement ?

Le programme non, mais tu peux envoyer des choses sur la liaison série (oui, c'est celle qui passe par le câble USB) pour modifier la valeur de variables.

Tu peux regarder ça (Communication with an Arduino on serial port – MyViz) mais attention, pour l'instant il y a zéro doc et je n'aurai pas le temps de t'aider à court terme.

Merci encore, je comprends mieux ce que je lis !

Je vais creuser cette voie ! Si je parviens à quelque chose, je le posterais ici.

Je regarde en parallèle les fonctions SerialWrite(). Si par exemple au lancement du programme, une petite box apparaît (un peu comme mathlab) et me demande les informations, qui sont converties (ou pas) puis envoyées avec ces fameux SerialWrite(), possible ?

Ta "box" doit être générée sur ton ordi, ce n'est donc pas la carte Arduino qui peut le faire.