e
quer mais?
Me paga um café! :) PIX consultoria@carlosdelfino.eti.br
Curta o post no final da página, use o Disqus, compartilhe em sua rede social. Isso me ajuda e motiva
Obrigado.
Uma outra forma de obter dados para processar com o Python é através da porta serial, por exemplo usando o Arduino, iremos ver neste artigo, de forma breve, como ler a porta serial.
Neste artigo vamos supor que você saiba usar o Arduino, caso não saiba, solicite nosso curso de Introdução ao Arduino
Você também irá precisar do Shield com LCD para o Arduino como da imagem abaixo para este exercício. Clique na imagem pra compra-lo.
Iremos considerar também que o código disponível neste link está gravado em seu arduino.
O Python precisa de um módulo especial para ter acesso a porta serial, portanto vamos ativar nosso ambiente virtual para que tenhamos um ambiente limpo e não encha de pacotes a sua instalação padrão. Se não sabe ou não lembra como ativar seu ambiente virtual volte no artigo clicando aqui.
Instale o módulo Serial
com o comando pip install serial
.
No python o acesso a porta serial é bem similar ao acesso a arquivos comuns, sendo a unica diferença os parâmetros que são passados para preparar a porta serial, no nosso código do Arduino preparamos a porta para seguir a codificação padrão com velocidade de 9600 bps (bits por segundo), sendo assim precisamos usar esta mesma parametrização quando abrirmos a porta no computador.
Outra informação importante é o nome da porta, o que é diferente no windows e linux, no windows as portas seriais são composta pela abreviação com
seguida do número da porta, típicamente um número maior ou igual a 5, no linux, varia conforme a distribuição e o kernel usado, mas independente do sistema operacional basta consultar a IDE do Arduino. No meu ambiente a porta tem o nome /dev/ttyACM0
, veja a imagem abaixo.
Vejamos um exemplo do código em Python.
No código acima, como é feito na leitura de arquivos temos o primeiro parâmetro que é o nome da porta a ser aberta, em seguida temos a valocidade em bps, e finalmente o parâmetro timeout
que informa quanto tempo esperar pela disponibilidade de dados na porta. Se timeout
não for informado será esperado até que haja algum dado na porta.
Em seguida temos o bloco de código que será executado no contexto da declaração with
com a variável ser
disponível com o objeto de controle da porta serial.
Na primeira linha do bloco criamos a variável que irá conter o código em formato int
.
Em seguida cria um loop do tipo while
que será executado enquanto cod
for menor ou igual a 700.
A instrução for a seguir apresenta um recurso bastante interessante do python, para uso em objetos especializados em IO (entrada e saída de dados), este formato funciona em arquivos comuns abertos com a construtor (função) open
, como também com o serial.Serial
. Com essa declaração será similar a chamar a função readline()
e atribuir o seu retorno para x
continuamente, e a cada vez executa o bloco pertencente ao for
.
Então ele verifica se x
contém algum conteúdo, pois com o timeout
atigido, retorna vazio.
Havendo valor para x
é convertido em inteiro como é verificado se ele é maior que 700
, se sim interrompe o loop for
, como a condição para o loop while
é cod
não ser maior que 700
este loop também é naturalmente interrompido.
A linha do print
, apresenta uma forma diferente de formatar string, prefixando a string com f
as variáveis são acessadas internamente quando contornadas por chaves {}
.
Outra forma de escrever este código é eliminando o while
e o timeout
tornando o código mais simples, tente e comente como seu resultado.
Conclusão
Apredendos aqui como acessar a porta serial, fizemos apena leituras, veremos em outros artigos como escrever na porta, caso se interesse em aprender mais, entre em contato e solicite uma aula.
Fontes:
- https://cieda.com.br
- https://pt.wikipedia.org/wiki/Python
- https://pyserial.readthedocs.io/en/latest/shortintro.html
Não deixe de me pagar um café, faz um PIX: consultoria@carlosdelfino.eti.br de qualquer valor.