Leitura analógica e gravação usando o Arduino Uno

Analog Read and Write Using the Arduino Uno

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á

  1. Arduino Uno com cabo USB
  2. Potenciômetro (ou qualquer resistor variável) para entrada analógica
  3. LED e um resistor de 220 ohm para saída analógica
  4. Fios de pão e jumper
  5. 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%).

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

  1. Lendo sensores ambientais (por exemplo, luz, temperatura, umidade)
  2. Ajustando as velocidades do motor
  3. Controlando o brilho LED
  4. Processamento de sinal de áudio
  5. 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!

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.