Projeto 37 - Selecionando músicas de Natal com push button

Básico - Projeto 37

Selecione músicas de natal com push button

Objetivo

Neste projeto vamos apresentar um circuito que irá gerar três melodias de natal, onde será possível selecionar a música que se deseja tocar. Para isso, utilizaremos um sonorizador (buzzer, disco piezo elétrico ou auto falante) e botões (push button) que serão utilizados como seletores. O projeto contará também com um controlador de volume de som (potenciômetro) e um led sinalizador.

No projeto não vamos utilizar o conceito tone() para gerar sons, onde demonstraremos uma forma alternativa para gerar notas musicais com frequência e duração definidas. (Forma alternativa ao conceito tone() apresentado no projeto 35.)

Vamos utilizar também neste exemplo, o conceito de compilação de arquivos tipo header file, que são arquivos com extensão .h. Estes arquivos permitem a reutilização do código em outros projetos, além de possibilitar uma maior organização e otimização da estrutura do programa.

Header file: Em programação de computadores, um arquivo cabeçalho (em inglês: header file) é um arquivo, ou seja, uma biblioteca que contêm uma coletânea de funções reutilizáveis separadas do código fonte principal.

Sonorizadores:  O buzzer e o disco são sonorizadores piezoelétricos. Quando se aplica um sinal elétrico em uma determinada frequência, o dispositivo piezoelétrico produz uma nota musical. As notas variam de acordo com a frequência utilizada. (O ouvido humano pode ouvir sons nas frequências entre 20 e 20.000 Hz).

Aplicação

Para fins didáticos e criação de sons com Arduino.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho 1  
Buzzer

Buzzer ativo 5V 12mm

1

Utilize um buzzer ou um disco piezoelétrico

Led 5mm

LED 5mm

 1  

1 LED alto brilho ou difuso (qualquer cor)

Você poderá utilizar também LEDs de 3 mm na cor que desejar.

 
 Resistor  

Resistor

 1  

1 Resistor 150Ω

Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado

Push Button 

Push button 6X6X5mm

3    
Potenciômetro

Potenciômetro

1 Resultado de imagem para potenciômetro

O valor do potenciômetro aumenta quando giramos o eixo do componente na direção do polo negativo para o polo positivo.

Obs.: Se não possuir potenciômetro de 1KΩ você poderá utilizar um de outro valor, até 10kΩ.

Arduino UNO R3 Arduino UNO 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito. Neste projeto você poderá utilizar um buzzer ou um disco piezoelétrico na montagem do circuito. Se possível, teste com os dois componentes.


Atenção

1. O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao potenciômetro (neste projeto) ou a uma porta digital do Arduino e o polo negativo ao GND.

2. Lembre-se que o LED também tem polaridade: o terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

2.1. Portanto, faça a conexão do Arduino no terminal positivo do led (anodo) e o GND no terminal negativo (catodo).

2.2. Para evitar danos ao led é necessário a inclusão de um resistor no circuito. Como o resistor é um limitador da corrente elétrica, ele poderá estar conectado no anodo (terminal maior) ou no catodo (terminal menor) do led, tanto faz.

3. Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo.

Obs.: Resistores iguais ou superiores a 150 Ω poderão ser utilizados em LEDs de todas as cores para um circuito com tensão igual ou inferior a 5V.

3.1. Valores utilizados para nossos projetos: LEDs difusos ou de alto brilho: Vermelho, Laranja e Amarelo: 150 Ω | Led Verde e Azul: 100 Ω  (No nosso projeto utilizamos um resistor de 150 Ω)

4. Monte os botões (push button) sem os resistores, pois através da programação vamos habilitar o resistor pull-up interno do arduino. Desta forma, quando o botão estiver pressionado, o Arduino retornará "LOW" ou "0". Assista o vídeo Arduino: Botão e Resistor de Pull Up Interno


 4.1. Os resistores pull-up e pull-down garantem um nível lógico estável quando por exemplo uma tecla não está pressionada. Geralmente utiliza-se um resistor de 10KΩ para esse propósito. A seguir é exibida a ligação desses resistores no circuito para leitura de tecla do botão:

