arduino e python: do it yourself

56
Arduino e Python Do It Yourself! Luís Bruno – Jefferson Jarden – Francisco Marcelino

Upload: bruno-nascimento

Post on 17-Dec-2014

1.726 views

Category:

Technology


2 download

DESCRIPTION

Minicurso ministrado no ENUCOMP 2011 em Parnaíba-PI

TRANSCRIPT

Page 1: Arduino e Python: Do It Yourself

Arduino e Python

Do It Yourself!

Luís Bruno – Jefferson Jarden – Francisco Marcelino

Page 2: Arduino e Python: Do It Yourself

Arduino e Python

Faça Você Mesmo!

Page 3: Arduino e Python: Do It Yourself

Quem Somos

● Jefferson Jardem● Luis Bruno● Francisco Marcelino

Page 4: Arduino e Python: Do It Yourself

Software Livre

As 4 liberdades básicas associadas ao software livre são:

– A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)

– A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade.

– A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).

– A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade.

Page 5: Arduino e Python: Do It Yourself

Software Livre

Page 6: Arduino e Python: Do It Yourself

Hardware Livre

● O hardware é de Graça?– Não!

● Direcionado a Liberdade de Conhecimento– Diagramas– Esquemas– Documentos– Core/Firmware– Software/API

Page 7: Arduino e Python: Do It Yourself

Hardware Livre

Page 8: Arduino e Python: Do It Yourself

Hardware Livre

● Algumas Empresas– Sparkfun

– Seeeduino Studio

– Adafruit

– Makerbot

● Brasil– Multilogica

– LabdeGaragem

– Agamenon

Page 9: Arduino e Python: Do It Yourself

Arduino

Page 10: Arduino e Python: Do It Yourself

Arduino

● O que é?– Plataforma de Hardware Livre

● Características – Arduino UNO– Microcontroller ATmega328

– Operating Voltage 5V

– Input Voltage (recommended) 7-12V

– Input Voltage (limits) 6-20V

– Digital I/O Pins 14 (of which 6 provide PWM output)

– Analog Input Pins 6

– DC Current per I/O Pin 40 mA

– DC Current for 3.3V Pin 50 mA

– Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader

– SRAM2 KB (ATmega328)

– EEPROM1 KB (ATmega328)

– Clock Speed 16 MHz

Page 11: Arduino e Python: Do It Yourself

Arduino

– schematics (Layout Drawings)– prototipagem rápida– projetos de computação física– computação pervasiva– computação ubiqua– ambientes inteligentes– instalações interativas

Page 12: Arduino e Python: Do It Yourself

Arduino

● Onde usar Arduino?● Automação de ambiente:

– Desligamento do Luzes de um ambiente– Ligação do irrigador de um jardim– Climatização de um ambiente

Page 13: Arduino e Python: Do It Yourself

Arduino

● A Imaginação é o Limite

Page 14: Arduino e Python: Do It Yourself

Arduino

● Diferentes Hardware

Page 15: Arduino e Python: Do It Yourself

Arduino

Page 16: Arduino e Python: Do It Yourself

Shields

Page 17: Arduino e Python: Do It Yourself

Sensores

Page 18: Arduino e Python: Do It Yourself

Atuadores

Page 19: Arduino e Python: Do It Yourself

O Software Arduino

● Escrito em Java;● Multiplataforma!

● Baseado no Processing e C;● Distribuição livre;

● Windows, Linux e Mac:– http://www.arduino.cc/en/Main/Software

Page 20: Arduino e Python: Do It Yourself

Programando...

1° Compilar 2° Atualizar

Sketch

Page 21: Arduino e Python: Do It Yourself

Estrutura do Código

● Função setup

● Função loop

void setup (){Instruções...

}

void loop (){Instruções...

}

Page 22: Arduino e Python: Do It Yourself

Exemplo de Código

Page 23: Arduino e Python: Do It Yourself

Estruturas de Controle

