Blog do Matehackers

Lendo sinais analógicos do Arduino com Python

Bueno, depois do Joel aterrorizar tanto que não iria dar tempo de concluir o projeto do robô até o FISL 16, ontem resolvi ver como funciona o tal do Arduino, que vai ser utilizado no projeto, para saber das reais dificuldades de implementar a coisa toda.

Na verdade o que me animou mais foi conhecer o Firmata, através do José, que possibilita que eu use, facilmente, o Arduino como uma extensão do meu computador, e o melhor ainda, permite que eu desenvolva todo o software necessário utilizando Python, com a lib pyFirmata.

Para fazer o teste utilizei um arduino Uno e um potenciômetro de 10k.

Untitled Sketch_bb

Esse foi o código utilizado:

# -*- coding: utf-8 -*-

import time
from pyfirmata import Arduino, util
import sys, os

b = Arduino('/dev/ttyACM0')

pot = b.get_pin('a:0:i')

iterator = util.Iterator(b)
iterator.start()

while True:

	val = pot.read()
	cm = 'espeak -vpt-brf -p 100 -s 155 "O valor recebido é '+str(val)+'"'

	time.sleep(2)

	print str(val)
	os.system(cm)

b.exit()

E ai a bagaça funcionando. A voz do robô está sendo sintetizada pelo Espeak, para quem usa a melhor distribuição linux do mundo, que não preciso dizer que é o Ubuntu, basta instalar via apt-get:

sudo apt-get install espeak