O Arduino UNO suporta operações analógicas de entrada e saída, permitindo que você interaja com sensores e atuadores que exigem valores precisos. As operações analógicas são essenciais para controlar dispositivos como LEDs, motores e entradas de leitura de sensores como potenciômetros ou sensores de luz. Este tutorial o guiará através da configuração, leitura e escrita analógica e operações lógicas como if
declarações com dados analógicos.
O que você precisará
- Arduino Uno com cabo USB
- Potenciômetro (ou qualquer resistor variável) para entrada analógica
- LED e um resistor de 220 ohm para saída analógica
- Fios de pão e jumper
- Um computador com o Arduino IDE instalado
Etapa 1: Entendendo os pinos analógicos no Arduino
O Arduino UNO possui seis pinos de entrada analógicos (A0-A5) que podem ler uma tensão entre 0 e 5V e convertê-los em um valor digital entre 0 e 1023. Para saída analógica, o Arduino usa PWM (modulação de largura de pulso) em certos pinos digitais marcado com ~
(por exemplo, 3, 5, 6, 9, 10, 11).
Funções usadas
-
Entrada analógica:
analogRead(pin)
- Lê uma tensão (0-5V) e retorna um valor entre 0 e 1023.
-
Saída analógica:
analogWrite(pin, value)
- Produz um sinal PWM onde
value
varia de 0 (ciclo de trabalho de 0%) a 255 (ciclo de trabalho 100%).
- Produz um sinal PWM onde
Etapa 2: entrada analógica de fiação (potenciômetro)
Conecte um potenciômetro a um pino analógico de Arduino:
Pino de potenciômetro | Conexão Arduino |
---|---|
1 (pino final) | 5V |
2 (meio/saída) | A0 |
3 (pino final) | Gnd |
Etapa 3: saída analógica de fiação (LED)
Conecte um LED com um resistor de 220 ohm a um pino PWM Arduino (por exemplo, pino 9):
Pino de LED | Conexão Arduino |
---|---|
Perna longa (+) | Pino digital 9 |
Perna curta (-) | Gnd |
Etapa 4: Leitura de entrada analógica
Use o analogRead()
função para ler dados do potenciômetro:
Exemplo Código: Leitura de entrada analógica
#define potPin A0 // Potentiometer connected to A0
void setup() {
Serial.begin(9600);
Serial.println("Analog Input Test");
}
void loop() {
int sensorValue = analogRead(potPin); // Read analog value
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(500); // Wait for half a second
}
Execute o código e observe os valores do potenciômetro (0-1023) no monitor serial.
Etapa 5: Escrevendo saída analógica
Use o analogWrite()
função para controlar o brilho de um LED:
Código de exemplo: saída analógica para LED
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT); // Set LED pin as output
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // Increase brightness
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness); // Decrease brightness
delay(10);
}
}
Etapa 6: Combinando entrada e saída analógicos
Você pode usar valores de entrada analógica para controlar a saída, como ajustar o brilho do LED com base na posição do potenciômetro.
Exemplo Código: Controles do potenciômetro LED BLILHO
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin); // Read potentiometer value
int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
analogWrite(ledPin, brightness); // Set LED brightness
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" -> Brightness: ");
Serial.println(brightness);
delay(100);
}
Etapa 7: Usando if
Declarações com dados analógicos
Você pode criar condições usando a entrada analógica para executar ações específicas:
Exemplo Código: Controle Condicional
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin);
if (sensorValue > 512) {
analogWrite(ledPin, 255); // Full brightness if sensor value > 512
Serial.println("Bright!");
} else {
analogWrite(ledPin, 0); // Turn off LED otherwise
Serial.println("Off");
}
delay(500);
}
Aplicações de leitura/gravação analógicas
- Lendo sensores ambientais (por exemplo, luz, temperatura, umidade)
- Ajustando as velocidades do motor
- Controlando o brilho LED
- Processamento de sinal de áudio
- Criando interfaces de usuário baseadas em analógicas
Solução de problemas
- Leituras incorretas do sensor: Garanta a fiação adequada e verifique as conexões do potenciômetro.
- LED não iluminando: Confirme a orientação do LED e use um resistor para limitar a corrente.
- Saída não suave: Adicione um pequeno atraso ou média dos valores de entrada para estabilidade.
Conclusão
Você aprendeu a realizar operações analógicas de leitura e gravação usando Arduino Uno, mapear valores dos sensores para saídas e usar if
declarações para lógica condicional. Essas habilidades são cruciais para criar projetos responsivos e interativos. Experimente mais, integrando outros sensores e atuadores analógicos para expandir suas capacidades!