martes, 15 de noviembre de 2011

Arduino Serial to Morse

Bueno aquí os dejo el ultimo proyecto hecho por mi, el proyecto consiste en un conversor del texto que introducimos a traves de la entrada serie del arduino a código morse que lo emitiremos a través de un pequeño buzzer o altavoz.

Aqui os dejo el video y seguido el codigo fuente para el arduino espero que os guste =)




/*
   Arduino Serial Morse
 
   Este programa permite convertir texto a codigo 
   morse mediante arduino y la entrada serie
 
   El circuito:
   * Solo es necesario conectar el positivo de un 
     buzzer al pin 13 y el negativo a ground
 
     Por D4rkh0s7 - Taller NT
     http://tallernt.blogspot.com
*/

// PIN del arduino al que se conectara el positivo 
// del altavoz
#define PIN 13

// Tono del sonido en HZ
#define FREQ 800

// Tiempo en milisegundos que durara el punto y 
// la raya  sera el este valor multiplicado por 3
#define TIME 50

// Tiempo en milisegundos entre letra y letra
#define TIMELETRA 100

// Tiempo en milisegundos entre palabra y palabra
#define TIMEPALABRA 400

void setup()
{
  //Inicializamos el puerto serie
  Serial.begin(9600);

}

void loop()
{
  //Si detecta que se introduce algun caracter... 
  if(Serial.available()>0)
  {
    char c=Serial.read();
    Serial.println(c);
     switch(c)
     {
        case 'a':
          alfa();
          break;
        case 'b':
          bravo();
          break;
        case 'c':
          charlie();
          break;
        case 'd':
          delta();
          break;
        case 'e':
          echo();
          break;
        case 'f':
          foxtrot();
          break;
        case 'g':
          golf();
          break;
        case 'h':
          hotel();
          break;
        case 'i':
          india();
          break;
        case 'j':
          juliet();
          break;
        case 'k':
          kilo();
          break;
        case 'l':
          lima();
          break;
        case 'm':
          mike();
          break;
        case 'n':
          november();
          break;
        case 'o':
          oscar();
          break;
        case 'p':
          papa();
          break;
        case 'q':
          quebec();
          break;
        case 'r':
          romeo();
          break;
        case 's':
          sierra();
          break;
        case 't':
          tango();
          break;
        case 'u':
          uniform();
          break;
        case 'v':
          victor();
          break;
        case 'w':
          whiskey();
          break;
        case 'x':
          xenon();
          break;
        case 'y':
          yankee();
          break;
        case 'z':
          zulu();
          break;
        case ' ':
          delay(TIMEPALABRA);
          break;
        default:
          break;
     }
   }
}

///////// Punto y raya ////////////

void punto()
{
   // Emite un tono por el pin definido y 
   // a la frecuencia definida antes
   tone(PIN,FREQ);
   
   // Tiempo de espera definido antes
   delay(TIME);
   
   // Detener el tono
   noTone(PIN);
   
   // Tiempo de espera
   delay(TIME); 
   
}

void raya()
{
   tone(PIN,FREQ);
   delay(TIME*3);
   noTone(PIN);
   delay(TIME);
   
}


///////////// LETRAS ////////////

// A
void alfa()
{
  punto();
  raya();
  delay(TIMELETRA);
  
}

// B
void bravo()
{
  raya();
  punto();
  punto();
  punto();
  delay(TIMELETRA);
}

// C
void charlie()
{
  raya();
  punto();
  raya();
  punto();
  delay(TIMELETRA);
  
  
}

// D
void delta()
{
  raya();
  punto();
  punto();
  delay(TIMELETRA);
}

// E
void echo()
{
  punto();
  delay(TIMELETRA);
}

// F
void foxtrot()
{
  punto();
  punto();
  raya();
  punto();
  delay(TIMELETRA);
}

// G
void golf()
{
  raya();
  raya();
  punto();
  delay(TIMELETRA);
}

// H
void hotel()
{
  punto();
  punto();
  punto();
  punto();
  delay(TIMELETRA);
}

// I
void india()
{
  punto();
  punto(); 
  delay(TIMELETRA);
}

// J
void juliet()
{
  punto();
  raya();
  raya();
  raya(); 
  delay(TIMELETRA);
}

// K
void kilo()
{
  raya();
  punto(); 
  raya();
  delay(TIMELETRA);
}

// L
void lima()
{
  punto();
  raya();  
  punto();
  punto();
  delay(TIMELETRA);
}

// M
void mike()
{
  raya();
  raya(); 
  delay(TIMELETRA);
}

// N
void november()
{
  raya();
  punto(); 
  delay(TIMELETRA);
}

// O
void oscar()
{
   raya();
   raya();
   raya();
   delay(TIMELETRA);
}

// P
void papa()
{
  punto();
  raya();
  raya();
  punto();
  delay(TIMELETRA);
}

// Q
void quebec()
{
  raya();
  raya();
  punto();
  raya();
  delay(TIMELETRA);
}

// R
void romeo()
{
  punto();
  raya();
  punto();
  delay(TIMELETRA);
}

// S
void sierra()
{
  punto();
  punto();
  punto();
  delay(TIMELETRA);
}

// T
void tango()
{
  raya();
  delay(TIMELETRA);
}

// U
void uniform()
{
  punto();
  punto();
  raya();
  delay(TIMELETRA);
}

// V
void victor()
{
  punto();
  punto();
  punto();
  raya();
  delay(TIMELETRA);
}

// W
void whiskey()
{
  punto();
  raya();
  raya();
  delay(TIMELETRA);
}

// X
void xenon()
{
  raya();
  punto();
  punto();
  raya();
  delay(TIMELETRA);
}

// Y
void yankee()
{
  raya();
  punto();
  raya();
  raya();
  delay(TIMELETRA);
}

// Z
void zulu()
{
  raya();
  raya();
  punto();
  punto();
  delay(TIMELETRA);

}

martes, 8 de noviembre de 2011

Arduino Led RGB + VisualBasic .net

Con este programita y las salidas PWM del arduino con analogWrite puedo elegir el color que quiera. Mas adelante hare el tutorial un poco mas extendido, de momento aqui os dejo unas fotos.