Mobile
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:
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.
O próximo passo é iniciar o PWM, como argumento para esta função damos a rescisão esperada.
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