Entradas-e-Saídas-digitais-Arduino-pull-up-pull-down

Atenção: Observe que neste projeto não utilizaremos o resistor de 10K pois vamos habilitar o resitor pull-up interno do Arduino através da programação - veja o projeto Projeto 02b - Led apaga com push button pressionado (pull-up interno do Arduino).

5. Observe que nesse projeto o potenciômetro foi montado como um reostato, onde utilizamos apenas 2 terminais do componente:

Resultado de imagem para potenciometro como reostato

5.1. Veja como deve ser a montagem do potenciômetro para este projeto:

5.2. Desta forma o potenciômetro funciona como um resistor variável e não pode ser controlado pela IDE do Arduino. Girando o eixo no sentido horário (da saída do arduino para a entrada do buzzer) aumentaremos o volume do som, e ao contrário, diminuímos o volume do som. Isto acontece pois girando o eixo do reostato aumentaremos ou diminuímos a tensão no buzzer, variando de 0 a 5V. Para saber mais sobre a diferença entre potenciômetro e reostato leia o tutorial: Potenciômetro ou reostato: qual a diferença?

6. A montagem do nosso projeto foi realizada em um protoboard com linhas de alimentação não contínuas, onde acrescentamos jampers para a ligação. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas.

Observação: No exemplo acima, utilizamos um buzzer. Você poderá substituir o buzzer por um disco piezoelétrico para ter um efeito semelhante. O cabo vermelho (positivo) deverá estar conectado ao potenciômetro e o cabo preto (negativo) conectado ao GND (ground).

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo projeto37.ino no IDE do Arduino:  DOWNLOAD - projeto37.ino

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 37 - Músicas de natal com buzzer e seletor
*       (Based on a project and code by Dipto Pratyaksa)
*                   http://squids.com.br/arduino
*
*******************************************************************************/

#include "notas.h"

const int pinBuzzer = 9;
int compasso = 900;

// Jingle Bells

int melody[] = {
  NOTE_E5, NOTE_E5, NOTE_E5,
  NOTE_E5, NOTE_E5, NOTE_E5,
  NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5,
  NOTE_E5,
  NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,
  NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,
  NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5,
  NOTE_D5, NOTE_G5
};

int tempo[] = {
  8, 8, 4,
  8, 8, 4,
  8, 8, 8, 8,
  2,
  8, 8, 8, 8,
  8, 8, 8, 16, 16,
  8, 8, 8, 8,
  4, 4
};

// We wish you a merry Christmas

int wish_melody[] = {
  NOTE_B3, 
  NOTE_F4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4,
  NOTE_D4, NOTE_D4, NOTE_D4,
  NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4,
  NOTE_E4, NOTE_E4, NOTE_E4,
  NOTE_A4, NOTE_A4, NOTE_B4, NOTE_A4, NOTE_G4,
  NOTE_F4, NOTE_D4, NOTE_B3, NOTE_B3,
  NOTE_D4, NOTE_G4, NOTE_E4,
  NOTE_F4
};

int wish_tempo[] = {
  4,
  4, 8, 8, 8, 8,
  4, 4, 4,
  4, 8, 8, 8, 8,
  4, 4, 4,
  4, 8, 8, 8, 8,
  4, 4, 8, 8,
  4, 4, 4,
  2
};

// Santa Claus is coming to town

int santa_melody[] = {
  NOTE_G4,
  NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4,
  NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, NOTE_C5,
  NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4,
  NOTE_A4, NOTE_G4, NOTE_F4, NOTE_F4,
  NOTE_E4, NOTE_G4, NOTE_C4, NOTE_E4,
  NOTE_D4, NOTE_F4, NOTE_B3,
  NOTE_C4
};

