Trabalhando com PWM na interface GPIO do Raspberry Pi

Nas postagens anteriores, mostrei como trabalhar com entradas e saídas na GPIO do RPi através do modulo GPIO.RPi e Python. Nas saídas podemos também trabalhar com PWM. No RPi se compararmos com o Arduino, temos um controle melhor, já que podemos alterar afreqüência também. Para começar, primeiro precisamos criar a instancia PWM com:

p = GPIO.PWM (channel, frequency)

Onde channel será o pino usado e frequency a freqüência PWM em HZ.

Para iniciar o PWM usamos:

p.start(dc)

Onde dc é o duty cycle (ciclo de trabalho) que varia de 0 a 100.

Para parar o PWM usamos:

p.stop()

Para alterar a freqüência usamos:

p.ChangeFrequency(freq)

Onde freq é a freqüência usada.

Para alterar o ciclo de trabalho usamos:

p.ChangeDutyCycle(dc)

Onde novamente dc é o ciclo de trabalho de 0 a 100.

Em um exemplo simples colocaremos a frequencia de trabalho em 1/2 hz e o ciclo de trabalho em 30. O programa ficará pausado no input esperando um ENTER no teclado, com isso o led na porta 18 irá piscar uma vez a cada seg. Aumentando a freqüência para 1 hz ele passa a piscar uma vez a cada meio segundo, para 2 hz uma vez a cada 1/4 segundo e assim por diante. Após o ENTER o programa para o PWM e limpa as GPIO deixando sem configurações.

 

Neste Segundo exemplo o led irá fazer um fade, subindo e descendo o brilho intermitentemente até algum comando do teclado. Neste caso teremos um loop (while) onde dentro dele temos dois for, o primeiro sobe o brilho usando o range de 0 a 101 de 5 em 5 passos. No segundo o brilho desce de 100 a -1 de -5 em -5 passos. O try/except funciona para poder parar o processo com o comando do teclado.

Fonte: http://sourceforge.net/p/raspberry-gpio-python/wiki/PWM/

 

Comentários