Gant interactif

Sur le projet de keyboard hacking, nous voulions créer un gant capable d’interagir avec processing pour générer des images en fonction des mouvements de la main.

Nous avons donc relié le bout des doigts du gant pour que des connexions se fassent lorsqu’on connecte le pouce avec un autre doigt.

Intentions

Les gants sont reliés à l’ordinateur par l’intermédiaire de la carte extraite du clavier. Sur l’ordinateur, un code processing permet de transformer les signaux du gant droit en déplacement du pinceau sur l’écran, et du gant gauche en changement de couleurs.

Code processing en Python

Ay = 1000
Ax = 150
dW = 300
dH = 1000
Bsize = 100
r = random(255)
g = random(255)
b = random(255)

def setup():
    frameRate(60)
    background(255)
    size(dW,dH)
    noStroke()
    fill(255,0,0)
    
# define class for the pointers for the balls

class Point:
    def __init__(self, x, xVec,r,g,b):
        self.x = x
        self.xVec = xVec
        self.r = r
        self.g = g
        self.b = b
        
p1 = Point(dW / 4, 0,0,0,0)
p2 = Point(dW / 4 * 2, 0,0,0,0)
p3 = Point(dW / 4 * 3, 0,0,0,0)

def draw():
    global r,g,b,Bsize
    if keyPressed == True:
        if key == """:
            r = r-1
            g = g-1
            b = b-1
        if key == "c":
            r = random(255)
            g = random(255)
            b = random(255)
        if key == "d":
            r = r+1
            g = g+1
            b = b+1
        else: 
            pass
    else:
        pass
        
    fill(r,g,b)
    
    if keyPressed == True:
        if key == "8":
            global Ay, Ax,dW
            ecartement_p1 = (dW / 4) - p1.x  #ecart entre le point d'origine et le point actuel
            p1.xVec = p1.xVec + (random(-1,1)) + (ecartement_p1 /2) #definition du vecteur de direction
            p1.x = p1.x + p1.xVec #definition de la postion du curseur en fonction du vecteur
            Ay = Ay - 1
            ellipse(p1.x,Ay,Bsize,Bsize)
        if key == "5":
            global Ay, Ax
            ecartement_p2 = (dW / 4 *2) - p2.x  #ecart entre le point d'origine et le point actuel
            p2.xVec = p2.xVec + (random(-1,1)) + (ecartement_p2 /2) #definition du vecteur de direction
            p2.x = p2.x + p2.xVec #definition de la postion du curseur en fonction du vecteur
            Ay = Ay - 1
            ellipse(p2.x,Ay,Bsize,Bsize)
        if key == "0":
            global Ay, Ax
            ecartement_p3 = (dW / 4 *3) - p3.x  #ecart entre le point d'origine et le point actuel
            p3.xVec = p3.xVec + (random(-1,1)) + (ecartement_p3 /2) #definition du vecteur de direction
            p3.x = p3.x + p3.xVec #definition de la postion du curseur en fonction du vecteur
            Ay = Ay - 1
            ellipse(p3.x,Ay,Bsize,Bsize)
    else:
        pass

Images du dispositif