int santa_tempo[] = {
  8,
  8, 8, 4, 4, 4,
  8, 8, 4, 4, 4,
  8, 8, 4, 4, 4,
  8, 8, 4, 2,
  4, 4, 4, 4,
  4, 2, 4,
  1
};

int bot_1 = 0;
int bot_2 = 0;
int bot_3 = 0;

int som = 0;

void setup(void) {
  pinMode(pinBuzzer, OUTPUT); // Buzzer
  pinMode(13, OUTPUT); // Led indicador quando toca a nota
  pinMode(2, INPUT_PULLUP); // push buttom 1
  pinMode(3, INPUT_PULLUP); // push buttom 2
  pinMode(4, INPUT_PULLUP); // push buttom 3

  Serial.begin(9600);
}

void loop() {
  bot_1 = digitalRead(2);
  bot_2 = digitalRead(3);
  bot_3 = digitalRead(4);
  if (bot_1 == 0) {
    sing(1);
  } else if (bot_2 == 0) {
    sing(2);
  } else if (bot_3 == 0) {
    sing(3);
  }
}

void sing(int s) {
  // intera as notas da melodia:
  som = s;
  if (som == 3) {
    Serial.println(" 'We wish you a Merry Christmas'");
    int size = sizeof(wish_melody) / sizeof(int);
    for (int estaNota = 0; estaNota < size; estaNota++) {
    
      // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
      //ex.  semínima = compasso / 4
      int notaTempo = compasso / wish_tempo[estaNota];

      buzz(pinBuzzer, wish_melody[estaNota], notaTempo);

      // para distinguir melhor as notas, defimos um tempo mínimo entre ela
      int pausaNotas = notaTempo * 1.30;
      delay(pausaNotas);

      // interrompe a melodia:
     buzz(pinBuzzer, 0, notaTempo);
    }

  } else if (som == 2) {
    Serial.println(" 'Santa Claus is coming to town'");
    int size = sizeof(santa_melody) / sizeof(int);
    for (int estaNota = 0; estaNota < size; estaNota++) {
       
      // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
      //ex.  semínima = compasso / 4
      int notaTempo = compasso / santa_tempo[estaNota];

      buzz(pinBuzzer, santa_melody[estaNota], notaTempo);

      // para distinguir melhor as notas, defimos um tempo mínimo entre ela
      int pausaNotas = notaTempo * 1.30;
      delay(pausaNotas);

      // interrompe a melodia:
      buzz(pinBuzzer, 0, notaTempo);

    }
  } else {

    Serial.println(" 'Jingle Bells'");
    int size = sizeof(melody) / sizeof(int);
    for (int estaNota = 0; estaNota < size; estaNota++) {
      
      // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
      //ex.  semínima = compasso / 4
      int notaTempo = compasso / tempo[estaNota];

      buzz(pinBuzzer, melody[estaNota],notaTempo);

      // para distinguir melhor as notas, defimos um tempo mínimo entre ela
      int pausaNotas = notaTempo * 1.30;
      delay(pausaNotas);

      // interrompe a melodia:
      buzz(pinBuzzer, 0, notaTempo);
    }
  }
}

void buzz(int pin , int frequencia, float dur) {
  
  digitalWrite(13, HIGH);
   
  int delayValor = 1000000 / frequencia / 2; // calcula o delay entre transições
  //// 1 second's worth of microseconds, divided by the frequency, then split in half since
  //// there are two phases to each cycle

  int numCiclos = frequencia * dur / 1000; // calcula o número de ciclos adequado
  //// multiply frequency, which is really cycles per second, by the number of seconds to
  //// get the total number of cycles to produce

  for (int i = 0; i < numCiclos; i++) { // para definir a duração da nota
    digitalWrite(pin, HIGH); // buzzer em HIGH para emprurrar o diafragama do buzzer
    delayMicroseconds(delayValor); // espera o valor calculado do delay
    digitalWrite(pin, LOW); // buzzer em LOW para puxar o diafragama do buzzer
    delayMicroseconds(delayValor); // espera o valor calculado do delay
    }

  digitalWrite(13, LOW);
} 

 2) Obtenha o header file notas.h e coloque na mesma pasta do sketch no IDE do Arduino:  DOWNLOAD - notas.h

