Entradas

Mostrando entradas de mayo, 2012

Arduino: Emisor y Receptor RF

Imagen
La idea es emitir una onda concreta desde una tarjeta Arduino, recibirla en otra y, si la onda es la correcta, encender una LED. En un post anterior ya habíamos indicado cómo emitir esa onda y esta vez será de una forma similar. De hecho, utilizaremos la misma forma: He utilizado un módulo receptor y un módulo emisor que podemos encontrar en Cebek . Para el módulo emisor he utilizado la patilla 3 para la modulación y, como no era suficiente la energía proporcionada por el USB de nuestra tarjeta Arduino, he optado por utilizar una fuente de alimentación externa a 9v. Debemos tener en cuenta que necesitamos conexión de masa desde el emisor hasta la tarjeta Arduino y también a la fuente de alimentación, ya que para el envío de los pulsos necesitamos esa referencia en la tarjeta. Para facilitar las cosas, vamos a comprobar solamente la llegada de los unos. Otro detalle a tener en cuenta, es que usaremos el mismo programa para emisor y receptor, controlando con ifdef s

Arduino: Emitiendo ceros y unos

Imagen
Nuestra idea es sacar por el pin 2 de nuestra Arduino repetidamente una forma de onda cuadrada concreta. Nos valdría cualquiera pero, para  nuestro ejemplo, intentaremos reproducir la siguiente: Para emitir un 1, pondremos el pin a alto , esperaremos un tiempo determinado y luego lo pondremos a bajo , esperaremos otro tiempo y así repetidamente. El programa es muy simple. Definimos el pin por el que sale la señal y el tiempo que dura un pulso. Como lo primero que queremos emitir son cuatro 1, ponemos el pin de salida en alto y esperamos cuatro veces el tamaño del pulso. Con la misma idea reproducimos los demás ceros y unos para conseguir la onda adecuada. const  int pinDeSalida = 2; // Indicamos el pin por el que sale la señal const  int pulsoBase = 250; // Este es el tamaño del pulso base en ms   void setup () {    // ponemos pin en modo salida    pinMode (pinDeSalida, OUTPUT ); }   void loop () {    digitalWrite (pinDeSalida, HIGH );    delayMicroseconds (puls

Arduino: Visor de 8 segmentos controlado por un potenciómetro

Imagen
Con un visor de 8 segmentos [son 7 "|" y un "·" ;)] quitado de una máquina cualquiera, he probado a ir encendiendo los segmentos de forma que se fueran dibujando los números. Esto no era demasiado divertido, así que decidí controlar el número según lo que girásemos un potenciómetro. Este es el vídeo con el resultado: En el visor de 8 segmentos que he utilizado, cada segmento se apaga cuando recibe "0" y se enciende al ponerla a "1". Así que he conectado cada segmento a una salida de la Arduino y el pin común a GND. En el código ya vemos que lo primero que hago es poner todos los pines a 1, para que todos los segmentos estén apagados. Respecto al potenciómetro, conecto el cable de datos en una entrada analógica de la Arduino y los otros dos uno a +5v y el otro a GND. Aquí el código que he utilizado: /*    Según los valores indicados con un potenciómetro, muestro números    del 0 al 9 en un visor de 7 segmentos  *

Arduino: Mover un Servo con un potenciómetro

Imagen
Esta es mi solución al ejercicio 4 de oomlout : http://ardx.org/CIRC04 . De todas formas, lo que he hecho se parece mucho más a lo que aparece en http://ardx.org/KNOB pero sin librería servo.h (que facilita mucho el tema). Aquí una muestra del resultado: Este es el código: /*  * Exercicio CIRC04: Servo  * Explicacion en http://ardx.org/CIRC04  *  * Un servo estandar toma valores que permitiran que xire de 0 a 180 graos  * A posicion ven controlada polo largo dun pulso, entre 1'25ms (0 graos) e  * 1.75ms (180 graos) [1.5ms para 90 graos]. Se este pulso se envia o servo cada  * 20-50ms, o servo fara o cambio suavemente.  *  * En Arduino existe a libreria servo.h, que permite controlar dous servos cunha soa  * liña se os conectamos o pin 9 ou 10. Neste codigo non facemos uso desa libreria  */ int servoPin = 9; // Pin onde conecto o cable de datos do servo (branco) int potePin = A0; // Conectamos un potenciometro no pin analoxico 0 int poteVa

Arduino: Motor de juguete

Imagen
Esta vez haremos girar un motor de juguete. Podemos ver este ejercicio también en http://ardx.org/CIRC03 .  Como en los anteriores, primero el vídeo: Y ahora el código:   /*   * Un motor de juguete gira y para, gira y para, gira y...   * Explicacion en http://ardx.org/CIRC03/   *   */    int motorPin = 9; // salida por la que controlamos el motor int tiempoEncendido = 5000; // tiempo que permanecera encendido el motor int tiempoApagado = 2000; // tiempo que permanecera apagado el motor void setup () {    pinMode (motorPin, OUTPUT ); // indicamos que el pin es de salida } void loop () {    digitalWrite (motorPin, HIGH ); // encendemos el motor...   delay (tiempoEncendido); // esperamos los segundos que hayamos puesto arriba...   digitalWrite (motorPin, LOW ); // apagamos el motor...   delay (tiempoApagado); // esperamos de nuevo... } En la web de oomlout utilizan una resistencia de 10kΩ para el montaje, pero a mí no me ha funcionad

Arduino: Diversión con 8 LEDs

Imagen
Siguiendo la tónica del anterior , seguimos con el siguiente ejercicio propuesto por oomlout : http://ardx.org/CIRC02 Hemos colocado 8 LEDs (con sus respectivas resistencias de 330Ω) y las hemos conectado a los pines 2 a 9 de nuestra Arduino. Tras programar un poco, aquí vemos el resultado: Y aquí el código que he utilizado para pasar de una LED a la siguiente: /*  * Secuencias de LEDs  *  */ // Array de LEDs >> Indico en que pin va cada una de las 8 LEDS. int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Por ejemplo, la LED 2 esta en el pin 4, o la LED 0 esta en el pin 2. void setup () {    for ( int i = 0; i < 8; i++)     {        pinMode (ledPins[i], OUTPUT ); // recorro los pines de las LED y los cambio  // a SALIDA     } } void loop () {    // La siguiente funcion enciende una LED tras otra y luego va apagando   unaTrasOtra(); } /*  * unaTrasOtra() - Enciende una LED, se detiene un tiempo   

Arduino: Una LED parpadea: el "hola mundo" de Arduino

Imagen
Este es un ejercicio basado en el que podemos ver en http://ardx.org/CIRC01 .  Es lo más básico que podemos hacer con una Arduino tras haber instalado el compilador y haberla conectado a nuestro PC. Podemos ver el resultado final en este vídeo:   Este el código que he utilizado para la primera parte: el parpadeo. /*  * Enciende una LED durante un segundo y luego la apaga durante un segundo  * y repetir, sieeempre repetir  *  */ int ledPin = 13; // Conectamos una LED en el pin digital 13 // El metodo setup() se ejecuta una sola vez: al principio del programa void setup () {    pinMode (ledPin, OUTPUT ); // Inicializa el pin digital como de salida } // El metodo loop() se repite una y otra vez, hasta que desenchufemos la Arduino void loop () {    digitalWrite (ledPin, HIGH ); // Encendemos la LED    delay (1000); // Esperamos 1 segundo    digitalWrite (ledPin, LOW ); // Apagamos la LED    delay (1000); // Esperamos 1 segundo } Como vemos