Arduino e Python: Do It Yourself

2.329 visualizações

Publicada em

Minicurso ministrado no ENUCOMP 2011 em Parnaíba-PI

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.329
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
116
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Arduino e Python: Do It Yourself

  1. 1. Arduino e PythonDo It Yourself!Luís Bruno – Jefferson Jarden – Francisco Marcelino
  2. 2. Arduino e PythonFaça Você Mesmo!
  3. 3. Quem Somos● Jefferson Jardem● Luis Bruno● Francisco Marcelino
  4. 4. Software LivreAs 4 liberdades básicas associadas ao software livresã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. 5. Software Livre
  6. 6. Hardware Livre● O hardware é de Graça? – Não! ● Direcionado a Liberdade de Conhecimento – Diagramas – Esquemas – Documentos – Core/Firmware – Software/API
  7. 7. Hardware Livre
  8. 8. Hardware Livre● Algumas Empresas – Sparkfun – Seeeduino Studio – Adafruit – Makerbot ● Brasil – Multilogica – LabdeGaragem – Agamenon
  9. 9. Arduino
  10. 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. 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. 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
  13. 13. Arduino● A Imaginação é o Limite
  14. 14. Arduino● Diferentes Hardware
  15. 15. Arduino
  16. 16. Shields
  17. 17. Sensores
  18. 18. Atuadores
  19. 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
  20. 20. Programando... 1° Compilar 2° AtualizarSketch
  21. 21. Estrutura do Código● Função setup void setup (){ Instruções... }● Função loop void loop (){ Instruções... }
  22. 22. Exemplo de Código
  23. 23. Estruturas de Controle● If … else● for● switch● while● do while● go to
  24. 24. Principais funções● pinMode() ● Entrada/saída● digitalWrite/ analogWrite()● digitalRead/ analogRead()● delay() ● milissegundos
  25. 25. Python
  26. 26. Introdução à Linguagem Python● História● Criada por Guido van Rossum em 1989; ● Uma linguagem simples, criada inicialmente para ensinar programação;
  27. 27. Quem Usa Python?● 7° Linguagem mais usada (TIOBE Agosto);
  28. 28. Google 1997
  29. 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. 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. 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. 32. Executando o Python● Não necessita de IDEs;● Iniciando o interpretador Python: ● ~$ python● Executar scripts em arquivos: ● ~$ python file.py
  33. 33. Interpretador Interativo
  34. 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. 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. 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. 37. Normalmente... Em Pythonprint (“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 scriptelse{ print (a);} // fim do script
  38. 38. Operadores● Aritméticos: + , -, *, /, // , %, **● Condicionais: >, <, >=, ==, != , in, is● Atribuição: =, +=, +=, /= , *=● Lógicos: & | ^ ~ (and, or, xor, not)
  39. 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. 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. 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. 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. 43. List● Coleção de objetos numeros = [1, 2, 3.5] string = ["1", 2, "3"] tudo = [10, "50", """Hello"""] lista = [numeros, string, tudo]
  44. 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. 45. Alguns métodos de Listcount( 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. 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. 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. 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] # ===> Djangoprint dic[1] # ===> UM
  49. 49. Estruturas de Condição● If/ elif/ else if condicao: comandos elif condicao: comandos else: comandos
  50. 50. Loops● While/ else while condição: comandos else: comandos
  51. 51. Loops● For/ else for variavel in sequencia: comandos else: comandos
  52. 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
  53. 53. Python com Arduino
  54. 54. PySerial - Instalação● Windows ● http://pypi.python.org/pypi/pyserial● Debian/ Ubuntu/ derivados: sudo aptitude install python-serial
  55. 55. Enviando dados para a serialimport serialporta = /dev/ttyUSB0baud_rate = 9600arduino = serial.Serial(porta, baud_rate)arduino.write(H)print arduino.read()arduino.close()
  56. 56. 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); } }}

×