● If … else● for● switch● while● do while● go to

Page 24: Arduino e Python: Do It Yourself

Principais funções

● pinMode()● Entrada/saída

● digitalWrite/ analogWrite()● digitalRead/ analogRead()● delay()

● milissegundos

Page 25: Arduino e Python: Do It Yourself

Python

Page 26: Arduino e Python: Do It Yourself

Introdução à Linguagem Python

● História● Criada por Guido van Rossum em

1989;● Uma linguagem simples, criada

inicialmente para ensinar programação;

Page 27: Arduino e Python: Do It Yourself

Quem Usa Python?● 7° Linguagem mais usada (TIOBE Agosto);

Page 28: Arduino e Python: Do It Yourself

Google 1997

Page 29: Arduino e Python: Do It Yourself

Introdução à Linguagem Python

● Linguagem de Altíssimo Nível (VHLL);● Tipagem Dinâmica e Forte;● Case Sensitive;● Interpretada/Compilada;● OO, Procedural e Funcional;● Linguagem de Scripts;● Open-Source;● Bliblioteca padrão gigante!

Page 30: Arduino e Python: Do It Yourself

Introdução à Linguagem Python

● Completamente Orientada a Objetos;● Toda variável em Python é objeto!

● Orientação a Objetos?● Objeto – Entidade do mundo real que tem uma

identidade;– Atributos (Características);– Métodos (Comportamento);

● Classe – Abstração que descreve propriedades importantes para uma aplicação.

Page 31: Arduino e Python: Do It Yourself

Instalação

● No Windows● Download do Windows installer no site:● http://www.python.org/download/

● No Linux e Mac:● Maioria das distros, Python é nativo!!!

Page 32: Arduino e Python: Do It Yourself

Executando o Python

● Não necessita de IDEs;● Iniciando o interpretador Python:

● ~$ python

● Executar scripts em arquivos:● ~$ python file.py

Page 33: Arduino e Python: Do It Yourself

Interpretador Interativo

Page 34: Arduino e Python: Do It Yourself

Usando o Interpretador interativo

● Determinar o tipo de um objeto● type(obj)

● Ver docs de uma classe ou comando● help(obj)

● Obter uma lista de quase todos os atributos de um objeto● dir(obj)

Page 35: Arduino e Python: Do It Yourself

Obtendo valores

● input() x = input('Informe um valor: ')

print x # imprime o valor de x

● raw_input()

x = raw_input('Informe seu nome')

print x #imprime o valor da string x

Page 36: Arduino e Python: Do It Yourself

Características do Python

● Blocos por indentação!

● No more chaves! {}● No more ponto e vírgula! (;)● Comentários com #

print “O valor de a é “if a == 0: print “zero” a = “zero”else: print a # fim do script

Page 37: Arduino e Python: Do It Yourself

Normalmente... Em Python

print (“O valor de a é “);if (a == 0){ print (“zero”); a = “zero”;}else { print (a);

} // fim do script

print “O valor de a é “if a == 0: print “zero” a = “zero”else: print a # fim do script

Page 38: Arduino e Python: Do It Yourself

Operadores

● Aritméticos: + , -, *, /, // , %, **● Condicionais: >, <, >=, ==, != , in, is● Atribuição: =, +=, +=, /= , *=● Lógicos: & | ^ ~ (and, or, xor, not)

Page 39: Arduino e Python: Do It Yourself

Strings

● String – Um conjunto de caracteres;

● Podem ocupar uma ou várias linhas:'''String com

multiplas

linhas'''

'String de aspas simples'

"Olá, sou uma 'String'!"

X = 2 '1 + 1 = ', x

Page 40: Arduino e Python: Do It Yourself

Strings

● String como Arrays

s = 'Bem vindos ao Enucomp'

s.__getitem__(1) # e s[1] # e s[4:9] # vindoss +' 2011' # … Enucomp 2011

