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. 







viernes, 30 de septiembre de 2011

Arduino + LCD + PWM para el Contraste


Bueno aqui va el primer tutorial, jeje me esta costando darle al fritzing, pero supongo que es como todo, es acostrumbrarse jeje

Aqui va el esquema de como conectar una pantalla LCD paralela estándar con el chip Hitachi HD44780, yo la compre en Bricogeek.com, al final os dejo el enlace a la misma pantalla que tengo yo para que la compréis si no la tenéis =P (Un poco de publicidad no viene mal =P ya que me han tratado muy bien siempre y todo llega al día siguiente y en perfecto estado y de momento estoy muy contento =D )

Lo dicho aquí va el esquema:


Ahora va la explicación:
La única diferencia que yo le he dado al de cualquier esquema que podréis encontrar por internet si buscáis algo sobre la pantallas LCD y arduino, es que yo he conectado el pin 3 de la pantalla (Pin que regula el contraste de la pantalla) a una salida PWM en concreto el pin 9 del arduino (cable amarillo), en el resto de esquemas que encontrareis, incluso los oficiales, suelen utilizar un potenciometro de 10K, yo prefiero regular el voltaje mediante la salida PWM y así poder variar el contraste mediante el software pudiendole dar mas funcionalidad por ejemplo variar el contraste dependiendo de la cantidad de luz que haya en el ambiente con un LDR por ejemplo. 

Ahora un poquito de la parte del software, un pequeño ejemplo del tipico Hola Mundo:

//Incluimos la libreria liquidCrystal.h para poder utilizar sus funciones
#include<liquidCrystal.h>
//Definimos con que pines utilizaremos la pantalla (para mas informacion mirar la referencia)
LiquidCrystal lcd(12,11,5,4,3,2);

void setup()
{
   //Ahora indicamos el tamaño de pantalla 16 columnas x 2 Filas
   lcd.begin(16,2);

   //Indicamos que el pin 9 sera de salida
   pinMode(9,OUTPUT);
   //Indicamos el valor de la salida PWM,(pin 9) entre 0 y 255
   //con un valor de 64, la pantalla se ve bien
   analogWrite(9,64);

   //Y ahora imprimimos por pantalla
   lcd.print("Hola mundo");
}

void loop()
{}


Espero que os haya sido de utilizad y si lo ha sido comentarlo, si hay algun fallito decirmelo que es  el primer tutorial que hago :p asique espero ir mejorando poco a poco jeje 

Aqui os dejo los enlaces  y un pequeño video que hice hace tiempo mostrando su funcionamiento



Presentación de los tutoriales

Hola de nuevo, voy a ponerme con los pequeños tutoriales que tenia pensado hacer sobre arduino y otras cosas, asique bueno ire poco a poco y espero que les sean de utilidad, se aceptan comentarios jejeje y sugerencias

miércoles, 28 de septiembre de 2011

Medidor de campo casero para TDT dvb-t para windows

Bueno pues os voy a resumir muy rapidamente, buscando por google no encontraba nada mas que un supuesto software de pago llamado DigiMax DVB-T Meter & Scanner , cuando sigo buscando y derrepente encuentro que ese mismo software por el que tienen la verguenza de cobrar es de Hauppauge y lo podeis encontrar en la pagina oficial.

Standalone DVB-T Signal Strength/Quality Utility






Este software lo he probado una sintonizadora que no es de hauppauge, lo probe con mi Conceptronic CTVDIGIUSB2 que compre por menos de 20€ si no recuerdo mal y que por cierto va de maravilla. 

Con este software podremos hacer un "medidor de campo" casero para orientar nuestra antena de TDT

Espero que os sea de utilidad =) 

Si alguien quiere la utilidad que me lo pida por comentario o un mensaje privado