2017/06/24

Nueva carcasa para mi teléfono con doble batería

Ha llegado el momento de darle una nueva carcasa al viejo Samsung Galaxy S2 con doble batería, puntero láser, linterna y microscopio de 130 aumentos.



En esta primera versión, impresa en ABS blanco, solo está implementada la doble batería. Ya están previstos los huecos para el láser y los ledes de la linterna, pero faltan los botones y, sobre todo, el microscopio, que espero tener listos en próximas versiones.

 

2017/06/07

Mando a distancia con Arduino y Processing

En esta práctica vamos a combinar Arduino y Processing para construir un mando a distancia para controlar juegos o aplicaciones en nuestro ordenador.


En la parte física utilizaremos una placa Arduino UNO, una breadboard o placa de prototipos sin soldadura, un par de botones NA, dos resistencias de 220 Ω y algunos cables de colores.

A continuación podemos ver en detalle el esquema del circuito:


Una vez montado el circuito pasamos a la parte del código.

Primero haremos un sketch en Arduino que lea el valor de los pines digitales 8 y 9, conectados a los botones situados a la izquierda y a la derecha. Utilizaremos el monitor serial para imprimir en pantalla los valores 0, 1 y 2 cuando no esté pulsado ningún botón, esté pulsado el botón izquierdo y esté pulsado el botón derecho respectivamente.

Código Arduino:

const int izq = 8;
const int der = 9;
int dir = 0;

void setup(){
  Serial.begin(9600);
  pinMode(izq, INPUT);
  pinMode(der, INPUT);
}

void loop(){
  if(digitalRead(izq)>0){
    dir = 1;
  }else if(digitalRead(der)>0){
    dir = 2;
  }else{
    dir = 0;
  }
  Serial.println(dir);
  delay(100);
}

Finalmente escribimos un sketch en Processing que nos lea los valores 0, 1 y 2 que mandamos desde Arduino a través del puerto serial (COM9 en mi caso). A continuación dibujamos una pantalla de 600 x 400 píxeles, con fondo negro y una circunferencia en el centro. La posición x de esta circunferencia la almacenamos en una variable que modificaremos pada vez que Arduino envíe un valor de 1 o 2 a través del puerto serial, es decir, cada vez que pulsemos los botones del circuito que hemos construido.

Es muy importante que el sketch de Processing se ejecute después de que el sketch de Arduino esté eviado a la placa y ejecutándose.

Código Processing:

import processing.serial.*;
Serial puerto;
char val;
int x;

void setup(){
  puerto = new Serial(this, "COM9", 9600);
  size(600,400);
  noStroke();
  x = width/2;
}
void draw(){
  background(0,0,0);
  if(puerto.available()>0){
    val = puerto.readChar();
    if (val == '0'){
      x = x;
    }
    if (val == '1'){
      x = x-10;
    }    
    if (val == '2'){
      x = x+10;
    }
  }
  ellipse(x,height/2,100,100);
  println(val);
}