SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
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);
    }
  }
}

Contenu connexe

Tendances

2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxeFlapenta
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Introdução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCIntrodução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCLuís Gustavo Martins
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduinoCampus Party Brasil
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLGeorge Mendonça
 

Tendances (20)

2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Python
PythonPython
Python
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Introdução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjCIntrodução à programação em Android e iOS - OOP em ObjC
Introdução à programação em Android e iOS - OOP em ObjC
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduino
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSL
 

En vedette

Groovy for Java Developers
Groovy for Java DevelopersGroovy for Java Developers
Groovy for Java DevelopersAndres Almiray
 
An Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersAn Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersKostas Saidis
 
Python Programming for Arduino
Python Programming for ArduinoPython Programming for Arduino
Python Programming for Arduinorsorage
 
Casa Inteligente com Python e Arduino
Casa Inteligente com Python e ArduinoCasa Inteligente com Python e Arduino
Casa Inteligente com Python e ArduinoRelsi Maron
 
Groovy for java developers
Groovy for java developersGroovy for java developers
Groovy for java developersPuneet Behl
 

En vedette (6)

Groovy for Java Developers
Groovy for Java DevelopersGroovy for Java Developers
Groovy for Java Developers
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
An Introduction to Groovy for Java Developers
An Introduction to Groovy for Java DevelopersAn Introduction to Groovy for Java Developers
An Introduction to Groovy for Java Developers
 
Python Programming for Arduino
Python Programming for ArduinoPython Programming for Arduino
Python Programming for Arduino
 
Casa Inteligente com Python e Arduino
Casa Inteligente com Python e ArduinoCasa Inteligente com Python e Arduino
Casa Inteligente com Python e Arduino
 
Groovy for java developers
Groovy for java developersGroovy for java developers
Groovy for java developers
 

Similaire à Arduino Python DIY

Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaÁlvaro Justen
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoÁlvaro Justen
 
Rachinations
RachinationsRachinations
RachinationsFelipe
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Juliano Atanazio
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfValter moreira
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Luís Gustavo Martins
 
Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Jorge Cardoso
 

Similaire à Arduino Python DIY (20)

Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtiva
 
Aula python
Aula pythonAula python
Aula python
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremo
 
Rachinations
RachinationsRachinations
Rachinations
 
Minicurso de Arduino Básico
Minicurso de Arduino BásicoMinicurso de Arduino Básico
Minicurso de Arduino Básico
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Python
PythonPython
Python
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdf
 
Processing e Arduino
Processing e ArduinoProcessing e Arduino
Processing e Arduino
 
Introdução a plataforma arduino
Introdução a plataforma arduinoIntrodução a plataforma arduino
Introdução a plataforma arduino
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao
 

Arduino Python DIY

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