Páginas

jueves, 26 de febrero de 2015

Arduino Uno. Contador de pulsaciones

Hola

Siguiendo con mis prácticas sobre Arduino Uno, ahora explicaré como he montado un contador de pulsaciones. Se trata de programar Arduino para que cada vez que se pulse un botón se incremente un contador de pulsaciones y se vayan encendiendo hasta tres led. En la cuarta pulsacion se resetea el contado y se apagan todos los leds.

El montaje es:



El circuito es:



El código es:

/*
CUARTO EJERCICIO 2015-02-26

Finalidad. Se trata de montar un contador de pulsaciones con un
boton y tres led. Cuando se pulse una vez se encendera el primer
led, cuando se pulse dos veces se encendera el segundo led, cuando
se pulse una tercera vez se encendera el tercer led y cuando se
pulse una cuarta vez se apagaran todos los leds reinicindose el ciclo.

*/

//Vamos a colocar la entrada del boton en el pin 10
const int BOTONPIN10 =  10;

//Vamos a colocar los led en las salidas 11, 12 y 13
const int LEDPIN11 =  11;
const int LEDPIN12 =  12;
const int LEDPIN13 =  13;

//Variable que controla el numero de leds encencidos
int numled=0;

//Variables que controlan el estado del boton para evitar rebotes
int estadoBoton=0;
int estadoBotonAnterior=0;

void setup() {
  // Inicializamos el pin del boton como entrada
  pinMode(BOTONPIN10, INPUT);
  // Inicializamos los tres pin de los led como salidas
  pinMode(LEDPIN11, OUTPUT);
  pinMode(LEDPIN12, OUTPUT);
  pinMode(LEDPIN13, OUTPUT);
  //Iniciamos comunicacion con puerto serie del PC
  //para monitorizar las pulsaciones
  Serial.begin(1200);
}

void loop(){

  //Leemos el boton
  estadoBoton = digitalRead(BOTONPIN10);
 
  //Vemos si ha cambiado el estado del boton
  if(estadoBoton!=estadoBotonAnterior){
    //Si el estado ha cambiado incrementamos el numero de leds encendidos
    if (estadoBoton==HIGH){
       numled++;
    }
  }
 
  //Cambiamos el estado anterior del boton
  estadoBotonAnterior=estadoBoton;
 
  //Monitorizamos el estado de los botones y el numero de leds
  Serial.print(estadoBoton);
  Serial.print("-");
  Serial.print(estadoBotonAnterior);
  Serial.print("-");
  Serial.print(numled);
  Serial.print("\n");

  //Encendemos los leds necesarios segun el valor de numled
  if (numled>=0){
    if (numled==1){
      //encendemos el primer led
      digitalWrite(LEDPIN11, HIGH);
    } else if (numled==2){
      //encendemos el primer y el segundo led
      digitalWrite(LEDPIN11, HIGH);
      digitalWrite(LEDPIN12, HIGH);
    } else if (numled==3){
      //encendemos los tres leds
      digitalWrite(LEDPIN11, HIGH);
      digitalWrite(LEDPIN12, HIGH);
      digitalWrite(LEDPIN13, HIGH);
    } else {
      //Apagamos todos los leds
      digitalWrite(LEDPIN11, LOW);
      digitalWrite(LEDPIN12, LOW);
      digitalWrite(LEDPIN13, LOW);
      numled=0;
    }
  }
}

Un video del programita funcionando:



Eso es todo, ya veremos qué se nos ocurre mañana

Un saludo

Arduino Uno. Potenciómetro para controlar el encendido de 6 leds

Hola

Como una vez que se comienza no se puede parar de jugar con el Arduino, aquí dejo el segundo ejemplo, el uso de un potenciómetro para regular en encendido de 6 leds.

Jugamos además con las comunicaciones por el puerto serie con el PC para monitorizar el valor del potenciómetro.

El montaje es:


El 'plano' del circuito es:



El código es:

/*
SEGUNDO EJERCICIO 2015-02-25
Finalidad. Se trata de encender hasta seis led en funcion de la
resistencia de cierto potenciomentro. A mayor resistencia mas
led encendidos.
*/

//Colocamos los Led en las salidas 8-13
const int LEDPIN08 =  8;
const int LEDPIN09 =  9;
const int LEDPIN10 =  10;
const int LEDPIN11 =  11;
const int LEDPIN12 =  12;
const int LEDPIN13 =  13;

// Lectura del potenciomentro
int pot;

//Numero de leds activos
int numleds=0;

