Um sinal PWM é um sinal gerado pela Modulação da Largura de Pulso, para obter mais informações você pode ir ao nosso post no blog. Em suma, e como mencionado na seção de pinos, a modulação PWM é usada para transmitir informações através de um canal de comunicação ou para controlar a quantidade de energia que é enviada para uma carga. Desta vez, cuidaremos da geração de PWM, manipulando entradas e câmeras a partir do nível Python.

Vamos começar com um exemplo simples com um diodo. Conecte-o através de uma resistência de 1ko ao pino número 12, como vimos antes e como mostrado no diagrama abaixo:

Agora, vamos abrir um IDE para programar em Python, como thonny Python IDE, no qual vamos abrir um novo esboço e copiar o seguinte código:

importar RPi.GPIO como GPIO

tempo de importação

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings(Falso)

GPIO.setup(12, GPIO. FORA)

diodo - GPIO. PWM (12, 50) #Nueva uma instância PWM

dever - 0 - Ciclo de serviço de sinal PWM

diodo.start (dever) - Ativa o sinal PWM

Tentar:

enquanto Verdadeiro:

dever +5

se duty > 100:

dever - 0

diodo. ChangeDutyCycle (duty) #Establece um novo valor para o preenchimento

time.sleep (0.05)

exceto KeyboardInterrupt:

impressão('End')

diodo.stop()

GPIO.cleanup()

Vamos explicar cada linha um pouco. Como sempre, no início você tem que importar as bibliotecas correspondentes e iniciar as configurações, no nosso caso as bibliotecas dos pinos GPIO e o tempo e suas configurações.

Quando queremos gerar um sinal PWM, temos que começar criando uma instância à qual vamos atribuir informações sobre o pino e a frequência. Fazemos isso com a seguinte linha:

Nombre_instancia = GPIO. PWM (pino, frequência) #Nueva instância PWM

Lembre-se que o que está depois de um 'A' é um comentário e não afeta o código. No nosso caso, a linha permanece:

diodo - GPIO. PWM (12, 50) #Nueva uma instância PWM

Em seguida, criamos uma variável de "preenchimento" chamada dever, que, como o nome indica, conterá informações sobre o preenchimento atual do sinal PWM (valores de 0 a 100% não assinados), será o ciclo de trabalho do sinal. Em suma, o percentual do sinal que está em estado alto, em relação ao total de um ciclo. Esta variável de serviço será inicializada para 0.

dever - 0 - Ciclo de serviço de sinal PWM

O próximo passo é iniciar o PWM, como argumento para esta função damos a rescisão esperada.

diodo.start (dever) - Ativa o sinal PWM

A partir de agora, o sinal PWM será gerado no pino 12. Seu dever pode ser alterado o tempo todo usando as seguintes instruções:

diodo. ChangeDutyCycle(dever)

Então, ao coletar as informações das partes anteriores do curso, podemos criar um programa simples que mudará o PWM completando um ciclo. Na prática, isso significará iluminação LED suave.

Há também um time.sleep (0.05) que espera dentro do loop while, mesmo que mínimo, isso é sempre necessário. No final do programa há uma linha mais diode.stop() que provavelmente não precisa ser explicada. Claro, é responsável por parar o "gerador" PWM em um determinado pino. Enquanto o programa estiver em execução, também podemos ajustar a frequência PWM. Para isso, devemos inserir a seguinte declaração: diodo. ChangeDutyCycle (XXX), onde dentro do parêntese você pode colocar um número de 0 a 100.

Como vemos, a tabulação de cada linha é importante, e deve parecer com a imagem anterior. Assim que tivermos assim, podemos dar ao Run para correr.

Você verá como o LED é gradualmente ligado ao máximo, depois desligue e repita o processo. Para interromper o programa, você pode fazer CTRL+C ou apertar o botão Parar. Lembre-se que se o LED permanecer ligado, você sempre pode desligá-lo manualmente com o terminal de comando usando:

gpio -g escrever 12 0