Bueno, os voy a mostrar el pequeño proyecto que hice en un momento de aburrimiento.
(http://r.i.elhacker.net/cache?url=http://img375.imageshack.us/img375/8092/foto1rm.jpg) (http://img375.imageshack.us/i/foto1rm.jpg/)
Eso de arriba es el circuito de arduino, consta de dos ldr que en la imagen aparecen a la izquierda y a la derecha , y un botón. Están conectados a entradas de arduino y lo que hace el programa de arduino es mandar información sobre el estado de las ldr (solo manda un 0 o un 1 dependiendo de que la entrada analógica supere un límite o no) y el botón (si está pulsado o no).
Ya en el ordenador he hecho dos programas en python que reciben información del puerto de arduino.
Por ahora os enseño el segundo que hice con ayuda de pygame. Consiste en que crea una ventana con un cuadrado en su interior y dependiendo de si tapas o no los ldr (si le dejas de dar luz) se moverá hacia un lado u otro, el botón sirve para cambiar el color del cuadrado.
Os muestro un vídeo :
[youtube=425,350]http://www.youtube.com/watch?v=bJqTx4xr68k[/youtube]
Se pueden usar las dos manos a la vez, pero como estaba grabando tenía una mano ocupada.
Os dejo los códigos :
El de arduino :
int ldrD = 0;
int ldrI = 5;
int boton = 3;
int umbral = 150;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int luzD = analogRead(ldrD);
int luzI = analogRead(ldrI);
if (digitalRead(boton) == HIGH)
{
Serial.print("1");
}
else
{
Serial.print("0");
}
if (luzD < umbral)
{
if (luzI< umbral)
{
Serial.println("11");
}
else
{
Serial.println("01");
}
}
else
{
if (luzI < umbral)
{
Serial.println("10");
}
else {
Serial.println("00");
}
}
delay(100);
}
Y el de python :
import pygame,serial,random
ser = serial.Serial('/dev/ttyUSB4',9600) # Modificar por vuestro puerto
pygame.init()
x,y = 500,500
avance = 5
class cosa(pygame.sprite.Sprite):
def __init__(self,screen):
self.color = 255
self.me = pygame.Surface([50,50])
self.me.fill((self.color,self.color,self.color))
self.positionx = 0
self.positiony = 0
self.screen = screen
def update(self):
leido = ser.readline()
if leido[1] == '1' :
self.positiony+=avance
else :
self.positiony-=avance
if leido[2] == '1':
self.positionx+=avance
else :
self.positionx-=avance
if leido[0] == '1': self.colorear()
self.comprobarcoordenadas()
self.screen.blit(pygame.Surface([x,y]),(0,0))
self.screen.blit(self.me,(self.positionx,self.positiony))
pygame.display.flip()
def comprobarcoordenadas(self):
if self.positionx > x : self.positionx-=avance
if self.positionx < 0 : self.positionx+=avance
if self.positiony > y : self.positiony-=avance
if self.positiony < 0 : self.positiony+=avance
def colorear(self):
self.color = (self.color+1)%255
self.me.fill(((self.color+random.randint(0,255))%255,(self.color+random.randint(0,255))%255,self.color))
screen = pygame.display.set_mode([x, y])
caja = cosa(screen)
while 1:
caja.update()
Quien quiera usar el de python tendrá que instalar pygame y pyserial.
Aquí os dejo otro que sirve para mover el ratón con el mismo circuito :
#!/usr/bin/python
import serial
import Xlib.display
from Xlib.ext import xtest
from Xlib import X
class MouseControl:
def __init__(self):
self.display = Xlib.display.Display()
self.screen = self.display.screen()
self.root = self.screen.root
self.mousex = 500
self.mousey = 500
def arriba(self):
self.mousey += 10
if self.mousey > 780 : self.mousey-=10
self.root.warp_pointer(self.mousex,self.mousey)
self.display.sync()
def abajo(self):
self.mousey -= 10
if self.mousey<0 : self.mousey +=10
self.root.warp_pointer(self.mousex,self.mousey)
self.display.sync()
def izquierda(self):
self.mousex -= 10
if self.mousex < 0 : self.mousex+=10
self.root.warp_pointer(self.mousex,self.mousey)
self.display.sync()
def derecha(self):
self.mousex += 10
if self.mousex > 1020 : self.mousex-=10
self.root.warp_pointer(self.mousex,self.mousey)
self.display.sync()
def click(self):
xtest.fake_input(self.display, X.ButtonPress, 1)
xtest.fake_input(self.display, X.ButtonRelease, 1)
self.display.sync()
ser = serial.Serial('/dev/ttyUSB4',9600) #Modificar por vuestro puerto
mouse = MouseControl()
while 1 :
leido = ser.readline()
print mouse.mousex ," ", mouse.mousey
if leido[0] == '1':
mouse.click()
if leido[1] == '1':
mouse.arriba()
else :
mouse.abajo()
if leido[2] == '1':
mouse.derecha()
else : mouse.izquierda()
El que quiera usar este tendrá que instalar además Xlib para python.
Solo funciona en linux.
Pues esta muy bien tio, muy bueno jeje
Saludos
Gracias, a ver si muestras tú algo de lo que estás haciendo :xD
Está pegando fuerte Arduino en el foro, creo que deberían plantearse crear un subforo solo para esta plataforma... :rolleyes:
Muy bueno el mini proyecto
Jajaja. Ahora pregunto en la casa de electronica amiga si tienen LDR ni los conocia :P
Esta muy interesante el pygame que hiciste.
Cita de: Daemon Freedom en 4 Julio 2010, 18:05 PM
Está pegando fuerte Arduino en el foro, creo que deberían plantearse crear un subforo solo para esta plataforma... :rolleyes:
Te comento nomas que yo compre un Arduino porque USTED comenzo con esto en este subforo :xD
Antes de hacer un subforo convendria hacer un thread introductorio e tutorial de programacion del Arduino no?
Cita de: Vaati en 4 Julio 2010, 19:31 PM
Jajaja. Ahora pregunto en la casa de electronica amiga si tienen LDR ni los conocia :P
Esta muy interesante el pygame que hiciste.
Cita de: Daemon Freedom en 4 Julio 2010, 18:05 PM
Está pegando fuerte Arduino en el foro, creo que deberían plantearse crear un subforo solo para esta plataforma... :rolleyes:
Te comento nomas que yo compre un Arduino porque USTED comenzo con esto en este subforo :xD
Antes de hacer un subforo convendria hacer un thread introductorio e tutorial de programacion del Arduino no?
Tutéame xD
Si, estaría bien crearlo, pero para ello debería haber un "grupo de trabajo" para que colaboráramos todos, porque hacerlo 1 sola persona, es una pesadez..
Cita de: Vaati en 4 Julio 2010, 19:31 PM
Jajaja. Ahora pregunto en la casa de electronica amiga si tienen LDR ni los conocia :P
Esta muy interesante el pygame que hiciste.
Cita de: Daemon Freedom en 4 Julio 2010, 18:05 PM
Está pegando fuerte Arduino en el foro, creo que deberían plantearse crear un subforo solo para esta plataforma... :rolleyes:
Te comento nomas que yo compre un Arduino porque USTED comenzo con esto en este subforo :xD
Antes de hacer un subforo convendria hacer un thread introductorio e tutorial de programacion del Arduino no?
De hecho yo compré arduino por verlo en el foro tambien :xD
Hostias, los vendedores me deben 1 xDDDDDDDD ;-)
:xD
Se podría hacer un artículo sobre arduino en el wiki de elhacker.net
Cita de: braulio-- en 5 Julio 2010, 11:49 AM
:xD
Se podría hacer un artículo sobre arduino en el wiki de elhacker.net
Soy editor del wiki, ya estoy redactando algo en la secion de electronica.
Saludos
Yo acabo de comprarme mi arduino xD
Cita de: ddk en 5 Julio 2010, 19:34 PM
Yo acabo de comprarme mi arduino xD
W3lcom3 to the club, son la hostia los arduino, tienen de todo, precio reducido, facilidad de programación...
GNU lopez, cuando tu empezaste a postear sobre el, yo me lo compré a los dos dias xD
Saludos
Cita de: Debci en 5 Julio 2010, 22:27 PM
Cita de: ddk en 5 Julio 2010, 19:34 PM
Yo acabo de comprarme mi arduino xD
W3lcom3 to the club, son la hostia los arduino, tienen de todo, precio reducido, facilidad de programación...
GNU lopez, cuando tu empezaste a postear sobre el, yo me lo compré a los dos dias xD
Saludos
De los pocos que aún me llaman así xD
En mi blog publicaré tambien sobre Arduino...
Esta muy bien
De que valor fueron las resistencias?
Se me olvidó contestar en cuanto lo vi, lo siento :(
Las de pull-up (creo que se llaman así) de los LDR 1200 ohms la del botón no lo recuerdo, pero es más de 1000 ohms.
Cita de: braulio-- en 8 Julio 2010, 15:27 PM
Se me olvidó contestar en cuanto lo vi, lo siento :(
Las de pull-up (creo que se llaman así) de los LDR 1200 ohms la del botón no lo recuerdo, pero es más de 1000 ohms.
Si no te preocupes te preguntaba por que dependiedno de los valores de las resistencias el valor de lectura cambia. era por eso
Saludos y muy bonito tu trabajo
Muchas gracias.