Este documento apresenta uma apostila sobre o Arduino, descrevendo suas características, funcionalidades e aplicações. É dividido em seções tratando da introdução ao Arduino, características da placa Duemilanove, linguagem de programação, instalação do software e exemplos de projetos.
1. O documento discute HTML, páginas web e como navegadores interpretam arquivos HTML para exibir conteúdo na web.
2. É introduzido o que é HTML, como é uma linguagem de marcação usada para formatar conteúdo em páginas da web.
3. São explicados conceitos como tags, atributos e como eles afetam a formatação e exibição do conteúdo em páginas da web.
Este documento apresenta os conceitos fundamentais da computação gráfica, incluindo sistemas gráficos, hardware gráfico, sistemas de coordenadas, dispositivos de visualização e entrada, algoritmos para desenho de primitivas gráficas e preenchimento de polígonos, e transformações 2D e 3D.
O capítulo descreve os conceitos básicos sobre o projeto Arduino, incluindo o que é o projeto Arduino, como instalar o software, realizar um primeiro projeto, utilizar bibliotecas e shields, integrar com o PC e utilizar portas analógicas e digitais.
Este documento descreve os fundamentos da programação orientada a objetos e da linguagem Java, incluindo tópicos como classes, herança, polimorfismo, tipos primitivos, expressões, exceções, APIs, desenvolvimento de interfaces gráficas e applets.
Este documento apresenta uma apostila sobre a linguagem de programação Perl. Ele contém 11 lições sobre tópicos básicos como variáveis, arrays, hashes, expressões regulares e objetos. A apostila também discute tópicos mais avançados como módulos, callbacks e processamento de arquivos e URLs.
Este documento fornece uma introdução e referência completa para o framework de mapeamento objeto-relacional Hibernate. Ele explica como configurar e usar o Hibernate, mapear classes e associações, trabalhar com objetos persistentes, consultas e transações.
1. O documento discute HTML, páginas web e como navegadores interpretam arquivos HTML para exibir conteúdo na web.
2. É introduzido o que é HTML, como é uma linguagem de marcação usada para formatar conteúdo em páginas da web.
3. São explicados conceitos como tags, atributos e como eles afetam a formatação e exibição do conteúdo em páginas da web.
Este documento apresenta os conceitos fundamentais da computação gráfica, incluindo sistemas gráficos, hardware gráfico, sistemas de coordenadas, dispositivos de visualização e entrada, algoritmos para desenho de primitivas gráficas e preenchimento de polígonos, e transformações 2D e 3D.
O capítulo descreve os conceitos básicos sobre o projeto Arduino, incluindo o que é o projeto Arduino, como instalar o software, realizar um primeiro projeto, utilizar bibliotecas e shields, integrar com o PC e utilizar portas analógicas e digitais.
Este documento descreve os fundamentos da programação orientada a objetos e da linguagem Java, incluindo tópicos como classes, herança, polimorfismo, tipos primitivos, expressões, exceções, APIs, desenvolvimento de interfaces gráficas e applets.
Este documento apresenta uma apostila sobre a linguagem de programação Perl. Ele contém 11 lições sobre tópicos básicos como variáveis, arrays, hashes, expressões regulares e objetos. A apostila também discute tópicos mais avançados como módulos, callbacks e processamento de arquivos e URLs.
Este documento fornece uma introdução e referência completa para o framework de mapeamento objeto-relacional Hibernate. Ele explica como configurar e usar o Hibernate, mapear classes e associações, trabalhar com objetos persistentes, consultas e transações.
Este documento discute os principais paradigmas de linguagens de programação, incluindo orientação a objetos, funcional e lógica. Aborda tópicos como tipos de dados, escopo, módulos, exceções, coleta de lixo e características-chave de linguagens como Smalltalk, Lisp, ML, Prolog e linguagens baseadas em fluxo de dados. Fornece uma introdução abrangente aos principais paradigmas de programação e como eles são apoiados por diferentes linguagens.
Ferramenta para Auxílio na Aprendizagem de Linguagens Formais e AutômatosLuan Felipe Knebel
As Linguagens Formais e Autômatos são uma das principais subáreas da computação.
A partir de seus formalismos, com o auxílio da matemática, uma linguagem pode ser
computada e interpretada por uma máquina de estados conhecida como computador. Este
assunto se torna complexo quando apresentado em cursos de computação por sua
complexidade matemática, dificultando no ensino-aprendizado dos estudantes. Neste
contexto, este trabalho apresenta uma ferramenta que auxilia no estudo e facilita a
compreensão dos conceitos básicos abordados em Linguagens Formais e Autômatos. Mais
especificamente o conteúdo das Linguagens Regulares da Hierarquia de Chomsky,
demonstrando de forma simples, tabelas de transições de estados, autômatos finitos
determinísticos e não determinísticos, a partir de uma gramática regular informada na
ferramenta. Desta forma os estudantes de Computação poderão compreender de forma
simples os conceitos abordados em sala de aula, a partir das informações disponibilizadas pela
ferramenta proposta neste trabalho.
Este documento apresenta os conceitos básicos da plataforma Arduino. Primeiramente descreve o que é Arduino, sua plataforma de desenvolvimento incluindo hardware e software. Em seguida explica os conceitos de programação para Arduino incluindo estrutura básica de programa, funções, variáveis, operadores, estruturas de controle e funções embutidas. Por fim apresenta alguns projetos práticos para colocar em prática os conceitos aprendidos.
O documento discute drivers de dispositivos no Linux, incluindo introdução a drivers de dispositivos, estruturas importantes como file operations e filp, e exemplos passo a passo para desenvolvimento de um driver simples chamado mydev.
O documento discute conceitos fundamentais de robótica móvel, incluindo classificações de robôs móveis, sensores, atuadores e controle. Aborda tópicos como navegação, reconhecimento e desafios em robótica móvel.
Este documento fornece um resumo da apostila do módulo Writer do BrOffice.org. Ele explica como iniciar um novo documento de texto ou abrir um existente, salvar arquivos, formatar texto e parágrafos, inserir figuras e tabelas, verificar ortografia e outras funções do editor de texto.
Este manual descreve o software Fenix 1.99 da Nox Automação. Ele contém instruções sobre a instalação e uso das principais funções do sistema, incluindo cadastros, vendas, clientes e relatórios. O manual é dividido em cinco partes cobrindo tópicos como funções comuns, cadastros, vendas, ambientes principais e customização.
Este documento fornece uma introdução ao ambiente R, abordando tópicos como a instalação e uso básico do R, pacotes disponíveis, objetos fundamentais como vetores e matrizes, programação em R incluindo funções e depuração, e manipulação e visualização de dados.
1. Este documento apresenta a linguagem de programação Scilab de forma semelhante a um curso introdutório de programação, descrevendo conceitos como variáveis, operadores aritméticos, estruturas de seleção e repetição, vetores e matrizes.
2. O Scilab é um ambiente de programação para resolução de problemas científicos e de engenharia disponível para sistemas operacionais como Windows, Linux, Unix e Macintosh.
3. O documento aborda tópicos como arquivos de script, manipulação
Este documento fornece informações sobre um curso de introdução ao BrOffice, incluindo seus objetivos, público-alvo, pré-requisitos, descrição, metodologia, cronograma e avaliação. Ele também aborda conceitos iniciais sobre o BrOffice e guias de instalação, além de fornecer detalhes sobre os módulos do Writer (editor de texto), Calc (planilha eletrônica) e Impress (apresentações).
Este documento fornece um tutorial sobre como pensar como um cientista da computação usando a linguagem de programação Python. O documento introduz conceitos básicos de programação como variáveis, tipos de dados, funções, condicionais, recursividade, iteração e estruturas de dados como listas, dicionários e objetos. O documento também aborda tópicos como classes, herança, arquivos, exceções e outros para fornecer uma base sólida sobre programação orientada a objetos usando Python.
O documento apresenta um curso introdutório sobre LaTeX, abordando tópicos como a instalação do LaTeX e editor Kile, estrutura básica de um documento LaTeX, formatação de texto, inserção de fórmulas matemáticas, figuras e tabelas.
Faculdade: Trabalho sobre Seguranca Digital (Versão em PDF)Rafael Biriba
Trabalho feito em 2008 no curso de Análise de Sistemas (IST-RIO), na matéria "Metodologia de Pesquisa",.. Está meio simples,... Mas ficou bom, para um trabalho feito no primeiro período =D (Versão em PDF)
Este documento apresenta uma introdução ao software R para estatística básica. Ele discute a interface, tipos de dados, comandos básicos, vetores, matrizes, gráficos, medidas estatísticas, probabilidade, variáveis aleatórias, inferência estatística, regressão linear e programação em R.
O documento descreve cursos de programação oferecidos pela Caelum, incluindo o curso RR-71 de desenvolvimento ágil para web 2.0 com Ruby on Rails. Além disso, fornece informações sobre a Caelum como empresa reconhecida nacionalmente com mais de 8 mil alunos treinados e instrutores qualificados.
Faixa de Areia Brasil - B - Documentary filmMonique Bodin
O documentário Faixa de Areia Brasil investigará os hábitos de banhistas em praias brasileiras, incluindo o que comem, praticam esportes, e vendem. As diretoras Daniela Kallmann e Flávia Lins e Silva filmarão em nove estados entre 2012-2013 para produzir um longa-metragem que mostrará a diversidade cultural do Brasil.
Este documento presenta las políticas de operación para activar la Red Universitaria ante un desastre. Detalla nueve pasos clave: 1) evaluar la situación, 2) convocar a la comunidad estudiantil, 3) hacer un llamado de auxilio, 4) designar un centro de acopio, 5) solicitar ayuda a otras universidades, 6) recibir la ayuda, 7) coordinar envíos, 8) dar seguimiento a las necesidades, y 9) emitir un informe final. También incluye formatos para evaluar daños y niveles de activación
Los cuidados paliativos se definen como el cuidado activo de enfermedades avanzadas que no responden al tratamiento curativo. Su objetivo es mejorar la calidad de vida del paciente y su familia mediante el alivio del dolor y otros síntomas, así como el apoyo físico, psicológico y espiritual. Los cuidados paliativos involucran un equipo multidisciplinario y se enfocan en lograr una muerte natural sin sufrimiento para el paciente y sus familiares.
O documento discute métricas e indicadores para avaliar processos de desenvolvimento de software ágil, mencionando que as métricas devem medir valor entregue ao cliente e não apenas velocidade, e que indicadores podem alertar sobre problemas de qualidade ou moral da equipe.
O documento discute competências de Ciências Humanas relacionadas a (1) compreender elementos culturais de identidades, (2) entender transformações de espaços geográficos, e (3) compreender impactos de transformações técnicas e tecnológicas. Ele fornece 15 habilidades para cada área de competência.
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPACOTIC-PROEG (UFPA)
O documento descreve o que é o Framework de Gerenciamento de Projetos Complexos e o que não é. Ele também apresenta a equipe da Assessoria de Informação e Tecnologia da Pró-Reitoria de Ensino de Graduação da UFPA, suas áreas de atuação e meios de contato.
Este documento discute os principais paradigmas de linguagens de programação, incluindo orientação a objetos, funcional e lógica. Aborda tópicos como tipos de dados, escopo, módulos, exceções, coleta de lixo e características-chave de linguagens como Smalltalk, Lisp, ML, Prolog e linguagens baseadas em fluxo de dados. Fornece uma introdução abrangente aos principais paradigmas de programação e como eles são apoiados por diferentes linguagens.
Ferramenta para Auxílio na Aprendizagem de Linguagens Formais e AutômatosLuan Felipe Knebel
As Linguagens Formais e Autômatos são uma das principais subáreas da computação.
A partir de seus formalismos, com o auxílio da matemática, uma linguagem pode ser
computada e interpretada por uma máquina de estados conhecida como computador. Este
assunto se torna complexo quando apresentado em cursos de computação por sua
complexidade matemática, dificultando no ensino-aprendizado dos estudantes. Neste
contexto, este trabalho apresenta uma ferramenta que auxilia no estudo e facilita a
compreensão dos conceitos básicos abordados em Linguagens Formais e Autômatos. Mais
especificamente o conteúdo das Linguagens Regulares da Hierarquia de Chomsky,
demonstrando de forma simples, tabelas de transições de estados, autômatos finitos
determinísticos e não determinísticos, a partir de uma gramática regular informada na
ferramenta. Desta forma os estudantes de Computação poderão compreender de forma
simples os conceitos abordados em sala de aula, a partir das informações disponibilizadas pela
ferramenta proposta neste trabalho.
Este documento apresenta os conceitos básicos da plataforma Arduino. Primeiramente descreve o que é Arduino, sua plataforma de desenvolvimento incluindo hardware e software. Em seguida explica os conceitos de programação para Arduino incluindo estrutura básica de programa, funções, variáveis, operadores, estruturas de controle e funções embutidas. Por fim apresenta alguns projetos práticos para colocar em prática os conceitos aprendidos.
O documento discute drivers de dispositivos no Linux, incluindo introdução a drivers de dispositivos, estruturas importantes como file operations e filp, e exemplos passo a passo para desenvolvimento de um driver simples chamado mydev.
O documento discute conceitos fundamentais de robótica móvel, incluindo classificações de robôs móveis, sensores, atuadores e controle. Aborda tópicos como navegação, reconhecimento e desafios em robótica móvel.
Este documento fornece um resumo da apostila do módulo Writer do BrOffice.org. Ele explica como iniciar um novo documento de texto ou abrir um existente, salvar arquivos, formatar texto e parágrafos, inserir figuras e tabelas, verificar ortografia e outras funções do editor de texto.
Este manual descreve o software Fenix 1.99 da Nox Automação. Ele contém instruções sobre a instalação e uso das principais funções do sistema, incluindo cadastros, vendas, clientes e relatórios. O manual é dividido em cinco partes cobrindo tópicos como funções comuns, cadastros, vendas, ambientes principais e customização.
Este documento fornece uma introdução ao ambiente R, abordando tópicos como a instalação e uso básico do R, pacotes disponíveis, objetos fundamentais como vetores e matrizes, programação em R incluindo funções e depuração, e manipulação e visualização de dados.
1. Este documento apresenta a linguagem de programação Scilab de forma semelhante a um curso introdutório de programação, descrevendo conceitos como variáveis, operadores aritméticos, estruturas de seleção e repetição, vetores e matrizes.
2. O Scilab é um ambiente de programação para resolução de problemas científicos e de engenharia disponível para sistemas operacionais como Windows, Linux, Unix e Macintosh.
3. O documento aborda tópicos como arquivos de script, manipulação
Este documento fornece informações sobre um curso de introdução ao BrOffice, incluindo seus objetivos, público-alvo, pré-requisitos, descrição, metodologia, cronograma e avaliação. Ele também aborda conceitos iniciais sobre o BrOffice e guias de instalação, além de fornecer detalhes sobre os módulos do Writer (editor de texto), Calc (planilha eletrônica) e Impress (apresentações).
Este documento fornece um tutorial sobre como pensar como um cientista da computação usando a linguagem de programação Python. O documento introduz conceitos básicos de programação como variáveis, tipos de dados, funções, condicionais, recursividade, iteração e estruturas de dados como listas, dicionários e objetos. O documento também aborda tópicos como classes, herança, arquivos, exceções e outros para fornecer uma base sólida sobre programação orientada a objetos usando Python.
O documento apresenta um curso introdutório sobre LaTeX, abordando tópicos como a instalação do LaTeX e editor Kile, estrutura básica de um documento LaTeX, formatação de texto, inserção de fórmulas matemáticas, figuras e tabelas.
Faculdade: Trabalho sobre Seguranca Digital (Versão em PDF)Rafael Biriba
Trabalho feito em 2008 no curso de Análise de Sistemas (IST-RIO), na matéria "Metodologia de Pesquisa",.. Está meio simples,... Mas ficou bom, para um trabalho feito no primeiro período =D (Versão em PDF)
Este documento apresenta uma introdução ao software R para estatística básica. Ele discute a interface, tipos de dados, comandos básicos, vetores, matrizes, gráficos, medidas estatísticas, probabilidade, variáveis aleatórias, inferência estatística, regressão linear e programação em R.
O documento descreve cursos de programação oferecidos pela Caelum, incluindo o curso RR-71 de desenvolvimento ágil para web 2.0 com Ruby on Rails. Além disso, fornece informações sobre a Caelum como empresa reconhecida nacionalmente com mais de 8 mil alunos treinados e instrutores qualificados.
Faixa de Areia Brasil - B - Documentary filmMonique Bodin
O documentário Faixa de Areia Brasil investigará os hábitos de banhistas em praias brasileiras, incluindo o que comem, praticam esportes, e vendem. As diretoras Daniela Kallmann e Flávia Lins e Silva filmarão em nove estados entre 2012-2013 para produzir um longa-metragem que mostrará a diversidade cultural do Brasil.
Este documento presenta las políticas de operación para activar la Red Universitaria ante un desastre. Detalla nueve pasos clave: 1) evaluar la situación, 2) convocar a la comunidad estudiantil, 3) hacer un llamado de auxilio, 4) designar un centro de acopio, 5) solicitar ayuda a otras universidades, 6) recibir la ayuda, 7) coordinar envíos, 8) dar seguimiento a las necesidades, y 9) emitir un informe final. También incluye formatos para evaluar daños y niveles de activación
Los cuidados paliativos se definen como el cuidado activo de enfermedades avanzadas que no responden al tratamiento curativo. Su objetivo es mejorar la calidad de vida del paciente y su familia mediante el alivio del dolor y otros síntomas, así como el apoyo físico, psicológico y espiritual. Los cuidados paliativos involucran un equipo multidisciplinario y se enfocan en lograr una muerte natural sin sufrimiento para el paciente y sus familiares.
O documento discute métricas e indicadores para avaliar processos de desenvolvimento de software ágil, mencionando que as métricas devem medir valor entregue ao cliente e não apenas velocidade, e que indicadores podem alertar sobre problemas de qualidade ou moral da equipe.
O documento discute competências de Ciências Humanas relacionadas a (1) compreender elementos culturais de identidades, (2) entender transformações de espaços geográficos, e (3) compreender impactos de transformações técnicas e tecnológicas. Ele fornece 15 habilidades para cada área de competência.
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPACOTIC-PROEG (UFPA)
O documento descreve o que é o Framework de Gerenciamento de Projetos Complexos e o que não é. Ele também apresenta a equipe da Assessoria de Informação e Tecnologia da Pró-Reitoria de Ensino de Graduação da UFPA, suas áreas de atuação e meios de contato.
1) O documento fornece instruções para a realização de um simulado do ENEM, incluindo duração de 5h30, proibição de aparelhos eletrônicos e preenchimento correto do gabarito.
2) A prova é dividida em questões de Matemática e Ciências da Natureza, cobrindo tópicos como geometria espacial, física e química.
3) Os alunos devem ler atentamente as instruções para realizar a prova com êxito.
1. O documento contém 12 questões sobre conceitos de mecânica newtoniana relacionados a movimento e referenciais.
2. As questões abordam tópicos como trajetórias de objetos em queda livre em diferentes referenciais, conceito de movimento relativo e escolha do referencial adequado para descrever determinada situação.
3. São propostos exercícios envolvendo objetos em queda dentro de veículos em movimento retilíneo uniforme e análise das trajetórias descritas a partir de diferentes pontos de
Este documento fornece uma introdução aos conceitos básicos do Arduino, incluindo:
1) Uma explicação do que é o projeto Arduino e suas principais características;
2) Instruções sobre como instalar o software de desenvolvimento Arduino;
3) Uma descrição de um primeiro projeto simples utilizando o Arduino.
Este documento fornece uma introdução aos conceitos básicos do Arduino, incluindo:
1) Uma explicação do que é o projeto Arduino e suas principais características;
2) Instruções sobre como instalar o software de desenvolvimento Arduino;
3) Uma descrição de um primeiro projeto simples utilizando Arduino.
Este documento fornece uma introdução aos conceitos básicos do Arduino, incluindo:
1) Uma explicação do que é o projeto Arduino e sua plataforma de hardware e software aberta;
2) Detalhes sobre a instalação do software de desenvolvimento Arduino IDE;
3) Informações sobre como criar o primeiro projeto com um Arduino.
Este documento discute programação orientada a objetos usando Java. Ele cobre tópicos como classes, objetos, herança e polimorfismo, além de detalhar os principais recursos da linguagem Java como tipos, expressões, classes, exceções e o ambiente de desenvolvimento Java. O documento também descreve o uso de bibliotecas padrão Java e o desenvolvimento de aplicações gráficas e distribuídas.
Este documento discute programação orientada a objetos usando Java. Ele cobre tópicos como classes, objetos, herança e polimorfismo, além de detalhar os principais recursos da linguagem Java como tipos, expressões, classes, exceções e o ambiente de desenvolvimento Java. O documento também descreve o uso de classes da API padrão de Java, o desenvolvimento de interfaces gráficas e aplicações distribuídas.
Este documento apresenta as seguintes informações sobre a linguagem G-Portugol:
1) Discute as características gerais da linguagem, incluindo seus tipos de dados primitivos como inteiro e literal, e estruturas de controle como condicionais e repetição.
2) Explica que o objetivo do manual é servir como referência para a linguagem G-Portugol e suas ferramentas, assumindo que o leitor tenha conhecimento prévio de programação.
3) Fornece um resumo dos tópicos ab
Este documento fornece um tutorial sobre o uso da ferramenta Uppaal para modelagem e verificação de sistemas de tempo real. O tutorial introduz os conceitos básicos do Uppaal, apresenta dois casos de estudo e inclui exercícios práticos para testar a compreensão do leitor.
Este documento apresenta um manual sobre redes de computadores. O manual foi escrito por Gustavo Lopes de Oliveira Santos e se encontra em versão digital no formato PDF, podendo ser baixado gratuitamente. O conteúdo está licenciado sob a licença Creative Commons, permitindo que seja copiado e distribuído desde que o autor seja creditado.
O documento fornece uma introdução sobre alternativas ao software proprietário, descrevendo vários aplicativos livres para navegação na internet, escritório, desenvolvimento web, edição de imagem, áudio e vídeo.
O documento fornece uma introdução aos microcontroladores da família PIC, descrevendo suas principais características e componentes. Ele se concentra no microcontrolador PIC16F84, explicando detalhadamente seus registros, memória, portas I/O, temporizador e operação de interrupção.
Este documento apresenta um plano de ensino sobre introdução à microinformática - hardware. O documento descreve os principais componentes de um computador como monitor, teclado, gabinete, placa-mãe, processador, memória RAM, disco rígido e placa de vídeo. Além disso, fornece detalhes sobre os objetivos, público-alvo, cronograma e avaliação do curso.
Este documento é uma apostila sobre LaTeX que ensina como usar seus comandos e ambientes para formatar textos, incluir figuras e tabelas, criar documentos com diferentes classes, dividir arquivos e incluir bibliografias e índices. Apresenta os principais recursos do LaTeX para edição de documentos acadêmicos.
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalRafael Carvalho
A TV digital interativa traz inúmeras facilidades e oportunidades para os programas de televisão.
Com o uso deste sistema, os telespectadores podem ter acesso a jogos e programas interativos cujo conteúdo pode ser moldado de acordo com a sua escolha.
Nessa apostila você terá acesso a uma introdução ao desenvolvimento de aplicações para TV Digital.
Vida de-silício-apostila-arduino-básico-vol.1Valmir Barbosa
Este documento fornece instruções passo-a-passo para realizar experiências usando um Arduino. A primeira experiência ensina como fazer um LED piscar ligando e desligando o pino digital 13. Outras experiências ensinam como ler entradas digitais e analógicas e controlar a intensidade de um LED usando PWM.
1. O documento apresenta uma introdução ao programação em C.
2. É explicado que programas de computador são formados por uma série de instruções e que o arquivo fonte contém estas instruções na linguagem C.
3. O compilador converte as instruções no arquivo fonte para a linguagem de máquina para que o computador possa executar o programa.
O documento descreve uma monografia apresentada para conclusão de curso de graduação em Ciência da Computação. A monografia propõe um conjunto de exemplos de programação organizados em taxonomias hierárquicas para serem integrados a um sistema tutorial online, visando melhorar a adaptabilidade do sistema aos diferentes ritmos de aprendizagem dos alunos.
Este manual descreve o editor LaTeX Kile. Ele explica como iniciar um novo documento LaTeX usando modelos, editar documentos LaTeX usando recursos como realce de sintaxe e autocompletamento, e compilar documentos. O manual também cobre assistentes, menus personalizáveis e ferramentas de construção.
Tcc Mauricio Bento Ghem 2009 - Versão Finalimpalador69
Trabalho de Conclusão de curso de Maurício Bento Ghem (Bentow).
Proposta de uma Ferramenta de Monitoramento de Desempenho em Tempo Real para aplicações Live Streaming baseadas no protocolo RTP
Tcc Mauricio Bento Ghem 2009 - Proposta de uma Ferramenta de Monitoramento de...
Ap tut arduino
1. Universidade Federal Fluminense
´
Centro Tecnologico
Escola de Engenharia
c˜
Curso de Engenharia de Telecomunica¸ oes
c˜
Programa de Educa¸ ao Tutorial
Apostila Arduino
Autores: Erika Guimaraes Pereira da Fonseca
˜
Mathyan Motta Beppu
Orientador: Prof. Alexandre Santos de la Vega
Niteroi-RJ
´
Dezembro / 2010
3. Cap´
ıtulo 1
Introdu¸˜o ao Arduino
ca
O Arduino faz parte do conceito de hardware e software livre e est´ aberto para uso e contribui-
a
¸ao de toda sociedade. O conceito Arduino surgiu na It´lia em 2005 com o objetivo de criar um
c˜ a
dispositivo para controlar projetos/prot´tipos constru´
o ıdos de uma forma menos dispendiosa do
que outros sistemas dispon´ ıveis no mercado.
Arduino ´ uma plataforma de computa¸˜o f´
e ca ısica (s˜o sistemas digitais ligados a sensores e
a
atuadores, que permitem construir sistemas que percebam a realidade e respondem com a¸oes c˜
f´
ısicas), baseada em uma simples placa de Entrada/Sa´ microcontrolada e desenvolvida sobre
ıda
uma biblioteca que simplifica a escrita da programa¸ao em C/C++. O Arduino pode ser usado
c˜
para desenvolver artefatos interativos stand-alone ou conectados ao computador atrav´s de e
Adobe Flash, Processing, Max/MSP, Pure Data ou SuperCollider.
Um microcontrolador (tamb´m denominado MCU) ´ um computador em um chip, que con-
e e
t´m processador, mem´ria e perif´ricos de entrada/sa´
e o e ´
ıda. E um microprocessador que pode ser
programado para fun¸oes espec´
c˜ ıficas, em contraste com outros microprocessadores de prop´sito
o
geral (como os utilizados nos PCs). Eles s˜o embarcados no interior de algum outro dispositivo,
a
no nosso caso o Arduino, para que possam controlar suas fun¸˜es ou a¸oes.
co c˜
´
E um kit de desenvolvimento capaz de interpretar vari´veis no ambiente e transform´-las em
a a
sinal el´trico correspondente, atrav´s de sensores ligados aos seus terminais de entrada, e atuar
e e
no controle ou acionamento de algum outro elemento eletro-eletrˆnico conectado ao terminal
o
de sa´ ıda. Ou seja, ´ uma ferramenta de controle de entrada e sa´ de dados, que pode ser
e ıda
acionada por um sensor (por exemplo um resistor dependente da luz - LDR) e que, logo ap´s o
passar por uma etapa de processamento, o microcontrolador, poder´ acionar um atuador (um
a
motor por exemplo). Como podem perceber, ´ como um computador, que tˆm como sensores
e e
de entrada como o mouse e o teclado, e de sa´ ıda, impressoras e caixas de som, por exemplo,
s´ que ele faz interface com circuitos el´tricos, podendo receber ou enviar informa¸oes/tens˜es
o e c˜ o
neles.
Para um melhor entendimento, abaixo na figura 1 ´ poss´ identificar os elementos princi-
e ıvel
pais do circuito atrav´s de diagrama em blocos.
e
Figura 1.1: Diagrama de Blocos
2
4. O Arduino ´ baseado em um microcontrolador (Atmega), e dessa forma ´ logicamente pro-
e e
gram´vel, ou seja, ´ poss´ a cria¸ao de programas, utilizando uma linguagem pr´pria baseada
a e ıvel c˜ o
em C/C++, que, quando implementadas fazem com que o hardware execute certas a¸oes. Dessa
c˜
forma, estamos configurando a etapa de processamento.
O grande diferencial desta ferramenta ´ que ela ´ desenvolvida e aperfei¸oada por uma
e e c
comunidade que divulga os seus projetos e seus c´digos de aplica¸ao, pois a concep¸ao dela ´
o c˜ c˜ e
open-source, ou seja, qualquer pessoa com conhecimento de programa¸ao pode modific´-lo e
c˜ a
ampli´-lo de acordo com a necessidade, visando sempre a melhoria dos produtos que possam
a
ser criados aplicando o Arduino.
Ele foi projetado com a finalidade de ser de f´cil entendimento, programa¸ao e aplica-
a c˜
¸ao, al´m de ser multiplataforma, ou seja, podemos configura-lo em ambientes Windows,
c˜ e
GNU/Linux e Mac OS. Assim sendo, pode ser perfeitamente utilizado como ferramenta educa-
cional sem se preocupar que o usu´rio tenha um conhecimento espec´
a ıfico de eletrˆnica, mas pelo
o
fato de ter o seu esquema e software de programa¸ao open-source, acabou chamando a aten¸ao
c˜ c˜
dos t´cnicos de eletrˆnica, que come¸aram a aperfei¸o´-la e a criar aplica¸oes mais complexas.
e o c c a c˜
3
5. Cap´
ıtulo 2
Caracter´
ısticas do Duemilanove
O Arduino Duemilanove (2009 em italiano) ´ uma placa baseada no microcontrolador AT-
e
mega168 ou ATmega328. Tem 14 pinos de entrada ou sa´ digital (dos quais 6 podem ser
ıda
utilizados como sa´ıdas PWM), 6 entradas anal´gicas, um oscilador de cristal 16 MHz, contro-
o
lador USB, uma tomada de alimenta¸ao, um conector ICSP, e um bot˜o de reset. Para sua
c˜ a
utiliza¸ao basta conect´-lo a um computador com um cabo USB ou lig´-lo com um adaptador
c˜ a a
AC para DC ou bateria.
2.1 Caracter´
ısticas
Microcontrolador ATmega328 ou ATmega168
Tens˜o operacional
a 5V
Tens˜o de alimenta¸ao (recomendada)
a c˜ 7-12 V
Tens˜o de alimenta¸ao (limites)
a c˜ 6-20 V
Pinos I/O digitais 14 (dos quais 6 podem ser Sa´
ıdas PWM)
Pinos de entrada anal´gica
o 6
Corrente cont´ınua por pino I/O 40 mA
Corrente cont´
ınua para o pino 3.3 V 50 mA
Mem´ria flash
o 32 KB (2KB usados para o bootloader) / 16KB
SRAM 2 KB
EEPROM 1 KB
Frequˆncia de clock
e 16 MHz
Tabela com as caracter´
ısticas b´sicas do arduino Duemilanove.
a
2.2 Alimenta¸˜o
ca
O Arduino Duemilanove pode ser alimentado pela conex˜o USB ou por qualquer fonte de
a
alimenta¸˜o externa. A fonte de alimenta¸˜o ´ selecionada automaticamente.
ca ca e
A alimenta¸˜o externa (n˜o-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte
ca a
pode ser conectada com um plug de 2,1 mm (centro positivo) no conector de alimenta¸ao. c˜
Cabos vindos de uma bateria podem ser inseridos nos pinos GND (terra) e Vin (entrada de
tens˜o) do conector de alimenta¸˜o.
a ca
A placa pode operar com uma alimenta¸˜o externa de 6 a 20 V. Entretanto, se a alimenta¸ao
ca c˜
for inferior a 7 V o pino 5 V pode fornecer menos de 5 V e a placa pode ficar inst´vel. Se a
a
alimenta¸˜o for superior a 12 V o regulador de tens˜o pode superaquecer e avariar a placa. A
ca a
alimenta¸˜o recomendada ´ de 7 a 12 V.
ca e
4
6. Os pinos de alimenta¸ao s˜o:
c˜ a
• Vin : entrada de alimenta¸ao para a placa Arduino quando uma fonte externa for utilizada.
c˜
Vocˆ pode fornecer alimenta¸ao por este pino ou, se usar o conector de alimenta¸ao,
e c˜ c˜
acessar a alimenta¸ao por este pino;
c˜
• 5 V: A fonte de alimenta¸˜o utilizada para o microcontrolador e para outros componentes
ca
da placa. Pode ser proveniente do pino Vin atrav´s de um regulador on-board ou ser
e
fornecida pelo USB ou outra fonte de 5 V;
• 3 V3: alimenta¸ao de 3,3 V fornecida pelo circuito integrado FTDI (controlador USB). A
c˜
corrente m´xima ´ de 50 mA;
a e
• GND (ground): pino terra.
2.3 Mem´ria
o
O ATmega328 tem 32 KB de mem´ria flash (onde ´ armazenado o software), al´m de 2 KB
o e e
de SRAM (onde ficam as vari´veis) e 1 KB of EEPROM (esta ultima pode ser lida e escrita
a ´
atrav´s da biblioteca EEPROM e guarda os dados permanentemente, mesmo que desliguemos
e
a placa). A mem´ria SRAM ´ apagada toda vez que desligamos o circuito.
o e
2.4 Entrada e Sa´
ıda
Cada um dos 14 pinos digitais do Duemilanove pode ser usado como entrada ou sa´ usando
ıda
as fun¸˜es de pinMode(), digitalWrite(), e digitalRead(). Eles operam com 5 V.
co
Cada pino pode fornecer ou receber um m´ximo de 40 mA e tem um resistor pull-up interno
a
(desconectado por padr˜o) de 20-50 kΩ. Al´m disso, alguns pinos tˆm fun¸oes especializadas:
a e e c˜
• Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL.
Estes pinos s˜o conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.
a
• PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma sa´ anal´gica PWM de 8-bit com a fun¸ao
ıda o c˜
analogWrite().
• SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunica¸˜o SPI,
ca
que embora compat´ com o hardware, n˜o est´ inclu´ na linguagem do Arduino.
ıvel a a ıda
• LED: 13. H´ um LED j´ montado e conectado ao pino digital 13.
a a
O Duemilanove tem 6 entradas anal´gicas, cada uma delas est´ ligada a um conversor
o a
anal´gico-digital de 10 bits, ou seja, transformam a leitura anal´gica em um valor dentre 1024
o o
possibilidades (exemplo: de 0 a 1023). Por padr˜o, elas medem de 0 a 5 V, embora seja
a
poss´ mudar o limite superior usando o pino AREF e um pouco de c´digo de baixo n´
ıvel o ıvel.
Adicionalmente alguns pinos tˆm funcionalidades especializadas:
e
• I2C: 4 (SDA) e 5 (SCL). Suportam comunica¸ao I2C (TWI) usando a biblioteca Wire.
c˜
• AREF. referˆncia de tens˜o para entradas anal´gicas. Usados com analogReference().
e a o
• Reset. Envie o valor LOW para reiniciar o microcontrolador. Tipicamente utilizados para
adicionar um bot˜o de reset aos shields( placas que podem ser plugadas ao Arduino para
a
extender suas capacidades) que bloqueiam o que h´ na placa.
a
5
7. 2.5 Comunica¸˜o
ca
Com o Arduino Duemilanove a comunica¸ao com um computador, com outro Arduino ou com
c˜
outros microcontroladores ´ muito simplificada. O ATmega328 permite comunica¸ao serial no
e c˜
padr˜o UART TTL (5 V), que est´ dispon´ nos pinos digitais 0 (RX) e 1 (TX). Um chip
a a ıvel
FTDI FT232RL na placa encaminha esta comunica¸˜o serial atrav´s da USB e os drivers FTDI
ca e
(inclu´ no software do Arduino) fornecem uma porta virtual para o software no computador.
ıdo
O software Arduino inclui um monitor serial que permite que dados simples de texto sejam
enviados e recebidos a placa Arduino. Os LEDs RX e TX da placa piscam quando os dados
`
est˜o sendo transferidos ao computador pelo chip FTDI e h´ conex˜o USB (mas n˜o quando
a a a a
h´ comunica¸ao serial pelos pinos 0 e 1).
a c˜
A biblioteca SoftwareSerial permite comunica¸ao serial por quaisquer dos pinos digitais do
c˜
Duemilanove.
O ATmega328 tamb´m oferece suporte aos padr˜es de comunica¸˜o I2C (TWI) e SPI. O
e o ca
software do Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C. Para
usar a comunica¸ao SPI veja o datasheet (folha de informa¸oes) do ATmega328.
c˜ c˜
2.6 Programa¸˜o
ca
O ambiente de programa¸˜o mais indicado ´ o do software Arduino, que pode ser baixado no
ca e
seguinte site: http://www.arduino.cc/en/Main/Software. Mais detalhes sobre a programa¸ao
c˜
no cap´
ıtulo Referˆncias da linguagem usada na programa¸ao do Arduino.
e c˜
2.7 Reset Autom´tico
a
Algumas vers˜es anteriores do Arduino requerem um reset f´
o ısico (pressionando o bot˜o de reset
a
na placa) antes de carregar um sketch(o programa a ser compilado). O Arduino Duemilanove
´ projetado de modo a permitir que isto seja feito atrav´s do software que esteja rodando no
e e
computador conectado. Uma das linhas de controle de hardware (DTR) do FT232RL est´ a
conectada ao reset do ATmega328 via um capacitor de 100 microFaraday . Quando esta linha ´ e
colocada em n´ l´gico baixo, o sinal cai por tempo suficiente para reiniciar o chip. O software
ıvel o
Arduino usa esta caracter´ ıstica para permitir carregar o programa simplesmente pressionando
o bot˜o “upload ” no ambiente Arduino. Isto significa que o bootloader pode ter um timeout
a
mais curto, j´ que a ativa¸˜o do DTR (sinal baixo) pode ser bem coordenada com o in´ do
a ca ıcio
upload.
Estas configura¸˜es tˆm outras implica¸oes. Quando o Duemilanove est´ conectado a um
co e c˜ a
computador rodando Mac OS X ou GNU/Linux, ele reinicia toda vez que a conex˜o ´ feita por
a e
software (via USB). No pr´ximo meio segundo aproximadamente, o bootloader estar´ rodando
o a
no Duemilanove. Considerando que ´ programado para ignorar qualquer coisa a n˜o ser um
e a
upload de um novo c´digo, ele interceptar´ os primeiros bytes de dados sendo enviados para a
o a
placa depois que a conex˜o ´ aberta. Se um sketch rodando na placa recebe configura¸oes de
a e c˜
uma vez ou outros dados ao iniciar, assegure-se que o software que esteja comunicando espere
um segundo depois de aberta a conex˜o antes de enviar estes dados.
a
O Duemilanove tem uma trilha que pode ser cortada para desabilitar o auto-reset e pode
ser ressoldada para reativ´-lo, ´ chamada de “RESET-EN”, vocˆ pode tamb´m desabilitar o
a e e e
auto-reset conectando um resistor de 110 Ω dos +5 V at´ o sinal de reset.
e
6
8. 2.8 Prote¸˜o contra sobrecorrente USB
ca
O Arduino Duemilanove tem um polifus´ que protege a porta USB do seu computador contra
ıvel
curtocircuito e sobrecorrente. Apesar da maioria dos computadores possu´
ırem prote¸˜o interna
ca
pr´pria, o fus´ proporciona uma prote¸ao extra. Se mais de 500 mA forem aplicados na porta
o ıvel c˜
USB, o fus´ ir´ automaticamente interromper a conex˜o at´ que o curto ou a sobrecarga seja
ıvel a a e
removida.
7
9. Cap´
ıtulo 3
Referˆncias da linguagem usada na
e
programa¸˜o do Arduino
ca
Nesse cap´
ıtulo iremos fazer uma pequena introdu¸˜o sobre como s˜o estruturados os programas
ca a
para o Arduino, conhecendo a linguagem usada como referˆncia e suas principais fun¸oes. E
e c˜
por fim veremos as funcionalidades extras que o uso de bibliotecas nos proporciona.
3.1 Linguaguem de referˆncia
e
Os programas para o Arduino s˜o implementados tendo como referˆncia a linguagem C++.
a e
Preservando sua sintaxe cl´ssica na declara¸ao de vari´veis, nos operadores, nos ponteiros, nos
a c˜ a
vetores, nas estruturas e em muitas outras caracter´ısticas da linguagem. Com isso temos as
referˆncias da linguagem, essas podem ser divididas em trˆs partes principais: As estruturas,
e e
os valores (vari´veis e constantes) e as fun¸˜es.
a co
As estruturas de referˆncias s˜o:
e a
• Estruturas de controle (if, else, break, ...)
• Sintaxe b´sica (define, include, ; , ...)
a
• Operadores aritm´ticos e de compara¸˜o (+, -, =, ==, !=, ...)
e ca
• Operadores booleanos (, ||, !)
• Acesso a ponteiros (*, )
• Operadores compostos (++, –, +=, ...)
• Operadores de bits (|, , , ...)
Os valores de referˆncias s˜o:
e a
• Tipos de dados(byte, array, int , char , ...)
• Convers˜es(char(), byte(), int(), ...)
o
• Vari´vel de escopo e de qualifica¸˜o (variable scope, static, volatile, ...)
a ca
• Utilit´rios (sizeof(), diz o tamanho da vari´vel em bytes)
a a
8
10. ´
E bom citar que o software que vem no Arduino j´ provˆ v´rias fun¸˜es e constantes para
a e a co
facilitar a programa¸ao.
c˜
• setup()
• loop()
• Constantes (HIGH | LOW , INPUT | OUTPUT , ...)
• Bibliotecas (Serial, Servo, Tone, etc.)
3.2 Fun¸˜es
co
As fun¸oes s˜o referˆncias essenciais para o desenvolvimento de um projeto usando o Arduino,
c˜ a e
principalmente para os iniciantes no assunto. Essas fun¸oes j´ implementadas e dispon´
c˜ a ıveis em
bibliotecas direcionam e exemplificam as funcionalidades b´sicas do microcontrolador. Temos
a
como fun¸oes b´sicas e de referˆncias as seguintes fun¸oes:
c˜ a e c˜
• Digital I/O
pinMode() digitalWrite() digitalRead()
• Anal´gico I/O
o
analogReference() analogRead() analogWrite() - PWM
• Avan¸ado I/O
c
tone() noTone() shiftOut() pulseIn()
• Tempo
millis() micros() delay() delayMicroseconds()
• Matem´tica
a
min() max() abs() constrain() map() pow() ***s´ do C/C++ sqrt() ***s´ do C/C++
o o
• Trigonom´trica
e
sin() ***s´ do C/C++ cos() ***s´ do C/C++ tan() ***s´ do C/C++
o o o
• N´meros aleat´rios
u o
randomSeed() random()
• Bits e Bytes
lowByte() highByte() bitRead() bitWrite() bitSet() bitClear() bit()
• Interrup¸oes externas
c˜
attachInterrupt() detachInterrupt()
• Interrup¸oes
c˜
interrupts() noInterrupts()
• Comunica¸ao Serial
c˜
9
11. 3.3 Bibliotecas
O uso de bibliotecas nos proporciona um horizonte de programa¸ao mais amplo e diverso quando
c˜
comparado a utiliza¸˜o apenas de estruturas, valores e fun¸˜es. Isso ´ percept´
ca co e ıvel quando
analisamos os assuntos que s˜o abordados por cada biblioteca em espec´
a ıfico. Lembrando sempre
que, para se fazer uso de uma biblioteca esta j´ deve estar instalada e dispon´ na sua m´quina.
a ıvel a
Temos as seguintes bibliotecas de referˆncia:
e
• EEPROM - leitura e escrita de “armazenamento” permanente.
• Ethernet - para se conectar a uma rede Ethernet usando o Arduino Ethernet Shield.
• Firmata - para se comunicar com os aplicativos no computador usando o protocolo Fir-
mata.
• LiquidCrystal - para controlar telas de cristal l´
ıquido (LCDs).
• Servo - para controlar servo motores.
• SPI - para se comunicar com dispositivos que utilizam bararmento Serial Peripheral In-
terface (SPI).
• SoftwareSerial - Para a comunica¸ao serial em qualquer um dos pinos digitais.
c˜
• Stepper - para controlar motores de passo.
• Wire - Dois Wire Interface (TWI/I2C) para enviar e receber dados atrav´s de uma rede
e
de dispositivos ou sensores.
Temos como referˆncia tamb´m, o uso de bibliotecas mais espec´
e e ıficas. O que ´ de extrema
e
importˆncia quando se faz o uso do arduino com um enfoque em uma determinada area. Como
a ´
por exemplo:
Comunica¸˜o (redes e protocolos)
ca
• Messenger - Para o processamento de mensagens de texto a partir do computador.
• NewSoftSerial - Uma vers˜o melhorada da biblioteca SoftwareSerial.
a
• OneWire - Dispositivos de controle que usam o protocolo One Wire.
• PS2Keyboard - Ler caracteres de um PS2 teclado.
• Simple Message System - Enviar mensagens entre Arduino e o computador.
• SSerial2Mobile - Enviar mensagens de texto ou e-mails usando um telefone celular.
• Webduino - Biblioteca que cria um servidor Web (para uso com o Arduino Ethernet
Shield).
• X10 - Envio de sinais X10 nas linhas de energia AC.
• XBee - Para se comunicar via protocolo XBee.
• SerialControl - Controle remoto atrav´s de uma conex˜o serial.
e a
10
12. Sensoriamento
• Capacitive Sensing - Transformar dois ou mais pinos em sensores capacitivos.
• Debounce - Leitura de ruidos na entrada digital.
ca ¨e ´
Gera¸˜o de Frequˆncia e de Audio
• Tone - Gerar ondas quadradas de freq¨ˆncia de ´udio em qualquer pino do microcontro-
ue a
lador.
Temporiza¸˜o
ca
• DateTime - Uma biblioteca para se manter informado da data e hora atuais do software.
• Metro - Ajuda ao programador a acionar o tempo em intervalos regulares.
• MsTimer2 - Utiliza o temporizador de 2 de interrup¸ao para desencadear uma a¸˜o a
c˜ ca
cada N milissegundos.
Utilidades
• TextString (String) - Manipular strings
• PString - uma classe leve para imprimir em buffers.
• Streaming - Um m´todo para simplificar as declara¸˜es de impress˜o.
e co a
11
13. Cap´
ıtulo 4
Instala¸˜o da IDE e suas bibliotecas
ca
Neste cap´
ıtulo iremos explicar como instalar a IDE e conectar a placa Arduino ao computador
para sua programa¸ao. Junto com a placa arduino vocˆ deve ter um cabo USB tipo AB para
c˜ e
poder conect´-lo ao computador.
a
4.1 Arduino para Windows
Primeiramente deve-se baixar o ambiente para o Arduino que pode ser encontrado no seguinte
site: //www.arduino.cc/en/Main/Software , em download clique em Windows e baixe o arquivo
arduino-0018.zip (ou mais novo), ser´ necess´rio um programa capaz de descompactar o arquivo
a a
(exemplos: WinZip, WinRAR, etc.). Certifique-se de preservar a estrutura da pasta. Dˆ e
um duplo clique na pasta para abri-la, haver´ uns arquivos e sub-pastas, clique no aplicativo
a
arduino, este ser´ seu ambiente de desenvolvimento.
a
Conecte a placa ao computador atrav´s do cabo USB, o LED verde na placa nomeado por
e
PWR deve ascender, ele indica que a placa est´ ligada. O arduino seleciona automaticamente
a
a fonte de alimenta¸ao adequada.
c˜
Quando se conecta a placa, o Windows dever´ iniciar o processo de instala¸ao do driver.
a c˜
No windows vista, o driver deve ser baixado e instalado automaticamente. No Windows XP o
assistente Adicionar Novo Hardware ser´ aberto:
a
• Quando o Windows perguntar se pode se conectar ao Windows Update para proucurar o
software selecione n˜o, clique em Avan¸ar.
a c
• Selecione personalizar, logo ap´s selecione instalar e clique em Avan¸ar.
o c
• Certifique-se de poucurar o melhor driver, desmarque a pesquisa de m´ ıdia remov´ ıvel;
selecione Incluir este local na pesquisa e proucure os drivers /FTDI USB Drivers diret´rios
o
de distribui¸ao do Arduino. Clique em Avan¸ar.
c˜ c
• O assistente ir´ proucurar o driver e em seguida, dizer que um hardware foi encontrado.
a
Clique em Concluir.
• O assistente de novo hardware abrir´ novamente, fa¸a todos os passos da mesma maneira,
a c
desta vez, uma porta serial USB ser´ encontrada.
a
12
14. 4.2 Arduino para GNU/Linux
Para a instala¸ao da IDE e suas bibliotecas no sistema operacional Linux, podemos assim como
c˜
feito para o Windows baixar o arquivo zipado atrav´s do site http://www.arduino.cc/en/Main/Software.
e
Apenas vale resaltar que neste sistema operacional temos um tratamento diferente com rela¸˜o
ca
a manipula¸ao de pastas e diret´rios, agora o arquivo baixado ´ .tar.gz.
c˜ o e
Al´m desta forma de instala¸ao, temos uma outra mais objetiva para executar o mesmo
e c˜
procedimento, esta ultima usando apenas o terminal. Veremos um passo a passo deste proce-
´
dimento usando o Linux Ubuntu.
Links usados:
• http://www.arduino.cc/playground/Linux/Ubuntu
• https://launchpad.net/ arduino-ubuntu-team/+archive/ppa
• https://launchpad.net/+help/soyuz/ppa-sources-list.html
Passo a Passo da instala¸˜o no Ubuntu
ca
• O primeiro passo ´ com o terminal aberto digitar o comando: sudo add-apt-repository
e
ppa:arduino-ubuntu-team/ppa
• Com o t´rmino do primeiro passo executamos o segundo comando digitando: sudo apti-
e
tude update
• E por fim executamos o ultimo comando digitando: sudo aptitude install arduino
´
• Ap´s estes trˆs passos a IDE est´ instalada e pode ser acessada pelo menu aplicati-
o e a
vos/desenvolvimento/arduino
Outras distribui¸oes de Linux pesquisar no site http://www.arduino.cc/en/Main/Software
c˜
e para Mac OS pesquisar em http://www.arduino.cc/en/Guide/MacOSX.
13
15. Cap´
ıtulo 5
Desenvolvimento de Projetos
Neste cap´
ıtulo iremos ver alguns exemplos de aplica¸oes simples com o Arduino, agora com
c˜
uma pequena base de c para arduino podemos come¸ar a fazer e explicar exemplos mesmo para
c
quem n˜o possua uma grande infraestrutura possa realiz´-lo.
a a
5.1 Exemplo 1
Come¸aremos com o exemplo Blink, que j´ vem no aplicativo. Para encontrar o exemplo clique
c a
em File → Examples → Digital → Blink.
O programa tem como objetivo acender e apagar o LED de um em um segundo. Para
compilar este exemplo n˜o ´ necess´rio de nenhuma outra infraestrutura que n˜o o pr´prio
a e a a o
Arduino.
Primeiramente, vamos criar uma vari´vel chamada ledPin que armazenar´ o n´mero da porta
a a u
onde o LED est´ conectado (vari´vel do tipo inteiro):
a a
int ledPin = 13;
Assim quando nos referirmos a vari´vel ledPin estaremos nos referindo a sa´ 13.
` a ` ıda
O seguinte passo ´ classificar o ledpin como pino de Sa´
e ıda, isto ´ feito da seguinte maneira:
e
void setup() {
pinMode(ledPin, OUTPUT);
}
A fun¸˜o pinMode() tem como primeiro parˆmetro o pino e como segundo parˆmetro se
ca a a
ele ´ pino de entrada ou sa´
e ıda. Agora come¸aremos a escrever o processamento. O programa
c
rodar´ em um loop, pois n˜o h´ ocorrˆncias ou interferˆncias que mudem o estado. Dentro do
a a a e e
loop ter´ uma fun¸˜o que far´ o LED ficar aceso por 1 segundo e depois ficar apagado por mais
a ca a
um segundo, ap´s isso volta ao loop. Escreva da seguinte maneira:
o
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
14
16. A fun¸˜o digitalWrite() escreve uma informa¸ao digital, ou seja, 0 (LOW) ou 1 (HIGH).
ca c˜
Seu primeiro parˆmetro ´ o pino de sa´
a e ıda, que no caso ´ o ledPin. O segundo parˆmetro ´ o
e a e
estado, que no caso ´ a sa´
e ıda, HIGH ou LOW. Quando uma porta digital est´ em estado baixo
a
(LOW), ela fica com 0V, j´ quando est´ em estado alto (HIGH), fica em 5 V.
a a
A fun¸ao delay() ´ um atraso que se d´ para a continua¸˜o da leitura do programa, logo
c˜ e a ca
como foi escrito que o ledPin estar´ aceso, s´ ap´s um segundo, ou como est´ escrito 1000
a o o a
ms, ir´ ler a linha seguinte que escreve que a sa´ do ledPin ´ baixa, e o mesmo ocorre mais
a ıda e
uma vez.
Antes de fazer o upload do programa, primeiro deve-se escolher a porta USB em que o
Arduino se encontra. Para isso v´ em Tools → Serial Port → porta, onde porta ´ o nome da
a e
porta onde est´ ligado o Arduino (/dev/ttyUSB*, no caso de GNU/Linux, COM* em Windows).
a
Para saber em qual porta o Arduino se encontra, fa¸a por tentativa e erro, logo escolha um e
c
tente rodar, caso n˜o rode, ´ o outro. Outro passo que deve-se fazer ´ escolher o modelo da
a e e
placa, para isso v´ em Tools → Board e o modelo da sua placa. Agora sim para fazer o upload,
a
clique em Upload, como mostra a figura 5.1.
Figura 5.1: Upload
15
17. 5.2 Exemplo 2
No segundo exemplo exploraremos melhor as sa´ ıdas digitais. Neste exemplo ser˜o necess´rios
a a
10 LEDs para sua execu¸ao. Os LEDs ascender˜o em sequˆncia e ficar˜o acesos por 1 segundo,
c˜ a e a
at´ que o ultimo apagar´ e todos os outros em sequˆncia apagar˜o.
e ´ a e a
Para a confec¸ao do projeto ligue o positivo dos LEDs nos pinos digitais de 2 ´ 11 e a outra
c˜ e
ponta em um protoboard, no lado negativo dos LEDs ligue resistores de 150 Ω, em s´rie, e a
e
outra ponta de todos os resistores no terra do Arduino, GND na placa. Assim como na figura
5.2.
Figura 5.2: Circuito Exemplo 2
As primeiras linhas de comando s˜o para declara¸˜o de vari´veis, iremos precisar de uma
a ca a
vari´vel constante e inteira de valor 10, em nosso caso chamamos de ledCount. Outra vari´vel
a a
necess´ria ´ um vetor com 10 posi¸˜es, enumerados de 2 ´ 11, que s˜o os n´meros dos pinos de
a e co e a u
sa´ digital que ser˜o utilizados que tamb´m possuem valores inteiros, chamamos o vetor de
ıda a e
ledPins. A seguir vem a declara¸ao a ser feita:
c˜
const int ledCount = 10;
int ledPins[] = { 2, 3, 4, 5, 6, 7,8,9,10,11 };
Agora com as vari´veis declaradas vamos definir o vetor ledPins como pinos de sa´ ,
a ıda
para isso utilizaremos um loop, da seguinte maneira:
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
Na primeira posi¸˜o do for declaramos uma vari´vel que inicia em 0. Na segunda posi¸ao
ca a c˜
damos a condi¸ao para o for, e na terceira a cada vez que ´ verificada a condi¸ao do for, com
c˜ e c˜
execu¸˜o da primeira, ´ acrescido 1 ao valor de thisLed, que ´ a vari´vel que utilizaremos
ca e e a
para chamar as determinadas posi¸˜es do vetor ledPins. A fun¸ao pinMode(), como vista
co c˜
no exemplo anterior, est´ declarando que o vetor ledPins ´ um vetor de sa´ de dados.
a e ıda
Agora ser´ iniciado um loop, que far´ com que o programa sempre rode, dentro dele ter´
a a a
um for que acender´ todos os LEDs sequencialmente, com um intervalo de 1 segundo (1000
a
ms) entre cada LED. O corpo do programa fica da seguinte maneira:
void loop() {
16
18. for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite(ledPins[thisLed], HIGH);
delay(1000);
}
delay(1000);
Perceba que o for ´ da mesma maneira que o ultimo, pois a id´ia ´ sempre se referir `s po-
e ´ e e a
si¸˜es do vetor, a diferen¸a aqui ´ que para cada posi¸˜o estamos acendendo um LED, usando
co c e ca
a fun¸ao digitalWrite. A fun¸ao delay foi utilizada para que seja mais f´cil de visualizar
c˜ c˜ a
que cada LED acende de cada vez, e que ap´s todos os LEDs acenderem, todos ficam acesos
o
por mais um segundo.
Agora ser´ feito o mesmo, mas para apagar os LEDs, como mostra a seguir:
a
for (int thisLed = 9; thisLed >= 0; thisLed--) {
digitalWrite(ledPins[thisLed], LOW);
delay(1000);
}
delay(1000);
}
A vari´vel thisLed, utilizada apenas no for, come¸a com valor 9 e ´ decrescida de 1 at´
a c e e
que chegue em 0, logo os LEDs apagar´o do ultimo a acender para o primeiro, e permanecer´
a ´ a
apagado por 1 segundo.
Este foi o segundo exemplo, perceba que ´ poss´ modific´-lo com o que j´ foi aprendido,
e ıvel a a
fazendo com que ele apague na mesma ordem que acende, ou fazendo qualquer outra mudan¸a c
desejada.
17
19. 5.3 Exemplo 3
Neste exemplo utilizaremos a entrada anal´gica e a sa´ serial na confec¸˜o de um capac´
o ıda ca ımetro.
Para isso ser´ necess´rio um resistor, que pode ter qualquer valor que chamaremos de R1, um
a a
resitor de 220Ω, um capacitor, um protoboard e um fio.
Ligue o positivo do capacitor em um ponto comum e o negativo no terra, o resistor R1 entre
o +5 da placa e o ponto comum, ligue o outro resistor, que chamaremos de R2 e tem o valor
de 220 Ω entre o ponto comum e o pino 11, que ´ o pino que ir´ descarregar o capacitor. Ligue
e a
o fio do ponto comum a entrada anal´gica.
o
Figura 5.3: Circuito Exemplo 3
Iremos calcular o valor do capacitor medindo o tempo de carga, sabemos que uma cons-
tante de tempo (τ = T C) em segundos ´ igual a resistˆncia (R) em ohms multiplicado pela
e e
capacitˆncia (C) em farads, e que a tens˜o no capacitor em uma constante de tempo (TC***)
a a
´ de 63,2% do valor m´ximo, podemos calcular a capacitˆncia, pois como sabemos o valor da
e a a
fonte fornecida pelo arduino, 5 V, basta calcularmos 63,2% de sua tens˜o e quando a tens˜o no
a a
capacitor encontrar este valor basta dividi-la pelo valor da resistencia R1. τ = R ∗ C, ou seja
63, 2%V = R ∗ C, onde V ´ a tens˜o m´xima.
e a a
A programa¸ao come¸a com a declara¸ao de vari´veis, ou seja, um pino anal´gico para medir
c˜ c c˜ a o
tens˜o no capacitor, um pino de carga e um de descarga do capacitor e um pino com o valor
a
de R1, como podemos ver no exemplo a seguir:
#define analogPin 0
#define chargePin 13
#define dischargePin 11
#define resistorValue R1
unsigned long startTime;
unsigned long elapsedTime;
float microFarads;
float nanoFarads;
Perceba que o valor de R1 deve ser substitu´ pelo valor escolhido.
ıdo
Devemos ajustar o pino 13 como pino de sa´ ıda, como j´ foi feito em exemplos anteriores, e
a
iniciar a sa´ serial a fim de depurar erros:
ıda
void setup(){
pinMode(chargePin, OUTPUT);
digitalWrite(chargePin, LOW);
Serial.begin(9600);
}
No decorrer do desenvolvimento da apostila ainda n˜o hav´
a ıamos mencionado a comunica¸˜o
ca
serial, no pr´prio compilador arduino-0018 existe uma interface que lhe proporciona observar
o
a sa´ e entrada na pr´pria tela do computador, a figura 5.2 abaixo mostra onde ter acesso a
ıda o
esse recurso.
18
20. Figura 5.4: Comunica¸ao Serial
c˜
Em nosso caso utilizamos a frequˆncia de transferˆncia de dados de 9600B/s, mas ´ poss´
e e e ıvel
selecionar outros valores j´ pr´-determinados pelo programa que podem ser observados quando
a e
se abre a comunica¸˜o serial.
ca
Iniciaremos o loop do programa fornecendo energia ao pino de carga do capacitor e acionando
o startTime, que ´ a vari´vel que ir´ temporizar o tempo de carga do capacitor. Para poder
e a a
calcular os 63,2% da carga teremos que fazer uma convers˜o, pois o fim da escala ´ de 1023, logo
a e
63,2% disso corresponde ´ 647, que ´ a porcentagem da tens˜o m´xima no capacitor. Enquanto
e e a a
a entrada do pino anal´gico n˜o equivaler a esta porcentagem de tempo n˜o ocorre nada, apenas
o a a
a contagem de tempo de carga do capacitor, que j´ esta sendo feita pela vari´vel startTime.
a a
Quando esta porcentagem ´ ultrapassada mede-se a capacitˆncia dividindo o tempo de carga
e a
pelo valor de R1.
Como ´ usual que valores de capacitˆncia sejam baixos, na ordem de mili a nano Farad, ´
e a e
mais agrad´vel que se expresse o valor em mili ou nano Farad, ou seja, multiplique o valor da
a
capacitˆncia por 1000 e acrescente o mF no final, caso mesmo com este procedimento o valor
a
ainda seja menor que 1, podemos utilizar outras escalas (micro, nano, etc.). A programa¸˜o ca
referida pode ser observada a seguir:
void loop(){
digitalWrite(chargePin, HIGH); // coloque HIGH em chargePin
startTime = millis();
while (analogRead(analogPin) < 648) {
}
elapsedTime = millis() - startTime;
microFarads = ((float)elapsedTime / resistorValue) * 1000;
Serial.print(elapsedTime);
Serial.println(" ms");
if (microFarads > 1) {
Serial.print((long)microFarads);
Serial.println(" mF");
}
else {
nanoFarads = microFarads * 1000.0;
Serial.print((long)nanoFarads);
Serial.println(" nF");
}
O programa j´ est´ quase conclu´
a a ıdo, basta fazer a descarga do capacitor. Para isso “des-
19
21. ligue” o chargePin, ajuste dischargePin como sa´ ıda, coloque LOW at´ que o capacitor esteja
e
descarregado, e volte a ajustar o dischargePin como entrada, da seguinte maneira:
digitalWrite(chargePin, LOW);
pinMode(dischargePin, OUTPUT);
digitalWrite(dischargePin, LOW);
while (analogRead(analogPin) > 0) {
}
pinMode(dischargePin, INPUT);
}
5.4 Exemplo 4
Este exemplo ilustra o uso de uma das sa´
ıdas PWM(Pulse-Width Modulation - Modula¸˜o por
ca
Largura de Pulso) do Arduino com um servomotor. Qualquer servo com um terminal de con-
trole compat´ pode ser utilizado. Aqui usaremos um polar rotor do tipo usado em antenas
ıvel
parab´licas. Primeiramente ´ importante saber o que ´ PWM e o que ´ poss´ fazer.
o e e e ıvel
PWM ´ uma tecnologia que permite controlar o per´
e ıodo c´
ıclico da frequˆncia da alimenta¸˜o.
e ca
Figura 5.5: PWM
Suas aplica¸˜es s˜o diversas e abrangem tanto usos industriais quanto dom´sticos. Em in-
co a e
d´strias, o PWM pode ser usado para controlar elevadores de carga, esteiras rolantes e guinchos.
u
J´ em aplica¸oes dom´sticas, pode ser usado para controle de ilumina¸ao, port˜es e cortinas.
a c˜ e c˜ o
Iremos utilizar a entrada manual comandada por um potenciˆmetro linear de 100 kΩ.
o
O motor possui 3 fios: um vermelho, um preto e um branco. Os fios preto e vermelho
correspondem ao negativo e positivo da alimenta¸ao, respectivamente, e neste exemplo podemos
c˜
conect´-los diretamente aos pinos de alimenta¸˜o do Arduino. O vermelho ´ conectado ao pino
a ca e
5V, e o preto a qualquer um dos pinos GND. O fio branco ´ o terminal de controle, e deve ser
e
conectado a uma das sa´ ıdas digitais com PWM, qualquer um dos pinos 3, 5, 6, 9, 10 ou 11. No
exemplo usaremos o 10.
O potenciˆmetro linear de 100 kΩ ´ conectado tendo um dos seus pinos extremos ligado
o e
ao GND, o outro extremo ao pino AREF, que fornece a tens˜o de referˆncia, e o pino central
a e
conectado a qualquer uma das entradas anal´gicas, utilizaremos o pino 1.
o
Desta vez usaremos uma biblioteca para suporte de servos, logo no in´ ıcio do programa
deveremos import´-la. Deveremos criar um objeto do tipo servo que ser´ utilizado para controle,
a a
da seguinte maneira:
20
22. Figura 5.6: Exemplo 4
#include <Servo.h>
Servo meuservo;
A seguir ´ feita a parte de declara¸ao de vari´veis, iremos declarar um pino para o potenci-
e c˜ a
ometro e servo, e uma vari´vel inteira para o valor lido do potenciˆmetro. Tamb´m deveremos
ˆ a o e
iniciar o servo, que em nosso caso est´ conectado ao pino 10, como vemos a seguir:
a
int potpin = 1;
int val;
void setup() {
meuservo.attach(10);
}
Quando lermos a entrada do potenciˆmetro teremos que converter seu valor para graus para
o
podermos controlar em graus quanto o motor ir´ girar, para isto utilizaremos a fun¸ao map.
a c˜
Ap´s isto apenas devemos enviar a informa¸˜o para o motor e esperar alguns milissegundos
o ca
para a movimenta¸ao do motor.
c˜
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
meuservo.write(val);
delay(500);
}
21