Atenção: o arquivo notas.h deverá estar na mesma pasta onde está o sketch principal:

3) No IDE do Arduino, faça a verificação e o upload para o microcontrolador.

Atenção: Observe que deverá aparecer uma aba com o header file notas.h, como mostra a figura acima. Para visualizar ou alterar o código no IDE basta clicar sobre a aba notas.h.

Vídeo

Como o projeto deve funcionar

1. Ao iniciar o programa, você poderá selecionar a música desejada pressionando um dos botões seletores.

2. Se desejar aumentar ou diminuir o volume, basta girar o eixo do potenciômetro para a direita (aumentar) ou para a esquerda (diminuir).

3. Após finalizar a melodia, o programa aguardará até que seja pressionado um botão seletor para tocar nova música ou repetir a música anterior.

4. Através do monitor serial do IDE, você poderá visualizar os nomes das músicas selecionadas.

Gerar sons em um dispositivo piezoelétrico

1. Neste projeto não vamos utilizar a função tone(pin, frequência, duração) para gerar sons em um sonorizador piezoelétrico.

2. Portanto, para criarmos um onda quadrada de cerca de 50%, vamos utilizar um truque onde ligamos e desligamos o buzzer em frações de microsegundos (delayMicroseconds), conforme mostra padrão abaixo:

digitalWrite(pin, HIGH); // buzzer em HIGH para emprurrar o diafragama do buzzer
delayMicroseconds(delayValor); // espera o valor calculado do delay

digitalWrite(pin, LOW); // buzzer em LOW para puxar o diafragama do buzzer
delayMicroseconds(delayValor); // espera o valor calculado do delay 

Desta forma, para gerarmos um tom,  criamos uma onda quadrada de cerca de 50% no estado lógico HIGH e 50% no estado lógico LOW, onde podemos definir que:

. A variável delayValor determina o tempo em microsegundos entre as fases do efeito piezoelétrico, ou seja, quanto maior o tempo em micro segundos, menor a frequência gerada no buzzer. A imagem abaixo mostra as duas fases de um sonorizador piezoelétrico, onde o dirafragma (metal) irá vibrar gerando ondas sonoras. Leia Transdutor Piezoelétrico.

Resultado de imagem para pastilha piezoeletrico

Explicando o Código do Projeto

 1. Primeiro definimos e declaramos as constantes e as variáveis do projeto.

1.1. Observe que utilizamos as constantes e variáveis tipo "int". Veja na tabela abaixo as diferenças nos tipos de constantes e variáveis:

Tipo Valores Válidos para Variáveis e Constantes
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38com até 6 dígitos de precisão (2 casas depois da vírgula)
double de -1.7 x 10308 até +1.7 x 10+308com até 10 dígitos de precisão

1.2. Através da diretiva #include incluímos o "header file" notas.h para ser compilado junto ao sketch (não utilize ponte e vírgula no final de uma diretiva #include).

1.2.1. A diretiva #include é utilizada para incluir bibliotecas externas em um sketch. Isso dá ao programador acesso a um grande grupo de bibliotecas C padrão (grupos de funções pré definidas) e também bibliotecas específicas para o Arduino. Como exemplo, o nosso header file que criamos denominado notas.h.

1.2.2. O header file notas.h, que você poderá encontrar em Tabela Notas Musicais, irá definir todas as notas musicais em várias escalas. No arquivo encontraremos um conjunto de várias diretivas #define cujo os tokens são as notas musicais com seus valores de frequência correspondentes necessários para gerar o som.

Observação: As letras A, B, C, D, E, F e G são utilizadas para as notas lá, si, dó, ré, mi, fá e sol, respectivamente (fonte: Wikipédia). Por exemplo, C2, frequência de 65 Hz, é o Dó na escala musical 2, e GS1 por exemplo, tem frequência de 52Hz e significa Sol sustenido (S) na escala musical 1.

