Dans cette partie de notre site internet vous trouverez les codes que nous avons utilisé dans notre TPE. Il contient le premier code du traducteur franco-morse, ainsi que la deuxième version. Cette page contient également le code de l automatisation de l émission du code morse avec la carte Arduino. Version 1.1 // Bonjour et bienvenue dans cette traduction en français de notre // programme de morse // la première chose à dire est que les lignes qui commence par // // ne compte pas dans le programme donc je m en servirais pour vous // expliquer le code : #include <stdio.h> #include <string.h> // les «includes» servent à inclure des librairies c est-à-dire des dossiers qui contiennent des fonctions dont nous aurons besoin int main(int argc, const char * argv[]) // cette ligne est obligatoire elle dit au compilateur que le programme commence ici. int lettre; // la nous initialisons des variables quand une variable commence par INT c est que elle est de type nombre quand elle commence par CHAR c est que elle est de type «lettre» char mot; int choix; int infini = 10; char a[] = "010110"; char b[] = "0110101010"; char c[] = "01101011010"; // ici j initialise des variables de type lettre (car elle sont entre mais j en ai plusieurs grâce au []. Cela ne sert à définir que la D par exemple contient un bip long (0110) et de deux bip court(010) char d[] = "01101010"; char e[] = "010"; char f[] = "0101011010"; char g[] = "011011010"; char h[] = "010101010"; char i[] = "01010"; char j[] = "010110110110"; char k[] = "011010110"; char l[] = "0101101010"; char m[] = "0110110"; char n[] = "011010"; char o[] = "0110110110"; char p[] = "01011011010";
char q[] = "011011010110"; char r[] = "01011010"; char s[] = "0101010"; char t[] = "0110"; char u[] = "01010110"; char v[] = "0101010110"; char w[] = "01101001010"; char x[] = "010110110"; char y[] = "011010110110"; char z[] = "01101101010"; printf("\n\n"); // la fonction printf sert à afficher et ici les \n servent à sauter à la ligne. ********************MENU******************* Bienvenue dans le programme de traduction du morse en français crée par les membres du tpe Entrez le numero du programme que vous-voulez executer: 1.Les membres 2.Programme de traduction ******************************************* scanf("%d", &choix); // la fonction scanf sert à reconnaître ce que l utilisateur va rentrer ici nous devons entrer un nombre qui sera enregistré dans la variable choix switch(choix) // la fonction switch sert à dire si choix est égal à un, faire ce qui est contenu dans case 1, si choix est égal a 2, faire ce qui est contenu dans case 2. case 1: printf("les membres sont: \n\n"); printf("caruso Louis\n"); printf("simonin Corentin\n"); printf("couchot Adrien\n"); printf("blind Lydie\n"); break; case 2:
printf("si vous-voulez commencez la traduction appuyer sur 1\n"); scanf("%d", &lettre); // comme avant scanf regarde ce que l utilisateur entre, puis il est place à la variable dans «lettre» if (lettre == 1) printf("entrez le mot lettre par lettre\n"); do // la fonction do est terminée par une fonction while qui dit que il faut faire ça à l infini puisque tant que infini est égal à 10 il faut le faire sachant que infini ne change jamais ça le fera en permanence. scanf("\n%s",&mot); // comme tout à l heure la fonction sert à copier ce que l utilisateur entre et l enregistre dans la variable mot. // si la fonction if dit que si la lettre enregistrée dans la variable mot est égal à 97 il faut écrire la variable à qui correspondait tout à l heure à 010110. Si vous me demandez pourquoi le nombre 97 et pas «a» je vous dirais simplement qu il faut se référer à la table ASCII qui dit qu en informatique la lettre «a» correspond au nombre 97 puisque les machines ne comprennent pas les lettres. Ainsi «b» correspond au nombre 98, «c» au 99 et ainsi de suite if(mot == 97) printf("%s",a); if(mot == 98) printf("%s",b); if(mot == 99) printf("%s",c); if(mot == 100) printf("%s",d); if(mot == 101) printf("%s",e); if(mot == 102) printf("%s",f); if(mot == 103) printf("%s",g);
if(mot == 104) printf("%s",h); if(mot == 105) printf("%s",i); if(mot == 106) printf("%s",j); if(mot == 107) printf("%s",k); if(mot == 108) printf("%s",l); if(mot == 109) printf("%s",m); if(mot == 110) printf("%s",n); if(mot == 111) printf("%s",o); if(mot == 112) printf("%s",p); if(mot == 113) printf("%s",q); if(mot == 114) printf("%s",r); if(mot == 115) printf("%s",s); if(mot == 116) printf("%s",t); if(mot == 117) printf("%s",u); if(mot == 118)
printf("%s",v); if(mot == 119) printf("%s",w); if(mot == 120) printf("%s",x); if(mot == 121) printf("%s",y); if(mot == 122) printf("%s",z); while(infini == 10); // ici c est la fonction qui ne s arrêtera pas break; return 0; // cette fonction donne la fin du programme et remet toutes les variables qu on a initialisé à la valeur zéro mais il ne nous sert pas car la boucle qu on a créé est infini, le programme ne passera donc jamais par cette fonction sauf si on l arrête de force. La version 1.2 // la plupart des fonctions utilisées dans le code précédent seront les mêmes dans celui-là.
#include <stdio.h> #include <stdlib.h> // on inclut diverse librairies qui nous seront utiles #include <string.h> #include <ctype.h> static const char *convert(char caractere); // on avertit le compilateur que on a frabriqué une fonction int main(void) // c est la boucle principale int choix; int entree; static const char *sortie; ********************MENU******************* Bienvenue dans le programme de traduction du morse en franáais crèe par les membres du tpe Entrez le numero du programme que vous-voulez executer: 1.Les membres 2.Programme de traduction ******************************************* scanf("%d", &choix); switch(choix) case 1: printf("les membres sont: \n\n"); printf("caruso Louis\n"); printf("simonin Corentin\n"); printf("couchot Adrien\n"); printf("blind Lydie\n\n"); printf("veuillez entrer la phrase a traduire :"); // cequi suit est un peu compliqué mais concrètement, ce petit morceau de code va chercher les lettres en français et va les associés au code morse et il fait cela jusqu à ce que le mot soit fini et après il passe au suivant. while ((entree = getchar())) sortie = convert(tolower(entree)); if (sortie == NULL) putchar('\n'); else
printf("%s", sortie); fflush(stdout); break; case 2: printf("veuillez entrer la phrase a traduire :"); while ((entree = getchar())) sortie = convert(tolower(entree)); if (sortie == NULL) putchar('\n'); else printf("%s", sortie); fflush(stdout); break; return 0; // ici c est la fonctionne qui permet d associé à une lettre un code en morse static const char *convert(char caractere) static const char *tablecaracteres = "abcdefghijklmnopqrstuvwxyz0123456789 "; /* *INDENT-OFF* */ static const char *tableconvertie[] = ".- ", "-... ", "-.-. ", "-.. ", ". ", /* abcde */ "..-. ", "--. ", "... ", ".. ", ".--- ", /* fghij */ "-.- ", ".-.. ", "-- ", "-. ", "--- ", /* klmno */ ".--. ", "--.- ", ".-. ", "... ", "- ", /* pqrst */ "..- ", "...- ", ".-- ", "-..- ", "-.-- ", /* uvwxy */ "--.. ", "----- ", ".---- ", "..--- ", "...-- ", /* z0123 */ "...- ", "... ", "-... ", "--... ", "---.. ", /* 45678 */ "----. ", " " /* 9[ESPACE] */ ; /* *INDENT-ON* */ const char *pcaractere = strchr(tablecaracteres, caractere);
if (pcaractere == NULL) return NULL; else return tableconvertie[pcaractere - tablecaracteres]; // L avantage de ce second code est qu il traduit toute la phrase en une fois, alors que avec le premier code on devait entrer le mot lettre par lettre. Programme de la carte Arduino : // Ce programme nous sert pour l automatisation de l émission du code morse. int led = 13; // on initialise la broche sur laquelle on branche l Arduino int ab; // on initialise la variable qui contientra ce que l utilisateur a envoyé void a(); // on initialise toutes les fonction (une pour chaque lettre) void b(); void c(); void d(); void e(); void f(); void g(); void h(); void i(); void j(); void k(); void l(); void m(); void n(); void o(); void p(); void q(); void r(); void s(); void t(); void u(); void v(); void w(); void x(); void y(); void z(); void space(); // cette boucle est spécifique au langage Arduino, elle sert d initialisation
void setup() pinmode(led, OUTPUT); // on definit le piezo-buzzer comme une sortie Serial.begin(9600); // on prévient qu on utilisera l interface sur l ordinateur (s appelant le Serial) // cette boucle est spécifique au langage Arduino, et elle s exécute à l infini void loop() ab = Serial.read(); // la variable ab récupère ce que l utilisateur a écrit if(ab == 97) // si la variable est égale a 97 (97=a dans la table ASCII) on exécute la fonction a() et ainsi de suite a(); if(ab == 98) b(); if(ab == 99) c(); if(ab == 100) d(); if(ab == 101) e(); if(ab == 102) f(); if(ab == 103) g(); if(ab == 104) h(); if(ab == 105) i(); if(ab == 106) j(); if(ab == 107) k(); if(ab == 108) l(); if(ab == 109) m(); if(ab == 110) n(); if(ab == 111) o(); if(ab == 112) p(); if(ab == 113) q(); if(ab == 114) r(); if(ab == 115) s(); if(ab == 116) t(); if(ab == 117)
u(); if(ab == 118) v(); if(ab == 119) w(); if(ab == 120) x(); if(ab == 121) y(); if(ab == 122) z(); if(ab == 32) space(); // ici se trouve toutes les variables de l alphabet et sont traduit en code morse. void a() // on allume la broche «led» qui est celle du piezo // on attend 500 millisecondes // on l éteint void b() void c()
void d() void e() void f() void g()
void h() void i() void j()
void k() void l() void m()
void n() void o() void p() void q()
void r() void s() void t() void u()
void v() void w() void x()
void y() void z() void space()