arduino e python: do it yourself

Post on 17-Dec-2014

1.718 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Minicurso ministrado no ENUCOMP 2011 em Parnaíba-PI

TRANSCRIPT

Arduino e Python

Do It Yourself!

Luís Bruno – Jefferson Jarden – Francisco Marcelino

Arduino e Python

Faça Você Mesmo!

Quem Somos

● Jefferson Jardem● Luis Bruno● Francisco Marcelino

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.

Software Livre

Hardware Livre

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

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

Hardware Livre

Hardware Livre

● Algumas Empresas– Sparkfun

– Seeeduino Studio

– Adafruit

– Makerbot

● Brasil– Multilogica

– LabdeGaragem

– Agamenon

Arduino

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

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– Climatização de um ambiente

Arduino

● A Imaginação é o Limite

Arduino

● Diferentes Hardware

Arduino

Shields

Sensores

Atuadores

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

Programando...

1° Compilar 2° Atualizar

Sketch

Estrutura do Código

● Função setup

● Função loop

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

}

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

}

Exemplo de Código

Estruturas de Controle

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

Principais funções

● pinMode()● Entrada/saída

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

● milissegundos

Python

Introdução à Linguagem Python

● História● Criada por Guido van Rossum em

1989;● Uma linguagem simples, criada

inicialmente para ensinar programação;

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

Google 1997

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!

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:● Maioria das distros, Python é nativo!!!

Executando o Python

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

● ~$ python

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

Interpretador Interativo

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)

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: print a # fim do script

Operadores

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

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

Strings

● String como Arrays

s = 'Bem vindos ao Enucomp'

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

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

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.

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. ● O pop() sem parâmetros retira o último elemento

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

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

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]

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

Estruturas de Condição

● If/ elif/ else

if condicao: comandos elif condicao: comandos else: comandos

Loops

● While/ else

while condição: comandos else: comandos

Loops

● For/ else

for variavel in sequencia:

comandos else: comandos

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

Python com Arduino

PySerial - Instalação

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

● Debian/ Ubuntu/ derivados:

sudo aptitude install python-serial

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()

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); } }}

top related