professor me. daniel gomes - 04 06 10 09 08 07 05 01 · 2018. 5. 21. · ra diretamente do ldr e...

7
1 Conhecendo o ARDUINO LEGENDA 01 - Portas digitais 2 à 13 02 - Portas analógicas A0 à A5 03 - Plug USB para conexão 04 - Plug de alimentação externa 05 - Microcontrolador ATmega 328 06 - Botão RESET 07 - GND - Porta para o neutro 08 - VCC - 5 volts 09 - VCC - 3.3 volts 10 - GND Digital - Porta para o neutro 01 10 02 03 06 04 05 07 08 09 OBSERVAÇÕES E DICAS As portas digitais 3, 5, 6, 9, 10 e 11, são mar- cadas com o símbolo (˜), isso significa que são portas PWM (Pulse Width Modulation). Ge- ralmente, portas digitais possuem valores de 0 ou 1, sendo 0 = 0 volts e 1 = 5 volts, porém, portas PWM podem comportar variações nestes sinais podendo receber ou emitir valo- res intemediários. Elas são utilizadas para: * controle de velocidade de motores; * variação da luminosidade de leds; * geração de sinais analógicos; * geração de sinais de áudio.

Upload: others

Post on 20-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 1

    Conhecendo o ARDUINO

    LEGENDA

    01 - Portas digitais 2 à 1302 - Portas analógicas A0 à A503 - Plug USB para conexão04 - Plug de alimentação externa05 - Microcontrolador ATmega 32806 - Botão RESET07 - GND - Porta para o neutro08 - VCC - 5 volts09 - VCC - 3.3 volts10 - GND Digital - Porta para o neutro

    01

    10

    02

    03

    0604

    0507

    0809

    OBSERVAÇÕES E DICASAs portas digitais 3, 5, 6, 9, 10 e 11, são mar-cadas com o símbolo (˜), isso significa que são portas PWM (Pulse Width Modulation). Ge-ralmente, portas digitais possuem valores de 0 ou 1, sendo 0 = 0 volts e 1 = 5 volts, porém, portas PWM podem comportar variações nestes sinais podendo receber ou emitir valo-res intemediários. Elas são utilizadas para:

    * controle de velocidade de motores;* variação da luminosidade de leds;* geração de sinais analógicos;* geração de sinais de áudio.

  • 2

    Blink

    void setup() { pinMode(LED_BUILTIN, OUTPUT);//define porta 13 como saída}void loop() { digitalWrite(LED_BUILTIN, HIGH); //liga o LED na porta 13 delay(1000); //espera 1 segundo digitalWrite(LED_BUILTIN, LOW); //apaga o LED na porta 13 delay(1000); //espera 1 segundo }

    OBSERVAÇÕES E DICAS

    Na coluna da esquerda, apresento o código do Blink onde aparece a variável “LED_BUIL-TIN” que se refere ao led interno do Arduino.Na coluna da direita, apresento o mesmo có-digo, porém, utilizando dois LEDs, enquanto um apaga o outro ascende de forma intermi-tente.

    LED - trata-se de um diodo emissor de luz, é usado como uma pequena lâmpada com consumo baixo de eletricidade. O nome LED é a sigla de Light Emitting Diode. O LED tem polaridade específica, sendo que o pino

    void setup() { pinMode(12, OUTPUT); //define porta 12 como saída pinMode(11, OUTPUT); //define porta 11 como saída}void loop() { digitalWrite(11, HIGH); //liga o LED na porta 11 digitalWrite(12, LOW); //apaga o LED na porta 12 delay(1000); //espera 1 segundo digitalWrite(11, LOW); //apaga o LED na porta 11 digitalWrite(12, HIGH); //liga o LED na porta 12 delay(1000); //espera 1 segundo }

    menor conhecido como Catodo tem função de terra (-) e o pino maior conhecido como Anodo tem função de fase (+), a tensão dele vai variar de 1,6 a 3,3 V.

    RESISTORES - são componentes eletrôni-cos que tem a função de se opor à passagem de corrente elétrica em seu material. Dentro de um circuito eletrônico, estes componentes vão limitar a corrente elétrica. Quanto maior for a resistência, menor será a corrente de sa-ída. O valor de um resistor é dado pelas cores impressas em sua superfície, o resistor dos circuitos apresentados aqui possui 47ohms.

  • 3

    Semáforo

    void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT);}

    // the loop function runs over and over again forevervoid loop() { digitalWrite(1, 1); digitalWrite(2, 0); digitalWrite(3, 0); delay(3000); digitalWrite(1, 0); digitalWrite(2, 1); digitalWrite(3, 0); delay(1000); digitalWrite(1, 0); digitalWrite(2, 0); digitalWrite(3, 1); delay(3000); }

    OBSERVAÇÕES E DICASExistem várias montagens possíveis para este protótipo, no caso apresentado à direita, uso apenas um resistor ligado ao GND para alimentar os três LEDs, porém, podemos montar um protótipo alternativo onde são utilizados três resistores, cada um alimen-tando um LED como no exemplo da direita.

  • 4

    LDR e as portas analógicas

    int led = 7; //Led na porta 7int ldr = 0; //LDR no porta analígica 8int ldrValor = 0; //Valor lido do LDR void setup() { pinMode(led,OUTPUT); //define a porta 7 como saída Serial.begin(9600); //Inicia a comunicação serial} void loop() { ldrValor = analogRead(ldr); //O valor lido será entre 0 e 1024 if (ldrValor>= 800) //se o valor lido for maior que 800 digitalWrite(led,HIGH); // Liga o led else digitalWrite(led,LOW); // senão, apa-ga o led Serial.print(“Valor do LDR: “); Serial.println(ldrValor); //imprime o valor lido do LDR no monitor serial delay(100);}

    OBSERVAÇÕES E DICAS

    O “LDR” (Light Dependent Resistor - Re-sistor Dependente de Luz) é um resistor que

    varia a resistência de acordo com a quanti-dade de luz que inside sobre sua superfície, quanto mais lúz, menor é a resistência, com uma porta analógica é possível verificar essa variação que será lida no Monitor Serial em uma razão de 0 a 1024.

    O “Monitor Serial” fará a leitu-ra diretamente do LDR e exibirá o resultado que deve variar de 0 a 1024. Para entender o funcio-namento do sensor e do resistor, você pode trocar o resistor que antecipa o LDR, no exemplo foi usado um resistor de 3.3kOhms, se você colocar um resistor de

    menor resitência, a variação no Monitor Serial será diferente.

  • 5

    VCC Leitura GND

    Potenciômetro

    #define potPin 0 // Define o pino analógico em que o potenciômetro vai ser conectado #define ledPin 9 // Define o pino que terá um LED e um resistência ligada ao terra

    int valPot = 0; //Variável que armazena o valor da leitura do potenciômetro

    void setup() {

    pinMode(ledPin,OUTPUT); // Configura o pino do LED como saída

    }

    void loop() {

    valPot = analogRead(potPin); //Faz a leitu-ra analógica do pino em que o potenciômetro esta ligado valPot = map(valPot,0,1023,0,255); //Utili-zando a função map() para transformar uma escala de 0-1023 em uma escala 0 a 255 analogWrite(ledPin,valPot ); // Aciona o LED proporcionalmente ao valor da leitura analó-gica

    }

    OBSERVAÇÕES E DICAS

    O Potenciômetro é um tipo de resistor variá-vel que aumenta ou diminui a resistência no momento em que giramos o pino, o poten-ciômentro tem polaridade específica, é im-portante observar essa polaridade para não queimar a peça.

    Neste projeto, sempre que o usuário girar o pino do potenciômetro a porta analógica “0” irá fazer a leitura do valor e utilizar a função map() para converter os valores de entrada da porta analógica que variam de 0 a 1023 para valores PWM que variam de 0 a 255, assim, o LED receberá essa variação de valores e irá mudar sua intensidade de luminosidade. É um bom exemplo de como as portas PWM podem ser usadas para saída de valores variáveis, di-ferentemente das portas digitais normais que só possuem saída 0 (desligado) ou 1 (ligado). int potenciometro = 0; // selecione o pino

    de entrada ao potenciômetroint led = 9; // selecione o pino ao LEDint val = 0; // variável a guardar o valor proveniente do sensor

    void setup() { pinMode(led, OUTPUT); // declarar o pino ledPin como saída Serial.begin(9600); }

    void loop() { val = analogRead(potenciometro); // a va-riável val guarda o valor do potenciometro Serial.print(“Valor atual do potenciome-tro: “); Serial.println(val); digitalWrite(led, HIGH); delay(val); // o Led acende e fica ligado pelo tempo determinado do potenciometro digitalWrite(led, LOW); delay(val); }

    No exemplo abaixo, usamos a mesma monta-gem para um outro teste, a variável “val” re-cebe o valor do potenciometro e modifica o tempo de “delay” que determina a velocidade de piscagem do LED, no mesmo momento, é impresso no Monitor Serial o valor atual do potenciômetro, o tempo de impressão do va-lor do potenciômetro no Monitor Serial tam-bém será modificado de acordo com o valor do mesmo.

  • 6

    Sensor Ultrassônico

    int pino_trigger = 4; // TRIG do sensor utrassonico em porta 4int pino_echo = 5; // ECHO do sensor utras-sonico em porta 5int Led = 2; // porta 2 um ledfloat tempo;float distancia_cm;

    void setup() { Serial.begin(9600); Serial.println(“Lendo dados do sen-sor...”); pinMode(pino_trigger, OUTPUT); //define porta 4 como saída pinMode(Led, OUTPUT); //define porta 2 como saída digitalWrite(pino_trigger, LOW); //Pino trigger em baixa delayMicroseconds(10); pinMode(pino_echo, INPUT); //define porta 5 como entrada}

    void loop() {{ digitalWrite(pino_trigger, HIGH); delayMicroseconds(10); digitalWrite(pino_trigger, LOW); tempo = pulseIn(pino_echo, HIGH); distancia_cm = tempo / 29.4 / 2; //conver-te o tempo de ida e volta do pulso em cm Serial.print(“Distancia em cm: “); //im-prime o que esta descrito na porta serial Serial.print(distancia_cm); //imprime o valro da distancia Serial.println(); // pula uma linha; if (distancia_cm

  • 7

    Sensor Ultrassônico com Buzzer

    int pino_trigger = 4; // TRIG do sensor utrassonico em porta 4int pino_echo = 5; // ECHO do sensor utras-sonico em porta 5int buzzer = 3; // Recebe o + (VCC) do Buz-zer na entrada 3 a outra ponta vai em GNDfloat tempo;float distancia_cm;

    void setup(){ Serial.begin(9600); Serial.println(“Lendo dados do sen-sor...”); pinMode(pino_trigger, OUTPUT); digitalWrite(pino_trigger, LOW); delayMicroseconds(10); pinMode(pino_echo, INPUT); pinMode(buzzer, OUTPUT); } void loop(){ digitalWrite(pino_trigger, HIGH);

    O Buzzer é um componente eletrônico que recebe uma carga eletrica e converte a mes-ma em uma frequencia sonora.Neste projeto, o sensor ultrassônico faz a leitura da distância do objeto e envia uma frequencia específica para o Buzzer que toca uma nota musical, cada nota musical fica a uma distância de 5 centimetros de distância uma da outra.

    delayMicroseconds(10); digitalWrite(pino_trigger, LOW);

    tempo = pulseIn(pino_echo, HIGH); distancia_cm = tempo / 29.4 / 2; //conver-te o tempo de ida e volta do pulso em cm

    Serial.print(“Distancia em cm: “); //im-prime o que esta descrito Serial.print(distancia_cm); //imprime a distancia Serial.println(); // pula uma linha;

    if (distancia_cm 5 && distancia_cm 10 && distancia_cm 15 && distancia_cm 20 && distancia_cm 25 && distancia_cm 30 && distancia_cm 35 && distancia_cm 40){ noTone(buzzer); delay(10);}}

    OBSERVAÇÕES E DICAS