O documento apresenta as plataformas Arduino e Python, discutindo suas características e aplicações, como hardware e software livres para prototipagem e automação.
3. Quem Somos
● Jefferson Jardem
● Luis Bruno
● Francisco Marcelino
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.
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
12. 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
19. 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
26. Introdução à Linguagem Python
● História
● Criada por Guido van Rossum em
1989;
● Uma linguagem simples, criada
inicialmente para ensinar
programação;
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;
● Bliblioteca padrão gigante!
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:
● Maioria das distros, Python é nativo!!!
32. Executando o Python
● Não necessita de IDEs;
● Iniciando o interpretador Python:
● ~$ python
● Executar scripts em arquivos:
● ~$ python file.py
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
● dir(obj)
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!
print “O valor de a é “
if a == 0:
print “zero”
a = “zero”
else:
print a
# fim do script
● No more chaves! {}
● No more ponto e vírgula! (;)
● Comentários com #
37. Normalmente... Em Python
print (“O valor de a é “); print “O valor de a é “
if (a == 0) if a == 0:
{ print “zero”
print (“zero”); a = “zero”
a = “zero”; else:
} print a # fim do script
else
{
print (a);
} // fim do script
39. Strings
● String – Um conjunto de caracteres;
'String de aspas simples'
"Olá, sou uma 'String'!"
X=2
'1 + 1 = ', x
● Podem ocupar uma ou várias linhas:
'''String com
multiplas
linhas'''
40. Strings
● String como Arrays
s = 'Bem vindos ao Enucomp'
s.__getitem__(1) # e
s[1] # e
s[4:9] # vindos
s +' 2011' # … Enucomp 2011
41. Strings
● Brincando com os operadores
s = 'Arduino'
s + ' + python' #Arduino + Python
s = 'a'
s > 'b' #False
'Maior' > 'Menor' #False
s = 'k'
s * 3 # kkk
● Obs.: Os operadores são métodos não-destrutivos.
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
letras em minúsculo.
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.
● O pop() sem parâmetros retira o último elemento
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()
● Ordena a lista
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
tupla = 1, 2, 3, 4
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 ]
range(1, 9, 3) # [ 1, 4, 8]
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
print dic[1] # ===> UM
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:
comandos
52. Funções
● Para criar uma função:
● def nome_da_funcao( parametros ):
def soma(a,b = 2): print a + b,
soma(2) #4
soma(2,3) #5
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()
arduino.close()
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);
}
}
}