void setup(){

   //Iniciamos las salidas digitales
   pinMode(LEDPIN08,OUTPUT);
   pinMode(LEDPIN09,OUTPUT);
   pinMode(LEDPIN10,OUTPUT);
   pinMode(LEDPIN11,OUTPUT);
   pinMode(LEDPIN12,OUTPUT);
   pinMode(LEDPIN13,OUTPUT);

   //Iniciamos comunicacion con puerto serie del PC
   //para monitorizar la resistencia del potenciometro
   Serial.begin(9600);
}

void loop(){

   //Leemos el valor del potenciometro
   pot = analogRead(0);

   //Mapeamos el nmero de leds activos
   numleds = map(pot, 0, 1023, 0, 6);

   //Mostramos por consola los valores: potenciometro - numleds
   Serial.print(pot);
   Serial.print("-");
   Serial.print(numleds);
   Serial.print("\n");

   //Encendemos el numero de leds adecuado
   switch (numleds) {
    case 0:
      digitalWrite(LEDPIN08,LOW);
      digitalWrite(LEDPIN09,LOW);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 1:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,LOW);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 2:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,LOW);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break;
    case 3:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,LOW);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break; 
    case 4:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,LOW);
      digitalWrite(LEDPIN13,LOW);
      break; 
    case 5:
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,HIGH);
      digitalWrite(LEDPIN13,LOW);
      break; 
    default: //los seis leds
      digitalWrite(LEDPIN08,HIGH);
      digitalWrite(LEDPIN09,HIGH);
      digitalWrite(LEDPIN10,HIGH);
      digitalWrite(LEDPIN11,HIGH);
      digitalWrite(LEDPIN12,HIGH);
      digitalWrite(LEDPIN13,HIGH);
   }
}

Y un video donde se puede ver funcionando:



Un saludo

miércoles, 25 de febrero de 2015

Primeras pasos con Arduino Uno en Ubuntu 14.04

Éstos son los pasos para realizar una primera prueba de funcionamiento de Arduino Uno.

1) Instalamos arduino con:

   sudo apt-get update && sudo apt-get install arduino arduino-core

2) Arrancamos el IDE de arduino, con sudo para no tener problemas de acceso a puertos:

   sudo arduino

3) Conectamos Arduino Uno al puerto USB del ordenador

4) Verificamos en el IDE esté configurado para ver la la placa Arduino:

   - En el menú herramientas/tarjeta, seleccionamos Arduino uno
   - En el menú herramientas/puerto serie, aparece seleccionado /dev/ttyACMO

5) Escribimos el programita:

/*
PRIMER EJEMPLO 2015-02-25
Finalidad. Se trata de encender y apagar un led cada 100ms
*/

//Vamos a colocar el LED en la salida digital 13
const int LEDPIN =  13;

void setup() {
  // Inicializamos el pin como SALIDA
  pinMode(LEDPIN, OUTPUT);
}

void loop(){
 
  //Encendemos el LED
  digitalWrite(LEDPIN, HIGH); 

  //esperamos 2000ms
  delay(2000);
 
  //Apagamos el LED
  digitalWrite(LEDPIN, LOW);

  //esperamos 2000ms
  delay(2000);
}

6) Validamos el programa en el menú Sketch/Verificar-Compilar (CTRL+R)

7) Subimos el programita al controlador en el menú Archivo/Cargar (CTRL+U)

Con ésto ya tenemos el sistema testeado

Un saludo

jueves, 19 de febrero de 2015

Iconos invisibles en el lanzador Gnome Shell (Gnome 3)

Hola

De vez en cuando ocurre que  el icono que seleccionamos en el lanzador de cierta aplicación no se muestra. Después de muchas pruebas he visto un patrón. Las aplicaciones instaladas con synaptic funcionan todas bien, mientras que las instaladas descomprimiendo en el $HOME a veces dan problemas.

Veamos por ejemplo los pasos a dar para que cierto aplicativo, por ejemplo 'Sublime Text' que hemos descomprimido en cierta carpeta SublimeText2 del $HOME tenga un lanzador 100% correcto.:

1) Copiamos el icono elegido 'sublime_text.png' a:

/usr/share/icons

2) Creamos un link al ejecutable en /usr/bin:

ln -s /home/xxxxxxxx/SublimeText2/sublime_text /usr/bin/sublime

3) Generamos el fichero 'sublime.desktop' en $HOME/.local/share/applications

4) Introducimos el contenido del fichero

[Desktop Entry]
Type=Application
Exec=sublime
Name=Sublime
Icon=/usr/share/icons/sublime_text.png