Page 41: Arduino e Python: Do It Yourself

Strings● Brincando com os operadores

● Obs.: Os operadores são métodos não-destrutivos.

s = 'Arduino'

s + ' + python' #Arduino + Python

s = 'a's > 'b' #False

'Maior' > 'Menor' #False

s = 'k's * 3 # kkk

Page 42: Arduino e Python: Do It Yourself

Alguns métodos de Strings

• __len__(): Retorna o tamanho da string;● __getslice__(x, y): Retorna uma substring de x

até y.

● capitalize(): Retorna a mesma string com a primeira letra em maiúsculo.

● upper(): Retorna a mesma string com todas as letras em maiúsculo.

● lower(): Retorna a mesma string com todas as letras em minúsculo.

Page 43: Arduino e Python: Do It Yourself

List

● Coleção de objetos

numeros = [1, 2, 3.5]string = ["1", '2', "3"]tudo = [10, "50", """Hello"""]

lista = [numeros, string, tudo]

Page 44: Arduino e Python: Do It Yourself

Alguns métodos de List

● append(obj)● Insere no fim da lista

● insert(pos, obj)● Insere na posição especificada

● remove(obj)● Remove o objeto da lista

● pop(posicao)● Remove e retorna o objeto da posição especificada. ● O pop() sem parâmetros retira o último elemento

Page 45: Arduino e Python: Do It Yourself

Alguns métodos de List

count( obj )● Retorna a quantidade de elementos “obj” da lista

● index( obj )● Retorna a posição do “obj” na lista

● reverse()● Inverte a lista colocando os elementos ao contrário

● sort()● Ordena a lista

Page 46: Arduino e Python: Do It Yourself

Tuplas

● Estrutura como as listas, mas não aceitam que seus valores sejam alterados depois da criação.

tupla = (1, 2, 3, 4)

ou

tupla = 1, 2, 3, 4

Page 47: Arduino e Python: Do It Yourself

Ranges

● Função que gera uma lista

range(7) # [ 0, 1, 2, 3, 4, 5, 6 ]

range(1,7) # [ 1, 2, 3, 4, 5, 6 ]

range(1, 9, 3) # [ 1, 4, 8]

Page 48: Arduino e Python: Do It Yourself

Dicionários

● Map● O mesmo que array associativo, map ou

hashes;● Cada entrada é composta por uma chave e um

valor;frameworks = {'python': "Django", 'ruby': "Rails"}dic = {1 : 'UM', 'DOIS': 2}

print frameworks['python'] # ===> Django

print dic[1] # ===> UM

Page 49: Arduino e Python: Do It Yourself

Estruturas de Condição

● If/ elif/ else

if condicao: comandos elif condicao: comandos else: comandos

Page 50: Arduino e Python: Do It Yourself

Loops

● While/ else

while condição: comandos else: comandos

Page 51: Arduino e Python: Do It Yourself

Loops

● For/ else

for variavel in sequencia:

comandos else: comandos

Page 52: Arduino e Python: Do It Yourself

Funções

● Para criar uma função:● def nome_da_funcao( parametros ):

def soma(a,b = 2): print a + b,soma(2) #4soma(2,3) #5

Page 53: Arduino e Python: Do It Yourself

Python com Arduino

Page 54: Arduino e Python: Do It Yourself

PySerial - Instalação

● Windows● http://pypi.python.org/pypi/pyserial

● Debian/ Ubuntu/ derivados:

sudo aptitude install python-serial

Page 55: Arduino e Python: Do It Yourself

Enviando dados para a serial

import serial

porta = '/dev/ttyUSB0'

baud_rate = 9600

arduino = serial.Serial(porta, baud_rate)

arduino.write('H')

print arduino.read()

arduino.close()

Page 56: Arduino e Python: Do It Yourself

Recebendo através do Arduinoint ledPin = 13; int incomingByte = 0;

void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600);}

void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); if (incomingByte == 72){ digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }}