A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arduino. Configuração de HW/SW

Apresentações semelhantes


Apresentação em tema: "Arduino. Configuração de HW/SW"— Transcrição da apresentação:

1 Arduino. Configuração de HW/SW
Ambiente de desenvolvimento Recursos HW/SW Linguagem de programação Funções principais (setup e loop) Recursos disponíveis: “Ports”. Entrada/saída analógica e digital; Alimentação; Monitor serial; Plotter serial. Tarefas Programação de intervalos de tempo; Saída digital; Entrada analógica; apresentação de dados.

2 Microcomputador X microcontrolador
Microcomputador. CPU + unidades de memória e armazenamento secundário + interfaces e periféricos. Microcontrolador. Um único chip incorpora CPU, memórias, unidades de apoio, comunicação e dispositivos de entrada e saída. Recursos do Arduino Microcontrolador ARM Memórias: RAM, EPROM, flash. Interfaces serial (USB); E/S analógica e digital; Apoio: Temporizadores, Contadores (clock), etc.

3 Características técnicas
CPU: ARM (Advanced Risc Machine); Linguagem de programação: Dialeto C; Memória de Programa (Flash): 32KB 14 pinos para E/S digital; 6 “ports” para entrada analógica. Conversão A/D; Pinos para alimentação 5 volts e 3,3 volts; Software: Ambiente de desenvolvimento integrado de HW/SW; Bootloader (CARREGAMENTO DE PROGRAMAS); Interfaces com o SO; USB. Comunicação e carga de programas.

4 IDE Arduino (Ambiente de Desenvolvimento Integrado) Hardware
Integrated Development Environment. (Ambiente de Desenvolvimento Integrado) Hardware Placa com microprocessador e circuitos de apoio Recursos para conexão serial (USB); Pinos de alimentação: 5/3,3volts. 40 mA de corrente elétrica. Placas de apoio (Shields) para extensão de funções (rede, WIFI,..). Software Dialeto da linguagem C. Domínio público (open source) Bibliotecas de apoio Programas exemplo

5 IDE Arduino: Recursos de Programação
Linhas de comentários: Pinos para entrada e saída de dados analógicos e digitais. Instruções de entrada e saída. Funções para programação de intervalos de tempo Funções para comunicação serial Programas exemplo.

6 Interface para programação

7 Programando intervalo de tempo
// Pino 13 tem um LED. Variável led identifica o pino int led = 13; /*Função setup. Configuração do HW. Função pinMode inicializa o pino 13 como saída digital. */ void setup() { pinMode(led, OUTPUT); } // Função loop. Executada em loop infinito. void loop() { digitalWrite(led, HIGH); // Liga o pino 13 (HIGH) delay(1000); // Pára a CPU por um segundo digitalWrite(led, LOW); // Desliga o LED (LOW) } // Retorna ao início

8 Operação do Arduino. Programa BLINK
Ative o programa Arduino.exe, conforme orientações em sala. Carregue o programa Blink File Examples  Basic  Blink Compile o programa: Verify (barra de opções); Configuração da porta: Acesse a aba Ferramentas porta. A comunicação deve ser pela porta virtual para o Arduino Configuração do dispositivo: Placa configurada para Arduino UNO. Acesse a aba Ferramentas  placa. Transfira o programa Blink para a placa ARDUINO. *O programa será transferido se o Arduino DEVE estiver se comunicando com o PC via cabo USB.

9 Ajuda. Referencia

10 Compilação (Verify)

11 Exercício Ligar o pino 13 por 300 ms e desligar por 100ms. Deixar em loop. ______________________________________ Ligar o pino 10 por dez segundos e desligar. Sem loop.

12 Resumo setup: Opera apenas no momento inicial do programa.
loop: Opera em repetição. pinMode (pino, modo_operaçao): Configura pino como entrada (IN) ou saída (OUT) digitalWrite (pino, HIGH/LOW): Coloca pino em nível alto (HIGH) ou em nível baixo(LOW) Delay (milissegundos): Para o processamento em intervalos de milissegundos).

13 // Pino 11 está configurado como saída. pinMode(10,INPUT);
Exemplos pinMode(pino, modo). Parâmetros pino: (0 a 13); modo: OUTPUT/INPUT Exemplos: pinMode(11,OUTPUT); // Pino 11 está configurado como saída. pinMode(10,INPUT); // Pino 10 está configurado como entrada.

14 Saída de dados digital digitalWrite(pino, valor); valor: LOW/ HIGH (0/1) EXEMPLO: digitalWrite(13, HIGH) Exercício. Pograma para deixar o pino 10 sempre ligado (em nível alto).

15 Testes do programa blink
Altere o programa blink para piscar com os seguintes intervalos: 10 segundos 100 milissegundos: 10 milissegundos ligado e 2 segundos desligados; Qual o intervalo de tempo que você consegue perceber o LED piscando.

16 Programa: Blinkwithoutdelay
Coloque em operação o arquivo blinkwithoutdelay Examples  digital  BlinkWithoutDelay. Altere a função para operar 2 segundos em nível HIGH e 2 segundos em nível LOW; Qual a diferença de operação dos programas Blink e BlinkWwithoutDelay.

17 BlinkWithoutDelay int ledState = LOW; long previousMillis = 0; // ledState store last time LED was updated long interval = 2000; // interval at which to blink (milliseconds). void setup() { pinMode(13, OUTPUT); } void loop() { /*check to see if it's time to blink the LED; that is, if the difference between the current time and last time you blinked the LED is bigger than the interval at which you want to blink the LED. */ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (ledState == LOW) { ledState = HIGH;} else ledState = LOW; // set the LED with the ledState of the variable: digitalWrite(13, ledState); }

18 BlinkWithoutDelay Vide reference doArduino
*unsigned long currentMillis(32 bits) O valor máximo do tipo de variável unsigned long é: 2^32

19 Reference: unção mills()f
millis() Description Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.

