Arduino e Python
Do It Yourself!
Arduino e Python
Quem Somos
● Jefferson Jardem ● jeffersonjardem@gmail.com ● Luís Bruno ● luisbrunu@gmail.com ● Francisco Marcelino ● franciscomarcelinoalmeida@gmail.comSoftware 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.
Hardware Livre
● O hardware é de Graça?
– Não!
● Direcionado a Liberdade de Conhecimento
– Diagramas – Esquemas – Documentos – Core/Firmware – Software/API
Hardware Livre
● Algumas Empresas – Sparkfun – Seeeduino Studio – Adafruit – Makerbot ● Brasil – Multilogica – LabdeGaragem – AgamenonArduino
● 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
Arduino
– schematics (Layout Drawings) – prototipagem rápida
– projetos de computação física – computação pervasiva
– computação ubiqua – ambientes inteligentes – instalações interativas
Arduino
● Onde usar Arduino?
● Automação de ambiente:
– Desligamento do Luzes de um ambiente – Ligação do irrigador de um jardim
Arduino
Arduino
O Software Arduino
● Escrito em Java;
● Multiplataforma!
● Baseado no Processing e C; ● Distribuição livre;
● Windows, Linux e Mac:
Programando...
1° Compilar 2° Atualizar
Estrutura do Código
● Função setup ● Função loop void setup (){ Instruções... } void loop (){ Instruções... }Estruturas de Controle
● If … else ● for ● switch ● while ● do while ● go toPrincipais funções
● pinMode() ● Entrada/saída ● digitalWrite/ analogWrite() ● digitalRead/ analogRead() ● delay() ● milissegundosIntrodução à Linguagem Python
●
História
● Criada por Guido van Rossum em
1989;
● Uma linguagem simples, criada
inicialmente para ensinar programação;
Quem Usa Python?
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;
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.
Instalação
● No Windows
● Download do Windows installer no site: ● http://www.python.org/download/
● No Linux e Mac:
Executando o Python
● Não necessita de IDEs;
● Iniciando o interpretador Python:
● ~$ python
● Executar scripts em arquivos:
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
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
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
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:
Operadores
●
Aritméticos: + , -, *, /, // , %, **
●
Condicionais: >, <, >=, ==, != , in, is
●Atribuição: =, +=, +=, /= , *=
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
Strings
● String como Arrays
s = 'Bem vindos ao Enucomp' s.__getitem__(1) # e
s[1] # e
s[4:9] # vindos
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'
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
List
● Coleção de objetos
numeros = [1, 2, 3.5]
string = ["1", '2', "3"]
tudo = [10, "50", """Hello"""] lista = [numeros, string, tudo]
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.
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()
Tuplas
● Estrutura como as listas, mas não aceitam que
seus valores sejam alterados depois da criação.
tupla = (1, 2, 3, 4) ou
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 ]
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
Estruturas de Condição
● If/ elif/ else
if condicao: comandos elif condicao: comandos else: comandos
Loops
● While/ else while condição: comandos else: comandosLoops
● For/ else
for variavel in sequencia:
comandos
else:
Funções
● Para criar uma função:
● def nome_da_funcao( parametros ):
def soma(a,b = 2): print a + b,
soma(2) #4
PySerial - Instalação
● Windows
● http://pypi.python.org/pypi/pyserial
● Debian/ Ubuntu/ derivados:
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()