Código de Pesquisa

Lição 14/31-4: Exemplo 1 de map() na programação Arduino

Lição 14/31-4: Exemplo 1 de map() na programação Arduino

Este tutorial faz parte de uma série sobre programação Arduino e foca no uso prático da função map(). Nesta lição, você aprenderá como converter um valor percentual (0–100) em um valor PWM (Modulação por Largura de Pulso) (0–255) para controlar o brilho de um LED. Em vez de calcular manualmente que 60% equivale a 153, a função map() realiza a conversão linear para você, tornando seu código mais limpo e intuitivo.

Essa técnica é essencial para muitas aplicações do mundo real onde você precisa traduzir leituras de sensores ou entradas do usuário para diferentes faixas. Por exemplo, você poderia usá-la para:

  • Controlar a velocidade de um motor DC com base na leitura de um potenciômetro.
  • Exibir o valor bruto de um sensor de temperatura em uma escala de 0-100%.
  • Mapear coordenadas de um joystick para ângulos de um servomotor.
  • Ajustar o brilho de um LED com base em um sensor de luz ambiente.
  • Converter uma leitura analógica de 0-5V para um valor digital de 0-1023 ou vice-versa.

Hardware/Componentes

Para acompanhar este projeto, você precisará dos seguintes componentes:

  • Placa Arduino (Uno, Nano, etc.)
  • Um LED
  • Um resistor de 220 ohms
  • Fios jumper
  • Uma protoboard (opcional, mas recomendada)

Guia de Conexões

No vídeo, o instrutor demonstra o projeto usando uma configuração de fiação de uma lição anterior sobre fade de LED. O circuito é simples: conecte o anodo (perna longa) do LED a um resistor de 220 ohms e conecte a outra extremidade desse resistor ao pino digital 3 do Arduino. Conecte o cátodo (perna curta) do LED diretamente ao pino de terra (GND) do Arduino.

Explicação do Código

O código deste exemplo é muito conciso, com a lógica principal residindo na função setup(). Vamos detalhar as partes configuráveis pelo usuário.

int LEDpin = 3; //define o pino para o LED

Esta linha define o pino do Arduino ao qual seu LED está conectado. Neste exemplo, está definido como pino 3, que é um pino compatível com PWM, necessário para saída analógica. Você pode alterar este número se conectar seu LED a um pino PWM diferente.

int b=8;//60% de brilho

Esta é a variável-chave que você modificará para testar diferentes níveis de brilho. Ela representa o brilho desejado como uma porcentagem. O comentário no código diz "60%", mas o valor está definido como 8 para fins de demonstração no vídeo. Você pode alterá-lo para qualquer inteiro entre 0 e 100. Por exemplo, definir b = 60 representaria um nível de brilho de 60%.

int brightness = map(b, 0, 100, 0,255);

Este é o coração da lição. A função map() pega seu valor percentual (b) e o converte de sua faixa original (0 a 100) para uma nova faixa alvo (0 a 255). O resultado é armazenado na variável brightness, que é então usada para escrever um valor analógico no pino do LED.

analogWrite(LEDpin, brightness);// liga o LED com 60% de brilho

Finalmente, esta linha envia o valor mapeado para o pino do LED usando analogWrite(). Isso define o ciclo de trabalho do LED, controlando efetivamente seu brilho. A beleza dessa abordagem é que você só precisa alterar a variável b para controlar o LED, e a função map() cuida de todos os cálculos necessários.

Projeto/Demonstração ao Vivo

No vídeo, o instrutor carrega o código e demonstra o efeito de alterar a variável b. Quando b está definido como 8, o monitor serial imprime o valor mapeado de 20, e o LED está visivelmente fraco. Alterar b para 90 resulta em um valor mapeado de 229, tornando o LED muito mais brilhante. Definir b para 100 mapeia para 255, que é o brilho máximo. Esta demonstração prática mostra claramente como a função map() simplifica o processo de controlar saídas analógicas com valores percentuais fáceis de usar.

Projetos relacionados deste vídeo

Capítulos

  • [00:00] Introdução ao Curso de Arduino por Robojax
  • [01:19] O que é millis() e por que usá-lo
  • [05:46] Exemplo 1: Usando millis() para um evento temporizado
  • [08:29] Exemplo 2: Usando millis() com um botão de pressão
  • [12:14] Exemplo 3: Detectando um segundo pressionamento de botão após um atraso
  • [17:20] Introdução à função map()
  • [19:47] Análise do código para o exemplo de map()
  • [20:41] Demonstração ao vivo da função map()

Imagens

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Idioma: C++
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
int LEDpin = 3; //defind pin for LED
                   
 
 void setup() {
    Serial.begin(9600);//initialize serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=8;//60% brightness
    int brightness = map(b, 0, 100, 0,255);
    Serial.println(brightness);//print it on serial monitor
    analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }
 

Arquivos📁

Manual do Usuário