1.3. Declaramos a constante tipo inteira pinBuzzer como 9, referindo-se à conexão do buzzer com a porta digital 9 do Arduino.

1.4. Declaramos a constante tipo inteira compasso como 900. Este valor poderá ser alterado, fazendo com que a melodia seja tocada de forma mais rápida (<900) ou mais lenta (>900).

Observação: Você poderá criar valores de compasso diferentes para cada música. Neste exemplo utilizamos o valor do compasso igual para as três músicas.

1.5. Definimos o array tipo inteiro melody[] para a música "Jingle Bells" com todas as notas musicais na ordem que deverão ser tocadas. É importante salientar que as frequências desta notas são obtidas no arquivo notas.h.

1.5.1. Para a música "We wish you a merry Christmas" o array será wish_melody[] e para "Santa Claus is coming to town" o array será santa_melody[].

1.6. Definimos o array tipo int tempo[] para a música "Jingle Bells" com os valores relativos aos tempos (ou duração) das notas musicais, definidas como:

Resultado de imagem para tempos notas musicais

Observação importante: O número de elementos do array tempo[] deve ser o mesmo do array melody[].

1.6.1. Para a música "We wish you a merry Christmas" o array será wish_tempo[] e para "Santa Claus is coming to town" o array será santa_tempo[].

1.7. Repetimos as definições das arrays wish_melody[],  santa_melody[],  wish_tempo[] e santa_tempo[] para as demais músicas, "We wish you a merry Christmas" e "Santa Claus is coming to town".

1.8. Definimos as variáveis bot_1, bot_2 e bot_3 iguais a zero. Estas variáveis são referentes aos valores de leitura dos botões (push bottons).

1.9. Definimos a variável som igual a zero.

2. Através da estrutura void setup(), definimos:

2.1. Definimos como saída do controlador Arduino (OUTPUT) a porta digital 9 conectada ao buzzer (pinBuzzer).

2.1.1. Atenção: Como estamos utilizando um potenciômetro (reostato) para ajustar o volume de som, a saída do controlador deverá estar ligada ao potenciômetro que se ligará ao sonorizador (buzzer).

2.2. Definimos a porta digital 13 como saída do Arduino (OUTPUT) onde deverá estar conectado ao polo positivo do led.

2.2. Definimos as portas digitais 2, 3 e 4 como entrada do controlador Arduino (INPUT_PULLUP) conectadas aos botões (push buttons).

2.2.1. INPUT_PULLUP habilita o resistor pull-up interno do Arduino, eliminando a necessidade de colocarmos um resistor de 10K ligado ao VCC (5V).

2.3. A função Serial.begin() serve para dizer ao Arduino que será coletado dados para o computador a partir da porta serial e o cabo USB. O número entre os parênteses significa qual é a taxa de dados que a placa vai se comunicar com o computador. Utilizaremos a taxa padrão de 9600bps (bits-per-second).

3. Através da estrutura void loop(), obtemos:

3.1. Através da função digitalRead() fazemos as leituras dos botões 1, 2 e 3 para verificarmos qual são seus estados lógicos.

3.1.1. Quando utilizamos o resistor pull-up interno do Arduino, o estado lógico do push botton será Zero (LOW) quando acionado e 1 (HIGH) quando em estado normal.

3.2. Através da instrução if (bot_ == 0) verificamos qual botão está acionado, ou seja, LOW ou zero. Se acionado o programa irá chamar a função sing() 1, 2, ou 3, dependendo de qual botão foi pressionado.

4. Através da função void sint() que criamos, obteremos:

4.1. Através da função sing(int s), que traz o valor 1, 2 ou 3 como variável inteira, definimos o valor da variável som.

4.2. Através da instrução if (som= ) definimos qual música irá tocar. Se som = 3, por exemplo, obteremos:

4.2.1. Através da função Serial.println() escrevemos o nome da música no monitor serial, que no exemplo será "We wish oou a Marry Crhistmas".

