Baixe o app para aproveitar ainda mais
Prévia do material em texto
Interfaceamento Eletroeletrônico I Material Teórico Responsável pelo Conteúdo: Prof. Esp. Elvis Luiz dos Santos Revisão Textual: Prof.ª Dr.ª Selma Aparecida Cesarin Programação • Introdução; • Programando com Arduino; • Criando Programas para Arduino. • Aprender a programar e prototipar via aplicativo on-line. OBJETIVO DE APRENDIZADO Programação Orientações de estudo Para que o conteúdo desta Disciplina seja bem aproveitado e haja maior aplicabilidade na sua formação acadêmica e atuação profissional, siga algumas recomendações básicas: Assim: Organize seus estudos de maneira que passem a fazer parte da sua rotina. Por exemplo, você poderá determinar um dia e horário fixos como seu “momento do estudo”; Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma alimentação saudável pode proporcionar melhor aproveitamento do estudo; No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam- bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua interpretação e auxiliarão no pleno entendimento dos temas abordados; Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus- são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de aprendizagem. Organize seus estudos de maneira que passem a fazer parte Mantenha o foco! Evite se distrair com as redes sociais. Mantenha o foco! Evite se distrair com as redes sociais. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma Não se esqueça de se alimentar e de se manter hidratado. Aproveite as Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. UNIDADE Programação Introdução Para desenvolver nossos sistemas de interfaceamento, vamos utilizar Microcon- troladores Atmega que serão programados utilizando a board Arduino UNO. ATMEGA 328P É um microcontrolador de 8 bits, com arquitetura Harvard modificada. O ATmega328 pertence à família AVR da Atmel. Todos os modelos dessa família compartilham uma arquitetura e conjunto de instruções básicas, particu- larmente os grupos tinyAVR (microcontroladores ATtiny), megAVR (os ATmega) e XMEGA (os Atxmega). Características do componente: • Microcontrolador: ATmega328P; • Tensão de operação: 1,8-5,5v; • Pinos de entrada/saída I/O digitais: 23 (das quais 6 podem ser PWM); • Pinos de entradas analógicas: 6; • Frequência de operação: 20MHz máximo; • Memória EEPROM: 1K; • Memória SRAM: 2; • Memória Flash: 32K (dos quais 2K são usados pelo bootloader Arduino). Legenda AT M EG A3 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 RESET PCINT5 PC6 PD0 PD1 PD2 PD3 PC5 PC4 PC3 PC2 PC1 PC0 A5 A4 A3 A2 A1 A0PD4 PCINT16 PCINT17 PCINT18 PCINT13 PCINT12 SCL SDA PCINT11 PCINT10 PCINT9 PCINT8 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 GND AREF VCC GND VCC PCINT19 PCINT20 RXD TXD INTO INT1PWMCC2B 0C0B OSC1 OSC2 XTAL1 XTAL2 T1 AIN0 AIN1 CLKO PCINT6 PCINT7 PCINT21 PCINT22 PCINT23 PCINTO PCINT5 PCINT4 SCK MISO PCINT3 PCINT2 PCINT1 OC2A OC1B OC1A PWM PWM MOSI SS PWM 0C0A PWM PWM ICP1 T0 0 1 2 3 4 5 6 7 8 12 13 11 10 9 PD5 PD6 PB6 PB7 PD7 PB0 PB4 PB3 PB5 PB2 PB1 XCK GND POWER CONTROL PORT PIN DIGITAL PIN PWN PIN SERIAL PIN ANALOG-RELATED PIN ARDUINO PINATMEGA328 PIN FUNC Figura 1 – Disposição dos pinos do ATMEGA328 em amarelo/Arduino em marrom 8 9 Tabela de pinos arduino uno: http://bit.ly/2NWJdNe Ex pl or Os primeiros modelos de Arduino usavam o ATmega8 (com 8K de memória Flash) que, posteriormente, foi substituído pelo ATMega168 (com 16K de Flash e maiores recursos de entrada e saída) e finalmente pelo ATMega328 (com 32K de Flash). A versão DIP desses três modelos compartilha a mesma pinagem (porém o ATMega168 e ATMega328 permitem alguns usos diferentes dos pinos). O Arduino Mega 2560 usa o ATMega2560 com 256K de Flash e uma capaci- dade muito maior. Afinal, o que é o Arduino? O Arduino é uma pequena placa de microcontrolador contendo um plugue de conexão USB, que permite a ligação com computador. Figura 2 – Arduino UNO com indicação de pinos de saída Fonte: Adaptado de Getty Images Conforme exibido na figura, a placa Arduino UNO possui 14 pinos que podem ser usados como entrada ou saída digitais. Esses Pinos operam em 5V, em que cada pino pode fornecer ou receber uma corrente máxima de 40 mA. Cada pino possui resistor de pull-up interno que pode ser habilitado por software. Alguns desses pinos possuem funções especiais: • PWM: 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits por meio da função analogWrite(); • Comunicação serial: 0 e 1 podem ser utilizados para comunicação serial. Deve-se observar que esses pinos são ligados ao microcontrolador responsável pela comunicação USB com o PC; 9 UNIDADE Programação • Interrupção externa: 2 e 3. Esses pinos podem ser configurados para gerar uma interrupção externa, por meio da função attachInterrupt(). Para interface com o mundo analógico, a placa Arduino UNO possui 6 entradas, em que cada uma tem a resolução de 10 bits. Por padrão, a referência do conver- sor AD está ligada internamente a 5V, ou seja, quando a entrada estiver com 5V o valor da conversão analógica digital será 1023. O valor da referência pode ser mudado por meio do pino AREF. Ao se manipular a placa e projetar o circuito que será conectado aos seus I/Os deve ter muito cuidado pois, entre os pinos do microcontrolador e a barra de pinos, não há nenhum resistor, que limite a corrente. Além disso, dependendo do local em que se está trabalhando, pode-se provocar curto circuito nos pinos, já que a placa não possui isolação na sua parte inferior, como mostrado na figura a seguir: Figura 3 – Parte traseira do Arduino sem isolação Fonte: Reprodução Para facilitar a prototipagem das interfaces que iremos criar, o Arduino pos- sui diversos outros terminais que permitem a conexão com dispositivos externos. Você pode desenvolver seus dispositivos ou adquiri-los prontos. Esses dispositivos são chamados de SHIELDS e podem ter várias funções. Na figura a seguir, podemos ver vários deles com função de teclado, joystick, GPRS, display LCDsensor de gás entre outras funções. Alguns tipos de SHIELDS disponíveis no Mercado: http://bit.ly/34HJomj Ex pl or 10 11 O IDE do Arduino O Arduino é composto por duas partes principais: uma plataforma de hardware com um programa residente em parte de sua memória Flash (bootloader) e também um aplicativo em que são desenvolvidos os programas, que roda em qualquer com- putador PC com Windows ou Linux, ou num computador Apple com Mac OS-X. O seu Ambiente de Desenvolvimento Integrado, ou IDE, que pode ser baixado em: http://bit.ly/2RNRzc4 Figura 4 – Tela principal da IDE do Arduino Figura 5 – Itens da tab ARQUIVO No menu ARQUIVO, temos: • Novo: (Ctlr+N): abre uma nova janela de edição de sketches sobre aquela já ativa na tela do IDE; 11 UNIDADE Programação • Abrir: (Ctrl+O): abre uma janela para localizar e carregar um sketch existente em no seu computador; • Sketch: abre a pasta de projetos de sketches; • Fechar (Ctrl+W): fecha a tela ativa do IDE; • Salvar (Ctrl+S): salva com o mesmo nome o sketch ativo na janela de edição; • Salvar como (Ctrl+Shift+S): salva o sketch ativo com outro nome; • Carregar utilizando um Gravador (Ctrl+U): grava o Arduino com o sketch aberto. Configuração de Página (Ctrl+Shift+P): • Abre uma janela de configuração do formato de impressãodo sketch ativo; • Imprimir (Ctrl+P): abre a janela de impressão; • Preferências (Ctrl+comma): abre uma janela de configurações como alterar idioma da; • Sair (Ctrl+Q): fecha todas as janelas e sai do IDE. Figura 6 – Menu editar No menu Editar, temos: • Desfazer (Ctrl+Z): desfaz a última digitação na janela de edição ou o último comando realizado; • Refazer (Ctrl+Y): repete a última digitação na janela de edição ou o último comando realizado; • Cortar (Ctrl+X): copia para o clipboard e apaga a área marcada na janela de edição; • Copiar (Ctrl+C): copia para o clipboard sem apagar a área marcada na janela de edição; 12 13 • Copiar para Fórum (Ctrl+Shift+C): copia para Fórum do Arduíno o texto marcado; • Copia com HTML (Ctrl+Alt+C): formata em HTML e copia no clipboard; • Pasta (Ctrl+V): Copia na janela de edição o texto no clipboard; • Selecionar Tudo (Ctrl+A): seleciona todo o texto na janela de edição; • Comentar/Descomentar (Ctrl+/): coloca ou retira duas barras no início da linha comentário; • Aumentar recuo (Ctrl+]): desloca todo o texto em que está o cursor duas po- sições a direita; • Diminuir recuo (Ctrl+[): desloca todo o texto em que está o cursor duas po- sições a esquerda; • Buscar (Ctrl+F): abre uma janela para pesquisa ou substituição de caracteres na janela de edição; • Buscar próximo (Ctrl+G): busca dos caracteres seguintes na pesquisa com Find... Figura 7 – Menu sketch No menu sketch, temos as opções: • SKETCH é o nome dado ao programa feito no IDE do Arduino; • Verify / Compile (Ctrl+R): verifica a consistência do código fonte e o compila; • Stop: interrompe qualquer processo em andamento no IDE; • Show Sketch Folder (Ctrl+K): mostra o conteúdo da pasta com os sketches abertos; • Import Library: inclui uma ou mais bibliotecas no código fonte na janela de edição; • Add File: abre um novo sketch em uma outra aba no IDE. 13 UNIDADE Programação Figura 8 – Menu Ferramentas No Menu Ferramentas, temos: • Auto Formatação (Ctrl+T): alinha automaticamente em colunas todo o texto Arquivar; • Sketch: abre a pasta de projetos de sketches; • Corrigir codificação & Recarregar: corrige pequenos erros de sintaxe no código Monitor Serial (Ctrl+Shift+M): abre o aplicativo Terminal serial; • Placa: abre as opções de modelos de placas Arduino; • Porta Serial: abre as opções de portas seriais disponíveis no computador para configuração do IDE; • Gravador: abre as opções de hardware de programadores de bootloader para o Arduino; • Gravar bootloader: transfere o bootloader para o microcontrolador. O bootloader é o que transforma o ATMEGA328 em um Arduino. É ele quem facilita a progra- mação com comandos descomplicados se comparado à linguagem C. Figura 9 – Barra de Controles 14 15 Barra de Controles Na barra de controle, temos os seguintes itens: • Verificar: Verifica a consistência e compila o código fonte na janela de edição; • Carregar: Grava no Arduino o sketch ativo; • Novo: Abre um novo aplicativo IDE sobre aquele já ativo na tela; • Abrir: Abre uma janela para localizar e carregar um sketch novo; • Salvar: Salva o sketch ativo na janela de edição. • Barra de Mensagens: Processo de compilação em andamento. Figura 10 Após compilar, temos os dados na tela preta. Se aparecer a tela a seguir, quer dizer que existe um erro e não foi transferido para Arduino. Figura 11 – Tela de erro Se tudo correr bem, deve aparecer esta tela no rodapé do IDE: Figura 12 – Tela indicando sucesso na compilação e carregamento 15 UNIDADE Programação Programando com Arduino Um programa ou Sketch representa uma lista de instruções, que devem ser exe- cutadas na ordem em que foram escritas. A pontuação e a forma como as palavras são formadas criam o que se denomina sintaxe da linguagem e devem ser seguidas à risca. Símbolos utilizados na construção de funções são os seguintes: • { }: Dentro das chaves vão os procedimentos que a função deve executar; • ; : O ponto e vírgula é usado para marcar o final de um procedimento; • //: Comentário de uma linha: qualquer caractere depois das duas barras é ignorado pelo programa; • /*... */: Comentário em várias linhas: qualquer texto colocado entre esses símbolos também é ignorado pelo programa; • ( ): Parênteses: indica a existência condição para um determinado comando ou parâmetros utilizados em funções; • [ ]: Colchetes: utilizado para array(conjunto de dados) ou matrizes. Constantes Na linguagem de programação do Arduino, três grupos de valores são predefi- nidos e chamados de constantes e, por isso, não mudam nunca. São eles: • TRUE/FALSE (verdadeiro/falso): Verdadeiro e falso são constantes chamadas booleanas (relativas à álgebra de Boole) que definem estados lógicos 1 e 0, ligado e desligado. Verdadeiro é tudo que for diferente de zero e falso o que for zero; • HIGH/LOW (alto/baixo): Essas constantes definem os níveis de tensão nos pinos do Arduino. Alto e o nível de +5 volts, ligado; baixo e o nível de terra, ou zero volt, desligado; • OUTPUT/INPUT (saída/entrada): Essas constantes são usadas com a fun- ção pinMode( ) para definir o modo como um pino qualquer do Arduino será configurado, se como saída (output) ou como entrada (input). Variáveis Variáveis são nomes que os programas associam a posições de memória. Como a própria palavra sugere, o conteúdo dessas posições de memória pode mudar durante a execução do programa. Declaramos uma variável definindo para ela um tipo, um nome e, opcionalmente, um valor inicial que pode ser mudado por funções dentro do programa. 16 17 As variáveis podem ser de dois tipos: • Variável global: quando a variável é criada, e mais de uma função a utiliza, é necessário criar em um escopo global; • Variável local: quando a variável é criada dentro de uma função, em que so- mente essa função utilizará seu valor. Os dois tipos podem ser basicamente: • int (integer): que armazenam números inteiros, sem casa decimal, positivos ou negativos de ate 2 bytes na RAM; • long (long): que guardam valores inteiros de até 4 bytes; • boolean: para valores de ate 1 byte; • float (float): que guardam valores em ponto flutuante, com casas decimais, de ate 4 bytes; • char (character): de 1 byte que guarda um caractere ASCII. Criando variáveis no programa Para criar uma variável em um programa, definimos o tipo, um nome e, se qui- sermos, um valor. O nome de uma variável não pode ser iniciado por um número. Apenas letras do alfabeto maiúsculo ou minúsculo como primeiro caráter e números e letras nos demais caracteres. Não podemos utilizar caracteres especiais ou mesmo palavras reservadas, na composição do nome. Por exemplo, se necessitamos criar uma variável para carregar um valor de tempo: Int tempo = 1000; Tabela 1 – Tipos de variáveis Tipo de dados RAM Intervalo numérico void keyword N/A N/A boolean 1 byte 0 a 1 (false ou true) byte 1 byte 0 a 255 char 1 byte -128 a 127 unsigned char 1 byte 0 a 255 int 2 bytes -32.768 a 32.767 unsigned int 2 bytes 0 a 65.535 word 2 bytes 0 a 65.535 long 4 bytes -2.147.483.648 a 2.147.483.647 unsigned long 4 bytes 0 a 4.294.967.295 float 4 bytes -3,4028235E+38 a 3,4028235E+38 double 4 bytes -3,4028235E+38 a 3,4028235E+38 17 UNIDADE Programação Tipo de dados RAM Intervalo numérico string 1 byte + x Sequência de caracteres array 1 byte + x Coleção de variáveis Operadores Aritméticos Os operadores aritméticos retornam o resultado de uma operação aritmética entre dois operandos. São eles: Tabela 2 Operador Ação + Soma (inteira e ponto flutuante) - Subtração ou Troca de sinal (inteira e ponto flutuante) * Multiplicação (inteira e ponto flutuante) / Divisão (inteira e ponto flutuante) % Resto de divisão (de inteiros) ++ Incremento (inteira e ponto flutuante) -- Decremento (inteira e ponto flutuante) Operadores Lógicos Esses operadores comparam duas expressões e retornam 1 ou 0 (verdadeiro ou falso). São três os operadores lógicos: Tabela 3 – Operadores lógicos OperadoresLógicos X==Y X é igual a Y X!=Y X é diferente de Y X<Y X é menor que Y X>Y X é maior que Y X<=Y X é menor ou igual a Y X>=Y X é maior ou igual a Y Criando Programas para Arduino As duas principais partes (funções) de um programa desenvolvido para o Arduino são: • setup(): em que devem ser definidas algumas configurações iniciais do pro- grama. É executado uma única vez, no momento do boot e carrega todas as diretivas de modo de pinos por exemplo (INPUT ou OUTPUT) e outras confi- gurações importantes para o funcionamento do hardware e software; 18 19 • loop( ): função principal do programa, executa indefinidamente, tudo o que estiver dentro de seu laço. Todo o programa para o Arduino deve ter essas duas funções, obrigatoriamente e, como podemos ver na imagem a seguir, o programa já inicia com essas funções escritas. Figura 13 – Sketch em branco Arduino. Acesse em: http://bit.ly/39AcOpP Ex pl or Este é o programa mais básico do Arduino. Vem na própria IDE como exemplo. Esse programa ou sketch faz piscar um led que está ligado ao pino 13, dentro da própria placa do Arduino: //This example code is in the public domain. void setup() { pinMode(13, OUTPUT); // informa ao Arduino que o pino 13 vai trabalhar como saída } void loop() { digitalWrite(13, HIGH); // envia ao pino 13 uma tensão de 5V (nível logico 1) e liga o led delay(1000); // led fica ligado por 1s digitalWrite(13, LOW); // envia 0V (nível logico 0)ao pino 13 desligando o led delay(1000); // led fica desligado por 1s e volta a ligar pois está no loop } 19 UNIDADE Programação Lembrando-se de que tudo que está escrito após o // não é considerado pelo programa: é simplesmente um comentário do programa, o que é muito importante para saber o que seu programa faz. Comando if (se) Conforme orientações do próprio site do Arduino o comando if funciona como segue. As informações a seguir foram tiradas do site do fornecedor da IDE. Disponível em: https://bit.ly/33HxSXY O comando if checa uma condição e executa o comando a seguir ou um bloco de comandos delimitados por chaves, se a condição é verdadeira (‘true’). Sintaxe if (condição) { //comando(s) } Parâmetros Condição: uma expressão booleana, isto é, que pode resultar apenas em true ou false. Código de exemplo As chaves podem ser omitidas depois de um comando if. Se isso é feito, a próxima linha (definida pelo ponto e vírgula) é interpretada como o único comando condicional. Para mais de um comando, use as chaves para delimitar o bloco de comandos. if (x > 120) { digitalWrite(pinoLED, HIGH); } if (x > 120) { digitalWrite(pinoLED, HIGH); } if (x > 120) { digitalWrite(pinoLED, HIGH); 20 21 } if (x > 120) { digitalWrite(pinoLED1, HIGH); digitalWrite(pinoLED2, HIGH); } // todas as formas acima estão corretas Notas e advertências As expressões sendo testadas dentro dos parênteses, geralmente, requerem o uso de um ou mais dos operadores mostrados a seguir. Operadores de comparação • x == y (x é igual a y); • x != y (x é diferente de y); • x < y (x é menor que y); • x > y (x maior que y); • x <= y (x é menor ou igual a y); • x >= y (x é maior ou igual a y). Cuidado para não usar acidentalmente o símbolo de igual simples (ex. if (x = 10) ). O símbolo de igual simples é o operador de atribuição, se atribui 10 a x (coloca o valor 10 na variável x). Em vez disso, o símbolo de igual duplo (ex. if (x == 10) ) deve ser usado, que é o operador de comparação, e testa se x é igual a 10 ou não. O último é apenas verdadeiro se x é igual a 10, enquanto o primeiro comando mostrado sempre resultará em verdadeiro. Isso acontece porque a linguagem C++ interpreta if (x=10) da seguinte forma: 10 é atribuído a x (lembre-se de que o símbolo de igual simples é o (operador de atribuição)), então x agora contém 10. Então, o comando ‘if’ testa 10, o que sempre resulta true, desde que qualquer número diferente de zero resulta em true. Consequentemente, if (x = 10) irá sempre resultar em true, o que não é desejável ao se usar um comando ‘if’. Além disso, a variável x irá receber o valor 10, o que também é indesejado. Comando for As informações a seguir foram tiradas do site do fornecedor da IDE. Site do arduino, disponível em: https://bit.ly/2NF4Y5d Ex pl or 21 UNIDADE Programação Descrição O comando for é usado para repetir um bloco de código envolvido por chaves. Um contador de incremento é, geralmente, utilizado para terminar o loop. O comando for é útil para qualquer operação repetitiva, e é usado, frequente- mente, com vetores para operar em coleções de dados ou pinos. Sintaxe for (inicialização; condição; incremento) { //comando(s); } A inicialização ocorre primeiro e apenas uma vez. A cada repetição do loop, a condição é testada; se é verdadeira (true), o bloco de comandos, e o incremento são executados. Quando a condição se torna falsa (false), o loop termina. Código de Exemplo // Varia o brilho de um LED usando um pino PWM int pinoPWM = 10; // LED em série com um resistor de 470 ohm no pino 10 void setup() { // setup não necessário } void loop() { for (int i = 0; i <= 255; i++) { analogWrite(pinoPWM, i); delay(10); } } Notas e Advertências O loop for na linguagem C é muito mais flexível que os loops `for̀ encontrados em outras linguagens. Quaisquer dos três elementos da sintaxe podem ser omitidos, porém os ponto e vírgula (‘;’) são necessários. Além disso, os comandos para inicialização, condição e 22 23 incremento podem ser quaisquer comandos válidos na linguagem C, mesmo com variáveis não relacionadas ao loop, e podem usar quaisquer tipos de dados da lin- guagem, incluindo floats. Se esses tipos de comandos forem incomuns, podem prover soluções rápidas para alguns problemas raros de programação. Por exemplo, usar uma multiplicação no comando de incremento irá gerar uma progressão logarítmica: for (int x = 2; x < 100; x = x * 1.5) { println(x); } Gera: 2,3,4,6,9,13,19,28,42,63,94. Outro exemplo, aplica um efeito de fading crescente e decrescente em um LED com apenas um loop for: void loop() { int x = 1; for (int i = 0; i > -1; i = i + x) { analogWrite(pinoPWM, i); if (i == 255) { x = -1; // muda a direção no pico } delay(10); } } Para saber muito mais sobre a Programaçâo do Arduino acesse: https://bit.ly/33JC7lS Ex pl or Funções digitais Orientadas a revisar o estado e a configuração das entradas e saídas digitais: • digitalRead( ): Lê o valor de um pino digital especificado, HIGH ou LOW. Sintaxe: digitalRead(pin) buttonState = digitalRead(9); // Leitura do estado de um botão no pino 9; 23 UNIDADE Programação • digitalWrite( ): Escreve um valor HIGH ou um LOW em um pino digital. Sintaxe: digitalWrite(pin, valor) digitalWrite(9, HIGH); // – Coloca o pino 9 em estado HIGH. Funções analógicas Ideais para a leitura ou escrita de valores analógicos: • analogRead( ): Lê o valor de um pino analógico especificado. A placa Arduino contém um conversor analógico-digital de 10 bits com 6 canais; • Com isso, ele pode mapear tensões de entrada entre 0 e 5 volts para valores inteiros entre 0 e 1023. Isso permite uma resolução entre leituras de 5 volts / 1024 unidades ou 0,0049 volts (4.9 mV) por unidade. Sintaxe: analogRead(pin) int a = analogRead (A0); // – Lê o valor do pino analógico A0 e armazena // este valor na variável “a”; • analogWrite( ): Escreve um valor analógico (onda PWM) em um pino. Pode ser usado para acender um LED variando o brilho ou girar um motor a veloci- dade variável. Sintaxe: analogWrite(pin, valor) analogWrite (9,134); // –Envia o valor analógico 134 para o pino 9. 24 25 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Arduino.cc https://bit.ly/2CCCEKx Livros Some assembly required: assembly language programming with the AVR microcontrollersMARGUSH, T. S. Some assembly required: assembly language programming with the AVR microcontrollers. 1. ed. New York: CRC Press, 2011. The avr microcontroller and embedded system: using assembly and c MAZIDI, M. A.; NAIMI S.; NAIMI S. The avr microcontroller and embedded system: using assembly and c. 1. ed. New Jersey: Prentice Hall, 2011. AVR e arduino técnicas de projeto LIMA, C. B. D; VILLACA, M. V. M. AVR e arduino técnicas de projeto. Florianopolis: [s.n], 2012; Microcontroladores e microprocessadores PERIM, Gonçalves de Carvalho Feitosa, Jefferson Nataline; NASCIMENTO, Rosa do. Microcontroladores e microprocessadores. Londrina: Educacional S.A., 2017 Leitura 8-bit AVR Microcontrollers ATMEL AVR. 8-bit AVR Microcontrollers. ATmega328/P. Datasheet Complete. San Jose: 2016. http://bit.ly/37t638i 25 UNIDADE Programação Referências SOUZA, D. J. Desbravando o PIC. 9.ed. São Paulo: Erica, 2005. ZANCO, W. S. Microcomputadores PIC – Técnicas de Software e de Hardware para Projetos de Circuitos Eletrônicos. São Paulo: Erica, 2006. ZANCO, W. S. Microcomputadores PIC18 com linguagem C. Uma abordagem prática objetiva. São Paulo: Erica, 2006. (e-book) 26
Compartilhar