Saltar navegación

Programando

PROGRAMANDO

Agora que xa temos conectado o nosos servo imos empezar a controlalo aproveitando o que xa sabemos sobre como programar secuncias dende Pure Data.

O primeiro que temos que facer é conectarnos co noso Arduino e xa podemos empezar probando a facer un patch como este ou ben descargalo de aquí:

Servo funcionando cun metro con valores aleatorios

É probable que algunhas partes xa te soen. A parte de abaixo basicamente é o obxecto de Pure Data que permite traballar con Arduino e lle podemos pedir coa mensaxe Devices que nos diga en que porto está o noso Arduino conectado.

O multi interruptor (Hradio)  que hai conectados á mensaxe Open o que fai é enviar números. Poderíamos poñer simplemente unha caixa de número e escribir, por exemplo, 2, se ese fora o porto no que está conectado o noso Arduino, e tamén funcionaría.

A saída de Arduino vai conectada a unha caixa de mensaxe que nos avisa cando recoñece a Standard Firmata instalada no Arduino.

Así o primeiro (1) sería facer clic en Devices e ver o resultado no terminal para saber que porto ocupa o Arduino. A continuación (2) facemos clic no interruptos correspondente do Hradio, tendo en conta que empeza en 0, é dicir que se é 2  terás que facer clic no 3. E logo esperar a que recoñeza a Firmata (3) dando a mensaxe.

O seguinte que faremos (4) é dicirlle a PD onde temos conectado o noso servo poñendo o número do pin, neste caso 9, dentro desta caixa de número. Podes facer clic e mentres está pulsado mover cara arriba ou abaixo para aumentar ou diminuír, ou podes poñer o número co teclado e logo darlle a Enter.

Isto manda ao obxecto de Arduino mediante a mensaxe PinMode que se trata dun servo e que está conectado nesa saída.

Agora ven a parte de control que utiliza é un metrónomo. O que temos que facer (5) é indicarlle cada canto tempo envía un pulso. Lembra que é en milisegundos, é dicir, se queres que sexa cada segundo tes que poñer 1000.

E xa so queda acendelo facendo clic no interruptor (6).

O que acontece é que lle envía un pulso a un obxecto random que devolve número entre 0 e o valor que lle poñamos a continuación, neste caso 100. Logo odividimos por 100 xa que o noso servo funciona con valores de 0 a 1.

A continuación pasa por un obxecto trigger, ás veces abreviado como t. Este o que fai é enviar o material que lle chega separándoo en diferentes saídas dependendo do tipo de material que lle digamos; float (f) = decimais, bang (b) = pulsación, etc. Podes ver máis sobre o seu funcionamento facendo clic co botón dereito e vendo a ventá de axuda de PD.

Aquí trigger envía unha pulsación (b) e un número (f) polas súas saídas e o que facemos logo é metelo todo ben empaquetado para envialo por un único fío, xunto co número de pin utilizado nun pack.Funcionamento de triggerFinalmente isto está sendo enviado ao obxecto de Arduino como datos analóxicos empaquetado co obxecto pack indicando que lle di que envíe esa información sempre ao pin 9.

Animación de servo controlado por un metrónomo

Se sempre conectas o Arduino no mesmo porto poderías incluso indicar o porto poñendo o número na caixa do obxecto arduino, como podes ver na animación anterior, e así xa o detectaría ao empezar. Isto é interesante cando traballamos sempre coa mesma configuración.