20 Monitor serial. Saída de dados
unsigned long time; void setup(){ Serial.begin(9600); } void loop(){ Serial.print("Time: "); time = millis(); //prints time since program started Serial.println(time); // wait a second so as not to send massive amounts of data delay(1000); }

21 Monitor Serial

22 Monitor serial para saída de dados
// Comunicação via USB e o Monitor serial. // Ícone no canto superior esquerdo int n = 1; void setup ( ) { Serial.begin(9600); } // Inicializa a comunicação serial com 9600 bauds void loop() { //saída pela interface serial. Recebe no monitor serial Serial.print(n); n=n+1; Serial.println(": Alo Mundo!"); delay(2000); }

23 Funções de comunicação
Serial.begin(9600). “Inicializa” comunicação pela saída serial (USB) Serial.print(n). Envia valor de n pela saída serial. Serial.println(": Alo Mundo!"). Imprime string e acrescenta nova linha.

24 Um “contador de tempo” simplificado
Contador para segundos e minutos. Uso das funções millis() e delay(intervalo)

25 Solução e críticas unsigned long time;
unsigned long segundo; unsigned long minuto; void setup(){ Serial.begin(9600); } void loop(){ time = millis()/1000; segundo = time%60; minuto = time/60; //prints time since program started Serial.print(" Minuto: "); Serial.print(minuto); Serial.print(" Segundo: "); Serial.println(segundo); // wait a second so as not to send massive amounts of data delay(1000); }

26 Teste da Comunicação Serial
// Comunicação via USB. Monitor serial int n = 1; void setup ( ) { Serial.begin(9600); } // Comunicação serial com 9600 bauds (b/s) void loop() { //envia pela porta serial. Recebe pelo monitor serial Serial.print(n); n=n+1; Serial.println(": Alo Mundo!"); delay(200); } /*O que acontece se for alterado o valor 9600 bauds? Teste outros valores para transferência de dados.*/

27 Função Serial.begin Vide reference
Sets the data rate in bits per second (baud) for serial data transmission.

28 Resistor série para operação do LED (pino 13).
LED (Light Emissor Diode). Tensão de operação depende da cor 1 a 4 volts. Corrente de operação: 5 a 20 miliAmpères. * A corrente define a intensidade do brilho. Cor  Tensão de operação; Corrente  Intensidade do brilho. Resistor em série com LED limita a corrente e o brilho.

29 Resistor do pino 13 (built-in)
LED operando com 2,5 V e corrente de 10 miliAmpéres (0,01mA). *LED alimentado pelo pino 13 (5) volts Resposta: R= (5-2,5)/0,010=250 OHMs. *Esta montagem é nativa na placa Arduino.

30 Arduino – entrada de dados digitais
/* leitura digital no pino2. Apresentação no monitor serial */ int pushButton = 2; // pino 2 DEVE estar ligado a umm “pushbutton” void setup() { Serial.begin(9600); pinMode(pushButton, INPUT); } void loop() {int buttonState = digitalRead(pushButton); // leitura no pino digital. Valor da leitura digital: 0 ou 1. Serial.println(buttonState); // print the state of the button: delay(1000); } // Qual o valor obtido? //*O pino 2 está “flutuando”

31 Conversão Analógico/Digital
void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); float voltage = sensorValue * (5.0 / ); Serial.println(sensorValue); // mostra o valor lido no sensor Serial.print("\t"); Serial.println(voltage); // mostra o valor convertido }

32 Conversão Analógico/Digital
/* O conversor A/D na entrada analógica fornece valores inteiros de 0 – obtidos de de voltagens que variam de 0 - 5V. ?*/ /*O conversor A/D no Arduino é de n=10 bits. A entrada analógica recebe valores de 0 a 5 volts e converte em inteiros de 0 a (2^10 = 1024). */ // float voltage devolve o valor lido na escala real Importante. A função digitalRead(pushButton) lê o botão definido por pushButton. Valor da LEITURA: 0 ou 1 A função analogRead(A0) faz a leitura de dados analógicos, covertendo-os em valores inteiros.

33 Sistemas de entrada e saída. Aplicações em Controle de processos
Recebimento e tratamento de sinais gerados por transdutores; Recepção/tratamento/transmissão de dados; Conexão entre sistemas. Exemplo. Sistema com entrada via sensores no controle de saída. Arduino Drive Saída Sensores

34 Sistemas de entrada e saída. Conceitos
Transdutor: converte formas de energia diferentes; Grandeza analógica: Recebida pelo Arduino. Conversão A/D; Fornece: Dados processados para controle; Energia para acionamento de dispositivos externos: Drive de potencia; Controle de dispositivos via programa.

35 Princípio de funcionamento
Divisor de Tensão. Lei de OHM. V = R * I Divisor de tensão: A energia se distribui proporcionalmente ao valor da resistencia 0,5 mA 0,25mA 2,5V 1,25V V1=R1.V/(R1+R2) V2=R2.V/(R1+R2) Explicar divisor de Tensão 3,75V 2,5V A Soma das tensões é igual a tensão no circuito série

36 CONCEITO Conversão DIGITAL Valor analógico 0: V ,5V. V Valores proporcionais Valores contínuos Explicar divisor de corrente

37 CONCEITO 0,1V:_(=0,1*1023/5=204 2,0V:________ 3,0V:________
Conversão A/D.Sendo o valor analógico 0 Volts correspondente ao valor inteiro 0, e o valor analógico 5 Volts correspondente ao valor inteiro 1023, calcule o valor inteiro correspondente aos seguintes valores analógicos: 0,1V:_(=0,1*1023/5=204 2,0V:________ 3,0V:________ 3,3V:________ 4,5V: ________ Explicar divisor de corrente

38 Leitura de sinal analógico
Leitura de sinais de sensores. Um sinal analógico é produzido pelo potenciômetro de 10K. O potenciômetro é alimentado por 5Volts fornecidos pelos pinos 5V e GND. O fio central do potenciômetro alimenta a entrada A/D (pino A0). O movimento do cursor do potenciômetro produz valores analógicos de 0 a 5Volts.

39 Conversão A/D Nem sempre a curva é linear: Uso de regressão linear para ajuste de curva. B

40 void setup() { Serial.begin(9600); }
void loop() {// leitura analógica no pino A0 int sensorValue = analogRead(A0); /* Converte a leitura analógica ( ) para voltagem (0 - 5V)*/ float voltage = sensorValue * (5.0 / ); serial.print(“temperature = “); serial.println(voltage); delay(1000); } Examples>Basics>ReadAnalogVoltage

41 Notas Um conversor A/D recebe dados em formato analógico e os converte em valores inteiros em uma faixa de valores dependentes da precisão. A variável int sensorValue = analogRead(A0), recebe o valor analógico lido no pino A0 convertido para valores inteiros.

42 O integrado LM35 Funcionamento do sensor LM35. Pinagem. O sensor deve receber alimentação nos pinos GND e +V. O pino Vout devolve uma voltagem proporcional à temperatura.

43 Medida de temperatura via LM35
Conecte o sensor de temperatura ao Arduino. O sensor está fixado no shield Hacktronic. Teste o programa variando o potenciometro no shield. Ajuste a entrada analógica para A4. Este é o pino que está conectado o LM35. Ajuste o programa anterior para a nova escala para medida de 0 a 100 graus Celsius. float voltage = sensorValue * (500.0 / );

44 Medida de temperatura via LM35
3. Observe saída do plotter serial. Ferramentas plotter serial Coloque o dedo levemente sobre o LM35. Complete o programa para acender o LED no pino 13 quando a temperatura atingir 35o.


Carregar ppt "Arduino. Configuração de HW/SW"

Apresentações semelhantes


Anúncios Google