Bonjour je suis actuellement en projet de 3ème année à la fac, je code une radio avec un module AD9850, le but de base est de faire de la modulation de fréquence 8 FSK (Code OLIVIA en radioamateur) Mais pour avancer à mon rythme je suis passé par plusieurs étapes, j'ai dans un premier temps réalisé un programme pour faire une modulation RTTY, et je suis maintenant en train d'essayer de faire du CONTESTIA.
Je ne vais pas rentrer dans les détails, s'il y a des questions je répondrais en dessous.
Concrètement, le problème que j'ai actuellement :
Je demande une suite de texte dans la console que je stocke dans un tableau, je convertis ensuite ce tableau en suite binaire, je me retrouve alors avec une suite binaire du code ascii (sur 8 bits) et j'aimerais maintenant trier les bits par paquets de 3 en leur attribuant une variable.
Je m'explique,
Prenons par exemple AB : 0100000101000010
J'aimerais créer 8 conditions qui sont les suivantes :
000 = f0
001 = f0+Δf
010 = f0+2Δf
...
111 = f0+7Δf
Et j'aimerais comparer dans l'ordre mon tableau avec ces conditions, par exemple 0100000101000010 je commence avec les 3 premiers bit et je dit que 010 = f0+2Δf et je stocke tout ça dans un nouveau tableau et ainsi de suite avec tout les autres.
Tout ceci me permettra de moduler en fréquence chaque paquet de 3 bits pour les émettre, pour la partie émission je devrais me débrouiller, j'aimerais juste savoir comment transformer ma suite binaire en paquet de 3 bits associés à des variables, le tout dans des tableaux.
Je ne me rend pas trop compte de la difficulté de cela et si quelqu'un pourra m'aider, mais voici le code que j'ai pour le moment :
#include "EF_AD9850.h"
#include <stdint.h>
/*Transmission paramèteres*/
/*----------------------------------------------------------------------*/
float FREQ;
#define OFFSET 31.25
/*----------------------------------------------------------------------*/
/*AD9850 - Branchements Arduino*/
/*----------------------------------------------------------------------*/
//CLK - D11, FQ - D10, DATA - D9, RST - D8
#define CLK 11
#define FQ 10
#define DATA 9
#define RST 8
/*----------------------------------------------------------------------*/
/*Tableau chaîne de caractères*/
/*----------------------------------------------------------------------*/
char message[200];
/*----------------------------------------------------------------------*/
/*AD9850 - Définition des ports*/
/*----------------------------------------------------------------------*/
EF_AD9850 AD9850(CLK, FQ, DATA, RST);
/*----------------------------------------------------------------------*/
void setup()
{
/*AD9850 - Initialisation et initialisation moniteur série*/
/*----------------------------------------------------------------------*/
AD9850.init();
AD9850.reset();
Serial.begin(9600);
/*----------------------------------------------------------------------*/
/*AD9850 - Configuration de la fréquence*/
/*----------------------------------------------------------------------*/
Serial.println("Quel est votre fréquence ?");
while (Serial.available() == 0) {
;
}
FREQ = Serial.parseFloat();
Serial.print("Votre fréquence est : "); Serial.println(FREQ);
/*----------------------------------------------------------------------*/
}
void loop()
{
/*Demande chaîne de caractères ascii et conversion en binaire*/
/*----------------------------------------------------------------------*/
while(Serial.available() != 0)
{
(void)Serial.read(); //remove Newline charcater from buffer
}
Serial.println("Quel est votre message ?");
while (Serial.available() == 0)
{
;
}
byte m = Serial.readBytesUntil('\n', message, 200);
message[m] = '\0'; //insert null-charcater
Serial.print("Le message transmis est : "); Serial.println(message);
Serial.println();
Serial.println(" En binaire : ");
for (int i=0;i<strlen(message);i++) // loop through all chars in string (from 'first letter' to 'last letter')
{
for (int j=7;j>=0;j--) // loop from bit-7 down to bit-0 (high-bit to low-bit)
Serial.print(bitRead(message[i],j)); // from message[i] read the bit-j and print it
}
Serial.println();
Merci par avance