4.2.2. Definimos que a variável size = sizeof(wish_melody) / sizeof (int), ou seja, a variável size será igual ao número de notas musicais do array wish_melody (nesta música são 30 notas musiciais).

4.2.3. O operador sizeof conta o número total de bytes ocupados no array wish_melody  Dividido pelo número de bytes de uma variável, contados pela função sizeof(int), teremos o total de notas musicais dentro do array.

Observação: O número de bytes de uma variável int é sempre 2. Portanto, sizeof (int) = 2.

4.2.4.  Através da instrução for (int esta_nota = 0 ;  esta_nota < size; esta_nota++), rodamos todas as notas da melodia definida.

4.2.5.  Através da expressão int notaTempo = compasso / wish_tempo[estaNota] definimos a variável notaTempo (duração da nota musical) onde teremos o compasso dividido pelo tempo de cada nota. Portanto, quanto maior o compasso maior será a duração de cada nota, ou seja, a melodia será executada de forma mais lenta.

4.2.5. O programa chama a função buzz() que irá fazer com que o buzzer toque as notas musicais de acordo com a frequência e a duração de cada nota.

4.2.5.1. A função buzz() levará os valores da frequência e a duração de cada nota musical da melodia.

4.2.6. Definimos um delay de 30% do valor da variável notaTempo (duração da nota musical) para distinguir melhor as notas durante a execução da música. Este valor poderá ser alterado da forma que você achar mais adequada.

4.2.7. O programa chama novamente a função buzz() agora com valor zero para frequência, interrompendo assim a melodia.

5. Através da função void buzz() que criamos, obteremos:

 5.1. Através da função digitalWrite(13, HIGH) acendemos o led, ou seja, definimos o estado lógico do led como 1.

5.2. Definimos o valor da variável delayValor com o o tempo em microsegundos de cada fase do sonorizador piezoelétrico.

5.2.1. A variável delayValor é calculada como: A quantidade de microsegundos em 1 segundo, que equivale a 1000000, dividido pela frequência em HZ e divido por 2, pois existem duas fases no sonorizador piezoelétrico (uma fase para empurrar o metal e outra para puxar o metal, criando o som). Variando os valores das fases do sonorizador obteremos as diferentes notas musicais.

Observação: Este método de criação de som pode ser substituído pela função tone(pino, frequência e duração) que já calcula os valores automaticamente para as duas fases do sonorizador. Veja Referência Arduino - tone() e o projeto 35.

5.3. Calculamos  o número de ciclos (fases do sonorizador) para cada nota. Isto definirá a duração de cada nota.

5.3.1. A variável numCiclos é calculada como a frequência, que é o número de ciclos por segundo, multiplicada pela duração em segundos. Como a duração, definida pela variável dur, está em microsegundos, vamos dividir então por 1000. Portanto numCiclos = frequencia * (dur / 1000).

Observação: Este método de criação de som pode ser substituído pela função tone(pino, frequência e duração) que já calcula os valores automaticamente para as duas fases do sonorizador. Veja Referência Arduino - tone() e o projeto 35.

5.4. Através da instrução for (int i = 0; i < numCiclos; i++) fazemos com que o sonorizador piezoelétrico vibre de acordo com a frequência e duração de cada nota musical.

5.4.1. A função digitalWrite(pin, HIGH) faz com que ocorra uma flexão positiva no metal do sonorizador.

5.4.2. A função digitalWrite(pin, LOW) faz com que ocorra uma flexão negativa no metal do sonorizador.

5.4.3. A função delayMicroseconds(delayValor) definirá a frequência da vibração, ou seja, quanto ciclos por segundo o nosso sonorizador irá vibrar, gerando um tempo de espera entre as fases.

5.4.4. A variável numCiclos irá definir a duração de cada nota musical, ou seja, quantas vibrações na mesma frequência irão acontecer.

5.5. O led é apagado através da função digitalWrite(13, LOW).

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores