Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/04/2013 #1

Avatar de alexus

CW (Telegrafia) con Arduino.
Buenas noches!

Poseo un ARDUINO DUEMILANOVE el cual utilizo para recrearme y aprender armando proyectos que luego desmonto.

El tema es el siguiente, quiero representar una secuencia de telegrafia mediante el LED del pin 13.

Para comenzar, la secuencia es la siguiente:

-.-. / -..- / -.... / -.. / .-. / .- /

Donde cada raya "equivale" a tres puntos (la duracion de los mismos) y cada espacio tiene la duracion de un punto.

Hasta aqui bien, escribo el codigo usando para rayas, puntos y espacios lo siguiente:

Código:
digitalWrite(13, HIGH);   //RAYA
  delay(300);

digitalWrite(13, HIGH);    //PUNTO
  delay(100); 

digitalWrite(13, LOW);    //ESPACIO
  delay(100);
Pero cuando compilo y programo, no visualizo lo que espero los tiempos son largos y la secuencia es amorfa no como una "tonada musical"...

Espero me puedan dar una mano, a ver donde estoy errando.

Desde ya gracias!!
29/04/2013 #2
Moderador

Avatar de Chico3001

jajajaja.. precisamente el sabado fui a un curso de arduino y vimos ese ejemplo... aqui te lo dejo...

Código PHP:
/*
 * Codigo Morse
 *
 * Este programa traduce una cadena de caracteres en codigo morse 
 * y lo interpreta con un led.
 */

//Se define una variable para manejar el numero del pin del led0
int led0Pin 13;
//Se define una variable para manejar el numero del pin del led1
int led1Pin 2;
//Se define una variable para manejar el numero del pin del buzzer
int buzzer 3;

//Se declara una variable con la duracion de la pulsacion del punto
int dotDelay 200;

//Se define un arreglo con la tabla de equivalencia del alfabeto
charletters[] =
{
  
".-""-...""-.-.""-.."".""..-.""--.""...."".."// A-I
  
".---""-.-"".-..""--""-.""---"".--.""--.-"".-."// J-R
  
"...""-""..-""...-"".--""-..-""-.--""--.." // S-Z
};

//Se define un arreglo con la tabla de equivalencia de los numeros
charnumbers[] =
{
  
"-----"".----""..---""...--""....-"".....""-...."//0-6
  
"--...""---..""----." //7-9
};

//Esta funcion establece la configuracion del Arduino
void setup()
{
  
//Se indica que los pines de los led y el buzzer seran puerto de salida digital
  
pinMode(led0PinOUTPUT);
  
pinMode(led1PinOUTPUT);
  
pinMode(buzzerOUTPUT);
  
//Se establece el puerto serial a una conexion de 9600 baudios por segundo
  
Serial.begin(9600);
}

//Esta funcion es ejecutada infinitamente por el Arduino
void loop()
{
  
char ch;
  
//Si se recibe algo en el puerto serial
  
if (Serial.available())
  {
    
//Leemos cada caracter obtenido en el puerto serial
    
ch Serial.read();
    
//Si el caracter es letra minuscula
    
if (ch >= 'a' && ch <= 'z')
    {
      
flashSequence(letters[ch 'a']);
    }
    
//Si el caracter es letra mayucula
    
else if (ch >= 'A' && ch <= 'Z')
    {
      
flashSequence(letters[ch 'A']);
    }
    
//Si el caracter es digito
    
else if (ch >= '0' && ch <= '9')
    {
      
flashSequence(numbers[ch '0']);
    }
    
//Si es espacio
    
else if (ch == ' ')
    {
      
//Transmito espacio
      
delay(dotDelay 4);
    }
  }
}

//Funcion que permite trasnmitir la secuencia de caracteres
//en codigo Morse
void flashSequence(charsequence)
{
  
//Iniciamos una variable en 0
  //para recorrer la secuencia de caracteres
  
int i 0;
  
//Mientras la secuencia sea diferente de null
  
while (sequence[i] != NULL)
  {
    
//Indico si es punto o raya
    
flashDotOrDash(sequence[i]);
    
//Aumento i para ir avanzando en el arreglo
    
i++;
  }
  
//Espacio entre letras
  
delay(dotDelay 3);
}

//Funcion que indica si transmitir punto o guion
void flashDotOrDash(char dotOrDash)
{
  
//Establecemos los led y el buzzer en estado alto
  
digitalWrite(led0PinHIGH);
  
digitalWrite(led1PinHIGH);
  
digitalWrite(buzzerHIGH);
  
//Si es punto
  
if (dotOrDash == '.')
  {
    
//Espero el tiempo indicado para indicar que es un punto
    
delay(dotDelay);
  }
  
//Si es guion
  
else
  {
    
//Espero el tiempo indicado para indicar que es un guion
    
delay(dotDelay 3);
  }
  
//Establecemos los led y el buzzer en estado bajo
  
digitalWrite(led0PinLOW);
  
digitalWrite(led1PinLOW);
  
digitalWrite(buzzerLOW);
  
//Tiempo de espera entre secuencia de caracteres
  
delay(dotDelay);

29/04/2013 #3

Avatar de alexus

Gracias por tu respuesta!!

Voy a intentar dijerir ese codigo!

Puedes hacer algun comentario al respecto?
29/04/2013 #4
Moderador

Avatar de Chico3001

Me lo robe de la computadora del conferencista... xDDD

jajajaja no es cierto...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.