SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Python e Arduino
Python e Arduino: Analisando dados em tempo real.
Dr. Eduardo S. Pereira.
@duducosmos/ pereira.somoza@gmail.com
https://github.com/duducosmos
01/04/2017
Dr. E. S. Pereira 1
Python e Arduino
Sum´ario
1 Introduc¸ ˜ao
2 Medida de Temperatura com LM35
3 Comunicac¸ ˜ao Serial - python-serial
4 Gerador de Gr´aficos em tempo Real
5 Suavizac¸ ˜ao de Dados Coletados
6 Resultados
Dr. E. S. Pereira 2
Python e Arduino
Introduc¸ ˜ao
Introduc¸ ˜ao
Dr. E. S. Pereira 3
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 4
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 5
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 6
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 7
Python e Arduino
Medida de Temperatura com LM35
Medida de Temperatura com LM35
Dr. E. S. Pereira 8
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
LM35 - Sensor que apresenta sa´ıda de tens˜ao linear proporcional
`a temperatura em que o mesmo se encontra, tendo em sua sa´ıda
um sinal de 10mV para cada Grau C´elsius de temperatura;
Opera na faixa de [−50o,1500]C.
Dr. E. S. Pereira 9
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor
do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a
0 Volts e 1023 correspondendo a 5 Volts.
Como para cada variac¸ ˜ao de 1oC o sensor registra uma
mudanc¸a de 10mV, ent˜ao:
VA0 = (Vlido ∗(5/1023)); (1)
T = VA0/0.01; (2)
com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na
porta anal´ogica A0 e T ´e a temperatura em graus C´elsius;
Dr. E. S. Pereira 10
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor
do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a
0 Volts e 1023 correspondendo a 5 Volts.
Como para cada variac¸ ˜ao de 1oC o sensor registra uma
mudanc¸a de 10mV, ent˜ao:
VA0 = (Vlido ∗(5/1023)); (1)
T = VA0/0.01; (2)
com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na
porta anal´ogica A0 e T ´e a temperatura em graus C´elsius;
Dr. E. S. Pereira 11
Python e Arduino
Medida de Temperatura com LM35
O experimento
Conex˜ao com Arduino
Dr. E. S. Pereira 12
Python e Arduino
Medida de Temperatura com LM35
O c´odigo
LM35 v0.1
#include "Arduino.h"
const int LM35 = A0;
float temperatura;
unsigned long t0 = millis();
unsigned long t1 = t0;
void setup(){
Serial.begin (9600);
}
void loop(){
temperatura = (float(analogRead(LM35)) * 5 / 1023) / 0.01;
if(millis() - t1 >= 1000) {
t1 = millis();
unsigned long t2 = (t1 - t0) / 1000;
Serial.print(t2, DEC);
Serial.print(’,’);
Serial.println(temperatura ,DEC);
}
}
Dr. E. S. Pereira 13
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial - python-serial
Dr. E. S. Pereira 14
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial
Comunicac¸ ˜ao Serial
Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial
Para usu´arios de sistemas tipo debian: sudo apt-get install
python-serial
Dr. E. S. Pereira 15
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial
Comunicac¸ ˜ao Serial
Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial
Para usu´arios de sistemas tipo debian: sudo apt-get install
python-serial
Dr. E. S. Pereira 16
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
O c´odigo
pyserial
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
’ ’ ’
Sistema de comunicacao via porta s e r i a l com arduino .
’ ’ ’
_author = "E. S. Pereira"
_date = "31/03/2017"
_version= "0.0.1"
import serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
ser.write(’5’)
print ser.read()
Dr. E. S. Pereira 17
Python e Arduino
Gerador de Gr´aficos em tempo Real
Gerador de Gr´aficos em tempo Real
Dr. E. S. Pereira 18
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -1
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
’ ’ ’
Sistema de comunicacao via porta s e r i a l com arduino .
’ ’ ’
_author = "E. S. Pereira"
_date = "31/03/2017"
_version= "0.0.1"
import serial
import matplotlib.pyplot as plt
plt.ion()
ser = serial.Serial("/dev/ttyUSB0", 9600)
ser.read()
Dr. E. S. Pereira 19
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -2
def serOut(ser):
tmp = ser.read()
a = tmp
while(tmp != ’n’):
tmp = ser.read()
a += tmp
b = a.split(’r’)[0]
b = b.split(’,’)
return b[0], b[1]
Dr. E. S. Pereira 20
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -3
class DynamicUpdate ():
# Suppose we know the x range
min_x = 0
max_x = 20
def on_launch(self):
# Set up p l o t
self.figure , self.ax = plt.subplots(
# subplot kw=d i c t ( p r o j e c t i o n =’ polar ’)
)
self.lines , = self.ax.plot([], [], ’o’)
# Autoscale on unknown a x i s and known lims on the other
self.ax.set_autoscaley_on(True)
# s e l f . ax . s e t x l i m ( s e l f . min x , s e l f . max x )
# s e l f . ax . s e t y l i m ( s e l f . min x , s e l f . max x )
# Other s t u f f
self.ax.grid()
Dr. E. S. Pereira 21
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -4
def on_running(self , xdata , ydata):
# Update data ( with the new and the old p o i n t s )
self.lines.set_xdata(xdata)
self.lines.set_ydata(ydata)
# Need both of t h e s e in order to r e s c a l e
self.ax.relim()
self.ax.autoscale_view()
# We need to draw ∗and∗ f l u s h
self.figure.canvas.draw()
self.figure.canvas.flush_events()
Dr. E. S. Pereira 22
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -5
def __call__(self):
import numpy as np
import time
self.on_launch()
xdata = []
ydata = []
i = 0
for x in np.arange(0, 100000, 1):
x0, y0 = serOut(ser)
if(len(x0) <= 6):
if(y0 != ’’ and x0 != ’’):
print(x0, y0)
xdata.append(float(x0))
ydata.append(float(y0))
self.on_running(xdata , ydata)
return xdata , ydata
Dr. E. S. Pereira 23
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte - 6
if(__name__ == "__main__):
d = DynamicUpdate()
d()
Dr. E. S. Pereira 24
Python e Arduino
Gerador de Gr´aficos em tempo Real
C´odigo Dispon´ıvel GitHub
C´odigo Dispon´ıvel GitHub
https://github.com/duducosmos/arduinoday2017
Dr. E. S. Pereira 25
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados Coletados
Dr. E. S. Pereira 26
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados de sensores
Suavizac¸ ˜ao de Dados de sensores
Ao inv´es de coletar o dado direto, iremos passar o valor m´edio
dos ´ultimos N dados coletados;
Lembrando que o valor m´edio representa o valor esperado, ou o
valor mais prov´avel de ser o correto;
Dr. E. S. Pereira 27
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados de sensores
Suavizac¸ ˜ao de Dados de sensores
Ao inv´es de coletar o dado direto, iremos passar o valor m´edio
dos ´ultimos N dados coletados;
Lembrando que o valor m´edio representa o valor esperado, ou o
valor mais prov´avel de ser o correto;
Dr. E. S. Pereira 28
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 1
#include "Arduino.h"
const int LM35 = A0;
float temperatura;
unsigned long t0 = millis();
unsigned long t1 = t0;
/ / Smooth Temp Data
const int readsSize = 30;
unsigned int readIndex = 0;
unsigned int reads[readsSize];
unsigned int totalReads;
unsigned int averageReads;
Dr. E. S. Pereira 29
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 2
void smoothTemp(){
totalReads = totalReads - reads[readIndex];
reads[readIndex] = analogRead(LM35);
totalReads = totalReads + reads[readIndex];
readIndex += 1;
if(readIndex >= readsSize) {
readIndex = 0;
}
averageReads = totalReads / readsSize;
}
Dr. E. S. Pereira 30
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 3
void setup(){
Serial.begin (9600);
for(int i = 0; i < readsSize; i++ ) {
reads[i] = 0;
}
}
Dr. E. S. Pereira 31
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 3
void loop(){
/ / temperatura = ( f l o a t ( analogRead (LM35 ) ) ∗ 5 / 1023) / 0 . 0 1 ;
smoothTemp();
temperatura = (float(averageReads) * 5 / 1023) / 0.01;
if(millis() - t1 >= 1000) {
t1 = millis();
unsigned long t2 = (t1 - t0) / 1000;
Serial.print(t2, DEC);
Serial.print(’,’);
Serial.println(temperatura ,DEC);
}
}
Dr. E. S. Pereira 32
Python e Arduino
Resultados
Resultados
Dr. E. S. Pereira 33
Python e Arduino
Resultados
Leitura de Dados N˜ao Suavizados
Comunicac¸ ˜ao Serial
Dr. E. S. Pereira 34
Python e Arduino
Resultados
Leitura de Dados Suavizados
Comunicac¸ ˜ao Serial
Dr. E. S. Pereira 35
Python e Arduino
Resultados
FIM
FIM
MUITO OBRIGADO.
Dr. E. S. Pereira 36

Mais conteúdo relacionado

Mais procurados

Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresFlavio Oliveira Rodrigues
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoAmélia Moreira
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Embarcados
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisFabio Souza
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051Paulo Cerqueira
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em CBruno Oliveira
 

Mais procurados (11)

Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabarito
 
Pic slides
Pic slidesPic slides
Pic slides
 
Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?
 
Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em C
 

Destaque

2017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 032820172017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 03282017CRUZ CERDA
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法nishio
 
Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17Elia Guardiola
 
5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico webMiguel Florido
 
La percée de Mélenchon
La percée de MélenchonLa percée de Mélenchon
La percée de MélenchonLE TERRAIN
 
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb.fr
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsGood Funnel
 
How to apply for an ABS licence
How to apply for an ABS licenceHow to apply for an ABS licence
How to apply for an ABS licenceJonathon Bray
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiMichał Bartyzel
 
Visualizations with Empathy
Visualizations with EmpathyVisualizations with Empathy
Visualizations with EmpathyAmanda Makulec
 
Administração Cientifica | Questões Corrigidas
Administração Cientifica | Questões CorrigidasAdministração Cientifica | Questões Corrigidas
Administração Cientifica | Questões CorrigidasDanilo Mota
 
Turn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planningTurn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planningAlexandre Quach
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeAchim D. Brucker
 
Rock art and IFRAO color card
Rock art and IFRAO color cardRock art and IFRAO color card
Rock art and IFRAO color cardVictor Reijs
 
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de EastrategiesLes actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de EastrategiesEastrategies - Bucarest, Roumanie
 

Destaque (20)

2017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 032820172017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 03282017
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法
 
Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17
 
5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web
 
La percée de Mélenchon
La percée de MélenchonLa percée de Mélenchon
La percée de Mélenchon
 
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech française
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Hoofdzaken App
Hoofdzaken AppHoofdzaken App
Hoofdzaken App
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
Head and shoulders
Head and shouldersHead and shoulders
Head and shoulders
 
How to apply for an ABS licence
How to apply for an ABS licenceHow to apply for an ABS licence
How to apply for an ABS licence
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacji
 
Visualizations with Empathy
Visualizations with EmpathyVisualizations with Empathy
Visualizations with Empathy
 
Administração Cientifica | Questões Corrigidas
Administração Cientifica | Questões CorrigidasAdministração Cientifica | Questões Corrigidas
Administração Cientifica | Questões Corrigidas
 
Turn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planningTurn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planning
 
C4 Logistics Services
C4 Logistics ServicesC4 Logistics Services
C4 Logistics Services
 
Prekat. La Psicologia del Bienestar
Prekat. La Psicologia del BienestarPrekat. La Psicologia del Bienestar
Prekat. La Psicologia del Bienestar
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure Code
 
Rock art and IFRAO color card
Rock art and IFRAO color cardRock art and IFRAO color card
Rock art and IFRAO color card
 
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de EastrategiesLes actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
 

Semelhante a Arduino Day 2017 - Python + Arduino

Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água Projetos AEB
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraPotiLivre Sobrenome
 
Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01Tiago Barros
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino CompletoTiago Barros
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IICarlos Carvalho
 
Circuito com arduino e optoacopladores
Circuito com arduino e optoacopladoresCircuito com arduino e optoacopladores
Circuito com arduino e optoacopladoresNando Mathias
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgGuilherme Kruger Araujo
 
Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)Ana Carneirinho
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino Edgley Xavier
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoTiago Barros
 

Semelhante a Arduino Day 2017 - Python + Arduino (20)

Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
 
Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
 
ARDUINO PRIMEIROS PASSOS
ARDUINO  PRIMEIROS PASSOSARDUINO  PRIMEIROS PASSOS
ARDUINO PRIMEIROS PASSOS
 
Circuito com arduino e optoacopladores
Circuito com arduino e optoacopladoresCircuito com arduino e optoacopladores
Circuito com arduino e optoacopladores
 
Guia AC mod 5
Guia AC mod 5Guia AC mod 5
Guia AC mod 5
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.org
 
Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao Arduino
 

Mais de Eduardo S. Pereira

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreEduardo S. Pereira
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaEduardo S. Pereira
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoEduardo S. Pereira
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaEduardo S. Pereira
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Eduardo S. Pereira
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaEduardo S. Pereira
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotEduardo S. Pereira
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosEduardo S. Pereira
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosEduardo S. Pereira
 

Mais de Eduardo S. Pereira (20)

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 

Arduino Day 2017 - Python + Arduino

  • 1. Python e Arduino Python e Arduino: Analisando dados em tempo real. Dr. Eduardo S. Pereira. @duducosmos/ pereira.somoza@gmail.com https://github.com/duducosmos 01/04/2017 Dr. E. S. Pereira 1
  • 2. Python e Arduino Sum´ario 1 Introduc¸ ˜ao 2 Medida de Temperatura com LM35 3 Comunicac¸ ˜ao Serial - python-serial 4 Gerador de Gr´aficos em tempo Real 5 Suavizac¸ ˜ao de Dados Coletados 6 Resultados Dr. E. S. Pereira 2
  • 3. Python e Arduino Introduc¸ ˜ao Introduc¸ ˜ao Dr. E. S. Pereira 3
  • 4. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 4
  • 5. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 5
  • 6. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 6
  • 7. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 7
  • 8. Python e Arduino Medida de Temperatura com LM35 Medida de Temperatura com LM35 Dr. E. S. Pereira 8
  • 9. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo LM35 - Sensor que apresenta sa´ıda de tens˜ao linear proporcional `a temperatura em que o mesmo se encontra, tendo em sua sa´ıda um sinal de 10mV para cada Grau C´elsius de temperatura; Opera na faixa de [−50o,1500]C. Dr. E. S. Pereira 9
  • 10. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a 0 Volts e 1023 correspondendo a 5 Volts. Como para cada variac¸ ˜ao de 1oC o sensor registra uma mudanc¸a de 10mV, ent˜ao: VA0 = (Vlido ∗(5/1023)); (1) T = VA0/0.01; (2) com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na porta anal´ogica A0 e T ´e a temperatura em graus C´elsius; Dr. E. S. Pereira 10
  • 11. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a 0 Volts e 1023 correspondendo a 5 Volts. Como para cada variac¸ ˜ao de 1oC o sensor registra uma mudanc¸a de 10mV, ent˜ao: VA0 = (Vlido ∗(5/1023)); (1) T = VA0/0.01; (2) com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na porta anal´ogica A0 e T ´e a temperatura em graus C´elsius; Dr. E. S. Pereira 11
  • 12. Python e Arduino Medida de Temperatura com LM35 O experimento Conex˜ao com Arduino Dr. E. S. Pereira 12
  • 13. Python e Arduino Medida de Temperatura com LM35 O c´odigo LM35 v0.1 #include "Arduino.h" const int LM35 = A0; float temperatura; unsigned long t0 = millis(); unsigned long t1 = t0; void setup(){ Serial.begin (9600); } void loop(){ temperatura = (float(analogRead(LM35)) * 5 / 1023) / 0.01; if(millis() - t1 >= 1000) { t1 = millis(); unsigned long t2 = (t1 - t0) / 1000; Serial.print(t2, DEC); Serial.print(’,’); Serial.println(temperatura ,DEC); } } Dr. E. S. Pereira 13
  • 14. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial - python-serial Dr. E. S. Pereira 14
  • 15. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial Comunicac¸ ˜ao Serial Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial Para usu´arios de sistemas tipo debian: sudo apt-get install python-serial Dr. E. S. Pereira 15
  • 16. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial Comunicac¸ ˜ao Serial Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial Para usu´arios de sistemas tipo debian: sudo apt-get install python-serial Dr. E. S. Pereira 16
  • 17. Python e Arduino Comunicac¸ ˜ao Serial - python-serial O c´odigo pyserial # / usr / bin / env python #−∗− coding : UTF−8 −∗− ’ ’ ’ Sistema de comunicacao via porta s e r i a l com arduino . ’ ’ ’ _author = "E. S. Pereira" _date = "31/03/2017" _version= "0.0.1" import serial ser = serial.Serial("/dev/ttyUSB0", 9600) ser.write(’5’) print ser.read() Dr. E. S. Pereira 17
  • 18. Python e Arduino Gerador de Gr´aficos em tempo Real Gerador de Gr´aficos em tempo Real Dr. E. S. Pereira 18
  • 19. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -1 # / usr / bin / env python #−∗− coding : UTF−8 −∗− ’ ’ ’ Sistema de comunicacao via porta s e r i a l com arduino . ’ ’ ’ _author = "E. S. Pereira" _date = "31/03/2017" _version= "0.0.1" import serial import matplotlib.pyplot as plt plt.ion() ser = serial.Serial("/dev/ttyUSB0", 9600) ser.read() Dr. E. S. Pereira 19
  • 20. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -2 def serOut(ser): tmp = ser.read() a = tmp while(tmp != ’n’): tmp = ser.read() a += tmp b = a.split(’r’)[0] b = b.split(’,’) return b[0], b[1] Dr. E. S. Pereira 20
  • 21. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -3 class DynamicUpdate (): # Suppose we know the x range min_x = 0 max_x = 20 def on_launch(self): # Set up p l o t self.figure , self.ax = plt.subplots( # subplot kw=d i c t ( p r o j e c t i o n =’ polar ’) ) self.lines , = self.ax.plot([], [], ’o’) # Autoscale on unknown a x i s and known lims on the other self.ax.set_autoscaley_on(True) # s e l f . ax . s e t x l i m ( s e l f . min x , s e l f . max x ) # s e l f . ax . s e t y l i m ( s e l f . min x , s e l f . max x ) # Other s t u f f self.ax.grid() Dr. E. S. Pereira 21
  • 22. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -4 def on_running(self , xdata , ydata): # Update data ( with the new and the old p o i n t s ) self.lines.set_xdata(xdata) self.lines.set_ydata(ydata) # Need both of t h e s e in order to r e s c a l e self.ax.relim() self.ax.autoscale_view() # We need to draw ∗and∗ f l u s h self.figure.canvas.draw() self.figure.canvas.flush_events() Dr. E. S. Pereira 22
  • 23. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -5 def __call__(self): import numpy as np import time self.on_launch() xdata = [] ydata = [] i = 0 for x in np.arange(0, 100000, 1): x0, y0 = serOut(ser) if(len(x0) <= 6): if(y0 != ’’ and x0 != ’’): print(x0, y0) xdata.append(float(x0)) ydata.append(float(y0)) self.on_running(xdata , ydata) return xdata , ydata Dr. E. S. Pereira 23
  • 24. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte - 6 if(__name__ == "__main__): d = DynamicUpdate() d() Dr. E. S. Pereira 24
  • 25. Python e Arduino Gerador de Gr´aficos em tempo Real C´odigo Dispon´ıvel GitHub C´odigo Dispon´ıvel GitHub https://github.com/duducosmos/arduinoday2017 Dr. E. S. Pereira 25
  • 26. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados Coletados Dr. E. S. Pereira 26
  • 27. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados de sensores Suavizac¸ ˜ao de Dados de sensores Ao inv´es de coletar o dado direto, iremos passar o valor m´edio dos ´ultimos N dados coletados; Lembrando que o valor m´edio representa o valor esperado, ou o valor mais prov´avel de ser o correto; Dr. E. S. Pereira 27
  • 28. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados de sensores Suavizac¸ ˜ao de Dados de sensores Ao inv´es de coletar o dado direto, iremos passar o valor m´edio dos ´ultimos N dados coletados; Lembrando que o valor m´edio representa o valor esperado, ou o valor mais prov´avel de ser o correto; Dr. E. S. Pereira 28
  • 29. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 1 #include "Arduino.h" const int LM35 = A0; float temperatura; unsigned long t0 = millis(); unsigned long t1 = t0; / / Smooth Temp Data const int readsSize = 30; unsigned int readIndex = 0; unsigned int reads[readsSize]; unsigned int totalReads; unsigned int averageReads; Dr. E. S. Pereira 29
  • 30. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 2 void smoothTemp(){ totalReads = totalReads - reads[readIndex]; reads[readIndex] = analogRead(LM35); totalReads = totalReads + reads[readIndex]; readIndex += 1; if(readIndex >= readsSize) { readIndex = 0; } averageReads = totalReads / readsSize; } Dr. E. S. Pereira 30
  • 31. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 3 void setup(){ Serial.begin (9600); for(int i = 0; i < readsSize; i++ ) { reads[i] = 0; } } Dr. E. S. Pereira 31
  • 32. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 3 void loop(){ / / temperatura = ( f l o a t ( analogRead (LM35 ) ) ∗ 5 / 1023) / 0 . 0 1 ; smoothTemp(); temperatura = (float(averageReads) * 5 / 1023) / 0.01; if(millis() - t1 >= 1000) { t1 = millis(); unsigned long t2 = (t1 - t0) / 1000; Serial.print(t2, DEC); Serial.print(’,’); Serial.println(temperatura ,DEC); } } Dr. E. S. Pereira 32
  • 34. Python e Arduino Resultados Leitura de Dados N˜ao Suavizados Comunicac¸ ˜ao Serial Dr. E. S. Pereira 34
  • 35. Python e Arduino Resultados Leitura de Dados Suavizados Comunicac¸ ˜ao Serial Dr. E. S. Pereira 35
  • 36. Python e Arduino Resultados FIM FIM MUITO OBRIGADO. Dr. E. S. Pereira 36