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
- Lição 14/31-1: Arduino Millis (sem delay) e funções map | SunFounder Robojax
- Lição 14/31-2: Codificação Arduino millis() exemplo 2 com evento
- Lição 14/31-3: Codificação Arduino millis() exemplo 3 com botão de pressão
- Lição 14/31-5: Codificação Arduino map() exemplo 2
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()
/*
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() {
}
Coisas que você pode precisar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
-
Amazonas
Recursos e referências
-
DocumentaçãoDocumentação para o Kit de Aprendizado 3 em 1 IoT/Carro Inteligente/SunFounderdocs.sunfounder.com
-
Externo
Arquivos📁
Manual do Usuário
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB