Mario A
Morse code translator con beep
Tutorials -
Domenica 25 Marzo 2012 11:04
Scritto da Mario A

Questo articolo illustra come è possibile digitare caratteri e tradurli in codice Morse sentendo il classico beep.

La procedura è molto semplice:

  • bisogna innanzitutto procurarsi la libreria Summer: http://arduino.cc/playground/Code/Summer dove vi è anche la spiegazione dell'uso della stessa
  • collegare un buzzer o un altoparlante piezo al pin 9 e a GND
  • caricare lo sketch qui sotto elencato in Arduino e fare l'upload sulla scheda

( nel listato includere la libreria summer.h tra < e >, non possibile per problemi di formattazione del testo)

 

// Morse code translator con beep

#include summer.h  // Libreria per far eseguire toni o beep ad Arduino

Summer summer = Summer(9);

char* letters[] = {
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // A-I
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z
};
char* numbers[] = {
  "-----", ".----", "..---", "...--", "....-", ".....", "-....",
  "--...", "---..", "----."};
int dotDelay = 40;

void setup()
{
  summer.setTempo(100);
  Serial.begin(9600);

}
void loop()
{
  char ch;
  if (Serial.available()) 
  {
    ch = Serial.read(); // legge il singolo carattere
    if (ch >= 'a' && ch <= 'z')
    {
      flashSequence(letters[ch - 'a']);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
      flashSequence(letters[ch - 'A']);
    }
    else if (ch >= '0' && ch <= '9')
    {
      flashSequence(numbers[ch - '0']);
    }
    else if (ch == ' ')
    {
      delay(dotDelay * 4); // intervallo tra i caratteri
    }
  }
}
void flashSequence(char* sequence)
{
  int i = 0;
  while (sequence[i] != NULL)
  {
    flashDotOrDash(sequence[i]);
    i++;
  }
  delay(dotDelay * 3); // intervallo tra le parole
}
void flashDotOrDash(char dotOrDash)
{
 
  if (dotOrDash == '.')
  {
    delay(dotDelay);
  }
  else // must be a -
  {
    delay(dotDelay * 3);
  }
  summer.beep(1750);
  
  delay(dotDelay); // intervallo tra i beep
}
// Fine

 

una volta che i preliminari sono stati eseguiti correttamente, aprire nell'IDE di Arduino il serial monitor
ed iniziare a scrivere alcune parole, seguite dall'Invio e inizierete a sentire i classici "beep" del codice Morse nell'altoparlante

E' possibile variare il tono del Beep cambiando il valore in summer.beep(nnnn)

come è anche possibile variare l'intervallo della seguenza dei Beep cambiando il valore in int dotDelay = nn


 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi