SlideShare uma empresa Scribd logo
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
      void setup (){
         Instruções...
      }



●   Função loop

      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!
                               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 #
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
Operadores
● Aritméticos: + , -, *, /, // , %, **
● Condicionais: >, <, >=, ==, != , in, is


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


● Lógicos:  & | ^ ~ (and, or, xor, not)
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'''
Strings
●   String como Arrays

    s = 'Bem vindos ao Enucomp'

    s.__getitem__(1)      # e
    s[1]                 # e
    s[4:9]               # vindos
    s +' 2011'       #   … Enucomp 2011
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.
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)      #4
     soma(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 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);
    }
  }
}

Mais conteúdo relacionado

Arduino e Python: Do It Yourself

  • 1. Arduino e Python Do It Yourself! Luís Bruno – Jefferson Jarden – Francisco Marcelino
  • 2. Arduino e Python Faça Você Mesmo!
  • 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.
  • 6. Hardware Livre ● O hardware é de Graça? – Não! ● Direcionado a Liberdade de Conhecimento – Diagramas – Esquemas – Documentos – Core/Firmware – Software/API
  • 8. Hardware Livre ● Algumas Empresas – Sparkfun – Seeeduino Studio – Adafruit – Makerbot ● Brasil – Multilogica – LabdeGaragem – Agamenon
  • 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 – Climatização de um ambiente
  • 13. Arduino ● A Imaginação é o Limite
  • 14. Arduino ● Diferentes Hardware
  • 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. Programando... 1° Compilar 2° Atualizar Sketch
  • 21. Estrutura do Código ● Função setup void setup (){ Instruções... } ● Função loop void loop (){ Instruções... }
  • 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
  • 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? ● 7° Linguagem mais usada (TIOBE Agosto);
  • 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
  • 38. Operadores ● Aritméticos: + , -, *, /, // , %, ** ● Condicionais: >, <, >=, ==, != , in, is ● Atribuição: =, +=, +=, /= , *= ● Lógicos: & | ^ ~ (and, or, xor, not)
  • 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
  • 54. PySerial - Instalação ● Windows ● http://pypi.python.org/pypi/pyserial ● Debian/ Ubuntu/ derivados: sudo aptitude install python-serial
  • 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); } } }