Thursday, January 29, 2026

Simulando saídas analógicas com analogWrite

O controlador Arduino Uno não possui saída analógica, ou seja, uma saída com uma voltagem que pode variar continuamente. No entanto, podemos simular uma usando o comando de controle analogWrite(pin, duty_cycle). O primeiro argumento é o número do pino e o segundo é o chamado "duty cycle", que é a largura de cada pulso da onda quadrada de 490Hz, variando de 0 (0% duty cycle) até 255 (100% duty cycle).Como exemplo usaremos este comando para controlar continuamente (aparentemente) a luminosidade de um LED.  O esquema é mostrado abaixo. 


O circuito simulado é mostrado a seguir:



O código é o seguinte:

int ledPin = 9;    // LED connected to digital pin 9

void setup() {
  // nothing happens in setup
}

void loop() {
  // fade in from min to max in increments of 5 points:
  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 50 milliseconds to see the dimming effect
    delay(50);
  }

  // fade out from max to min in increments of 5 points:
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);
    // wait for 50 milliseconds to see the dimming effect
    delay(50);
  }
}


  Exercícios:

1. Modifique o projeto acima de modo que tenhamos dois LEDs funcionando de modos opostos.

2. Modifique o projeto acima de modo que tenhamos uma fileira de LEDs cujas luminosidades aumentam e diminuem ordenadamente.

No comments:

Post a Comment