• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

Share "Arduino e Python. Do It Yourself! Luís Bruno Jefferson Jarden Francisco Marcelino"

Copied!
56
0
0

Texto

(1)

Arduino e Python

Do It Yourself!

(2)

Arduino e Python

(3)

Quem Somos

Jefferson Jardem ● jeffersonjardem@gmail.com ● Luís Bruno ● luisbrunu@gmail.com ● Francisco Marcelino ● franciscomarcelinoalmeida@gmail.com

(4)

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.

(5)
(6)

Hardware Livre

● O hardware é de Graça?

– Não!

● Direcionado a Liberdade de Conhecimento

– Diagramas – Esquemas – Documentos – Core/Firmware – Software/API

(7)
(8)

Hardware Livre

● Algumas Empresas – Sparkfun – Seeeduino Studio – Adafruit – Makerbot ● Brasil – Multilogica – LabdeGaragem – Agamenon

(9)
(10)

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

(11)

Arduino

– schematics (Layout Drawings) – prototipagem rápida

– projetos de computação física – computação pervasiva

– computação ubiqua – ambientes inteligentes – instalações interativas

(12)

Arduino

● Onde usar Arduino?

● Automação de ambiente:

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

(13)

Arduino

(14)

Arduino

(15)
(16)
(17)
(18)
(19)

O Software Arduino

● Escrito em Java;

● Multiplataforma!

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

● Windows, Linux e Mac:

(20)

Programando...

1° Compilar 2° Atualizar

(21)

Estrutura do Código

● Função setup ● Função loop void setup (){ Instruções... } void loop (){ Instruções... }

(22)
(23)

Estruturas de Controle

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

(24)

Principais funções

● pinMode() ● Entrada/saída ● digitalWrite/ analogWrite() ● digitalRead/ analogRead() ● delay() ● milissegundos

(25)
(26)

Introdução à Linguagem Python

História

Criada por Guido van Rossum em

1989;

Uma linguagem simples, criada

inicialmente para ensinar programação;

(27)

Quem Usa Python?

(28)
(29)

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;

(30)

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.

(31)

Instalação

No Windows

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

No Linux e Mac:

(32)

Executando o Python

● Não necessita de IDEs;

● Iniciando o interpretador Python:

~$ python

● Executar scripts em arquivos:

(33)
(34)

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

(35)

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

(36)

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

(37)

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:

(38)

Operadores

Aritméticos: + , -, *, /, // , %, **

Condicionais: >, <, >=, ==, != , in, is

Atribuição: =, +=, +=, /= , *=

(39)

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

(40)

Strings

● String como Arrays

s = 'Bem vindos ao Enucomp' s.__getitem__(1) # e

s[1] # e

s[4:9] # vindos

(41)

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'

(42)

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

(43)

List

● Coleção de objetos

numeros = [1, 2, 3.5]

string = ["1", '2', "3"]

tudo = [10, "50", """Hello"""] lista = [numeros, string, tudo]

(44)

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.

(45)

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

(46)

Tuplas

● Estrutura como as listas, mas não aceitam que

seus valores sejam alterados depois da criação.

tupla = (1, 2, 3, 4) ou

(47)

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 ]

(48)

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

(49)

Estruturas de Condição

● If/ elif/ else

if condicao: comandos elif condicao: comandos else: comandos

(50)

Loops

● While/ else while condição: comandos else: comandos

(51)

Loops

● For/ else

for variavel in sequencia:

comandos

else:

(52)

Funções

● Para criar uma função:

def nome_da_funcao( parametros ):

def soma(a,b = 2): print a + b,

soma(2) #4

(53)
(54)

PySerial - Instalação

● Windows

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

● Debian/ Ubuntu/ derivados:

(55)

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

(56)

Recebendo através do Arduino

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

Referências

Documentos relacionados

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Este trabalho teve por objetivo estudar a viabilidade de utilização dos taninos da casca de acácia negra (Acacia mearnsii) e da madeira de Eucalyptus pellita, como adesivo

Principais fontes de financiamento disponíveis: Autofinanciamento: (corresponde aos fundos Principais fontes de financiamento disponíveis: Autofinanciamento: (corresponde aos

Entre as atividades, parte dos alunos é também conduzida a concertos entoados pela Orquestra Sinfônica de Santo André e OSESP (Orquestra Sinfônica do Estado de São

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

4.12 Upper panel: The symbols represent the absolute derivative of the quantity 6∆ν dr 0213 computed at maximum slope for the models with different masses and input physics

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos