Bonjour, j'essaie de faire fonctionner un code dont le but la lecture d'un poème en morse.
J'ai déjà bien avancé mais ça tourne pas comme je veux.
le code doit pouvoir lire chaque charactère des lignes d'un tableau avant de passer à la ligne suivante et faire de même, jusqu'à la fin du poème et recommencer...
Je passe le problème des caractères spéciaux que je verrai après (cependant si vous avez des conseils je suis preuneur)
Le reste marche presque mais pas comme il faut : le code lis bien la suite de charactère, mais de manière chaotique au changement de string...
Pouvez vous m'aider ? je suis un peu perdu avec strcpy_P(buffer, (char *)pgm_read_word(&(string_table[i])));
Je pense que c'est parce qu'il y a des conflis avec d'autres fonctions mais j'échoue faire fonctionner correctement ce code ...
merci d'avance
Hello, I am trying to get a code to work whose purpose is to read a poem in morse code.
I've already made good progress but it's not going the way I want.
the code must be able to read each character of the lines of a table before going to the next line and doing the same, until the end of the poem and starting again...
I pass the problem of special characters that I will see after (however if you have advice I am interested)
The rest works almost but not as it should: the code reads the character sequence, but in a chaotic way when changing the string...
Can you help me ? I'm a bit lost with strcpy_P(buffer, (char *)pgm_read_word(&(string_table[i])));
I think it's because there are conflicts with other functions but I'm failing to get this code to work properly...
thanks in advance
`sai/* TRANSMISSION OF A POEM IN MORSE
this program written by Guilhem Toll
*/
// inclusion bibliothèque PROGMEM
#include <avr/pgmspace.h>
//Mise en mémoire Poème (C'est le premier sonnet écrit par Théophile Gautier...)
const char myStrings_0[] PROGMEM = "SOLITUDE";
const char myStrings_1[] PROGMEM = " ";
const char myStrings_2[] PROGMEM = "Je bande trop dans ma culotte";
const char myStrings_3[] PROGMEM = "Je sors mon vit qui décalotte";
const char myStrings_4[] PROGMEM = " Son champignon";
const char myStrings_5[] PROGMEM = "Etre à midi, seul dans ma chambre,";
const char myStrings_6[] PROGMEM = "En tete à tete avec son membre,";
const char myStrings_7[] PROGMEM = " C’est du guignon !";
const char myStrings_8[] PROGMEM = " ";
PGM_P const string_table[] PROGMEM = {myStrings_0,
myStrings_1,
myStrings_2, myStrings_3, myStrings_4,
myStrings_5, myStrings_6, myStrings_7,
myStrings_8
};
const int Nombre_de_myStrings = 9;
#define ledPin (13) // sets pin 13 as the pin to which the LED light is attached
const byte time_base = 200; // sets rythm's time base of morse transmission
const byte dot_time = time_base; // sets a dot time
const int dash_time = 3 * time_base; // sets a dash time
const int inter_char_time = 3 * time_base; // sets a interval chars time
const int space_time = 7 * time_base; // sets a space inter word chars time (space char)
// The other space time are generated by several space char
//const int paragraph_break_time = 35 * time_base;
boolean dot = false;
boolean dash = false;
boolean end_of_char = false ;
boolean inter_letter = false ;
boolean space = false;
unsigned long actualTime = 0 ;
unsigned long lastDotTime = 0;
byte intervalDotTime = time_base;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // sets the serial keyboard to 9600 speed
while (!Serial); // wait for serial port to connect. Needed for native USB
Serial.println("OK");
}
void loop() {
//actualTime = millis();
Read_Text ();
}
void Read_Text() {
for (int i = 0; i < Nombre_de_myStrings /*buffer - 1*/; i++) {
Serial.println(i);
char buffer [sizeof(string_table[i])];
Serial.println(string_table[i]);
// delay(20);
strcpy_P(buffer, (char *)pgm_read_word(&(string_table[i]))); // Necessary casts and dereferencing, just copy.
//Serial.println(string_table[i]);
// int length = string_table.length();
for (int j = 0; j < sizeof(string_table[i]) ; j++) {
// Serial.println(string_table[i]);
Serial.print(buffer[j]);
Serial.print(" ");
// Morse code for a space (delay of seven dots)
if (buffer[j] == ' ') {
Serial.println (" ");
Space();
}
// Morse code for a (dot dash)
if (buffer[j] == 'a' || buffer[j] == 'A' || buffer[j] == 'à' || buffer[j] == 'â') { // checks if letter a was typed on serial
Serial.println (". _");
Dot();
Dash();
EndOfChar();
}
// Morse code for b (dash dot dot dot)
if (buffer[j] == 'b' || buffer[j] == 'B') {
Serial.println ("_ . . .");
Dash();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for c (dash dot dash dot)
if (buffer[j] == 'c' || buffer[j] == 'C' || buffer[j] == 'ç') {
Serial.println ("_ . _ .");
Dash();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for d (dash dot dot)
if (buffer[j] == 'd' || buffer[j] == 'D') {
Serial.println ("_ . .");
Dash();
Dot();
Dot();
EndOfChar();
}
//Morse code for e (dot)
if (buffer[j] == 'e' || buffer[j] == 'E' || buffer[j] == 'é' || buffer[j] == 'É' || buffer[j] == 'è' || buffer[j] == 'È' || buffer[j] == 'ê' || buffer[j] == 'Ê') {
Serial.println (".");
Dot();
EndOfChar();
}
// Morse code for f (dot dot dash dot)
if (buffer[j] == 'f' || buffer[j] == 'F') {
Serial.println (". . _ .");
Dot();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for g (dash dash dot)
if (buffer[j] == 'g' || buffer[j] == 'G') {
Serial.println ("_ _ .");
Dash();
Dash();
Dot();
EndOfChar();
}
// Morse code for h (dot dot dot dot)
if (buffer[j] == 'h' || buffer[j] == 'H') {
Serial.println (". . . .");
Dot();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for i (dot dot)
if (buffer[j] == 'i' || buffer[j] == 'I' || buffer[j] == 'î' || buffer[j] == 'Î') {
Serial.println (". .");
Dot();
Dot();
EndOfChar();
}
// Morse code for j (dot dash dash dash)
if (buffer[j] == 'j' || buffer[j] == 'J') {
Serial.println (". _ _ _");
Dot();
Dash();
Dash();
Dash();
EndOfChar();
}
// Morse code for k (dash dot dash)
if (buffer[j] == 'k' || buffer[j] == 'K') {
Serial.println ("_ . _");
Dash();
Dot();
Dash();
EndOfChar();
}
// Morse code for l (dot dash dot dot)
if (buffer[j] == 'l' || buffer[j] == 'L') {
Serial.println (". _ . .");
Dot();
Dash();
Dot();
Dot();
EndOfChar();
}
// Morse code for m (dash dash)
if (buffer[j] == 'm' || buffer[j] == 'M') {
Serial.println ("_ _");
Dash();
Dash();
EndOfChar();
}
// Morse code for n (dash dot)
if (buffer[j] == 'n' || buffer[j] == 'N') {
Serial.println ("_ .");
Dash();
Dot();
EndOfChar();
}
// Morse code for o (dash dash dash)
if (buffer[j] == 'o' || buffer[j] == 'O' || buffer[j] == 'ô' || buffer[j] == 'Ô') {
Serial.println ("_ _ _");
Dash();
Dash();
Dash();
EndOfChar();
}
// Morse code for p (dot dash dash dot)
if (buffer[j] == 'p' || buffer[j] == 'P') {
Serial.println (". _ _ .");
Dot();
Dash();
Dash();
Dot();
EndOfChar();
}
// Morse code for q (dash dash dot dash)
if (buffer[j] == 'q' || buffer[j] == 'Q') {
Serial.println ("_ _ . _");
Dash();
Dash();
Dot();
Dash();
EndOfChar();
}
// Morse code for r (dot dash dot)
if (buffer[j] == 'r' || buffer[j] == 'R') {
Serial.println (". _ .");
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for s (dot dot dot)
if (buffer[j] == 's' || buffer[j] == 'S') {
Serial.println (". . .");
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for t (dash)
if (buffer[j] == 't' || buffer[j] == 'T') {
Serial.println ("_");
Dash();
EndOfChar();
}
// Morse code for u (dot dot dash)
if (buffer[j] == 'u' || buffer[j] == 'U' || buffer[j] == 'û' || buffer[j] == 'Û') {
Serial.println (". . _");
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for v (dot dot dot dash)
if (buffer[j] == 'v' || buffer[j] == 'V') {
Serial.println (". . . _");
Dot();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for w (dot dash dash)
if (buffer[j] == 'w' || buffer[j] == 'W') {
Serial.println (". _ _");
Dot();
Dash();
Dash();
EndOfChar();
}
// Morse code for x (dash dot dot dash)
if (buffer[j] == 'x' || buffer[j] == 'X') {
Serial.println ("_ . . _");
Dash();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for y (dash dot dash dash)
if (buffer[j] == 'y' || buffer[j] == 'Y') {
Serial.println ("_ . _ _");
Dash();
Dot();
Dash();
Dash();
EndOfChar();
}
// Morse code for z (dash dash dot dot)
if (buffer[j] == 'z' || buffer[j] == 'Z') {
Serial.println ("_ _ . .");
Dash();
Dash();
Dot();
Dot();
EndOfChar();
}
// Morse code for 1 (dot dash dash dash dash)
if (buffer[j] == '1') {
Serial.println (". _ _ _ _");
Dot();
Dash();
Dash();
Dash();
Dash();
EndOfChar();
}
// Morse code for two (dot dot dash dash dash)
if (buffer[j] == '2') {
Serial.println (". . _ _ _");
Dot();
Dot();
Dash();
Dash();
Dash();
EndOfChar();
}
// Morse code for 3 (dot dot dot dash dash)
if (buffer[j] == '3') {
Serial.println (". . . _ _");
Dot();
Dot();
Dot();
Dash();
Dash();
EndOfChar();
}
// Morse code for 4 (dot dot dot dot dash)
if (buffer[j] == '4') {
Serial.println (". . . . _");
Dot();
Dot();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for 5 (dot dot dot dot dot)
if (buffer[j] == '5') {
Serial.println (". . . . .");
Dot();
Dot();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for 6 (dash dot dot dot dot)
if (buffer[j] == '6') {
Serial.println ("_ . . . .");
Dash();
Dot();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for 7 (dash dash dot dot dot)
if (buffer[j] == '7') {
Serial.println ("_ _ . . .");
Dash();
Dash();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for 8 (dash dash dash dot dot)
if (buffer[j] == '8') {
Serial.println ("_ _ _ . .");
Dash();
Dash();
Dash();
Dot();
Dot();
EndOfChar();
}
// Morse code for 9 (dash dash dash dash dot)
if (buffer[j] == '9') {
Serial.println ("_ _ _ _ .");
Dash();
Dash();
Dash();
Dash();
Dot();
EndOfChar();
}
// Morse code for 0 (dash dash dash dash dash)
if (buffer[j] == '0') {
Serial.println ("_ _ _ _ _");
Dash();
Dash();
Dash();
Dash();
Dash();
EndOfChar();
}
// Morse code for ? (dot dot dash dash dot dot)
if (buffer[j] == '?') {
Serial.println (". . _ _ . .");
Dot();
Dot();
Dash();
Dash();
Dot();
Dot();
EndOfChar();
}
// Morse code for ! (dash dot dash dot dash dash)
if (buffer[j] == '!') {
Serial.println ("_ . _ . _ _");
Dash();
Dot();
Dash();
Dot();
Dash();
Dash();
EndOfChar();
}
// Morse code for . (dot dash dot dash dot dash)
if (buffer[j] == '.') {
Serial.println (". _ . _ . _");
Dot();
Dash();
Dot();
Dash();
Dot();
Dash();
EndOfChar();
}
// Morse code for ; (dash dot dash dot dash dot)
if (buffer[j] == ';') {
Serial.println ("_ . _ . _ .");
Dash();
Dot();
Dash();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for : (dash dash dash dot dot dot)
if (buffer[j] == ':') {
Serial.println ("_ _ _ . . .");
Dash();
Dash();
Dash();
Dot();
Dot();
Dot();
EndOfChar();
}
// Morse code for , (dash dash dot dot dash dash)
if (buffer[j] == ',') {
Serial.println ("_ _ . . _ _");
Dash();
Dash();
Dot();
Dot();
Dash();
Dash();
EndOfChar();
}
// Morse code for / (dash dot dot dash dot)
if (buffer[j] == '/') {
Serial.println ("_ . . _ .");
Dash();
Dot();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for + (dot dash dot dash dot)
if (buffer[j] == '+') {
Serial.println (". _ . _ .");
Dot();
Dash();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for - (dash dot dot dot dot dash)
if (buffer[j] == '-') {
Serial.println ("_ . . . . _");
Dash();
Dot();
Dot();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for = (dash dot dot dot dash)
if (buffer[j] == '=') {
Serial.println ("_ . . . _");
Dash();
Dot();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for ( (dash dot dash dash dot)
if (buffer[j] == '(') {
Serial.println ("_ . _ _ .");
Dash();
Dot();
Dash();
Dash();
Dot();
EndOfChar();
}
// Morse code for ) (dash dot dash dash dot dash)
if (buffer[j] == ')') {
Serial.println ("_ . _ _ . _");
Dash();
Dot();
Dash();
Dash();
Dot();
Dash();
EndOfChar();
}
// Morse code for _ (dot dot dash dash dot dash)
if (buffer[j] == '_') {
Serial.println (". . _ _ . _");
Dot();
Dot();
Dash();
Dash();
Dot();
Dash();
EndOfChar();
}
// Morse code for $ (dot dot dot dash dot dot dash)
if (buffer[j] == '$') {
Serial.println (". . . _ . . _");
Dot();
Dot();
Dot();
Dash();
Dot();
Dot();
Dash();
EndOfChar();
}
// Morse code for @ (dot dash dash dot dash dot)
if (buffer[j] == '@') {
Serial.println (". _ _ . _ .");
Dot();
Dash();
Dash();
Dot();
Dash();
Dot();
EndOfChar();
}
// Morse code for & (dot dash dot dot dot)
if (buffer[j] == '&') {
Serial.println (". _ . . .");
Dot();
Dash();
Dot();
Dot();
Dot();
EndOfChar();
}
}
}
}
//Serial.println("fin du texte");
void Dot() {
dot = true;
if (dot == true) {
digitalWrite(ledPin, HIGH);
delay (dot_time);
digitalWrite(ledPin, LOW);
delay (dot_time);
dot = false;
}
}
void Dash() {
dash = true ;
if (dash == true) {
digitalWrite(ledPin, HIGH);
delay (dash_time);
digitalWrite(ledPin, LOW);
delay (dot_time);
dash = false;
}
}
void EndOfChar() {
end_of_char = true ;
if (end_of_char == true) {
digitalWrite(ledPin, LOW);
delay (inter_char_time - dot_time);
end_of_char = false ;
}
}
// Morse code for a space (delay of seven dots)
void Space() {
space = true;
if (space == true) {
digitalWrite(ledPin, LOW);
delay(space_time - inter_char_time - dot_time);
space = false;
}
}