Sunday, October 31, 2021

Exercício: Controlando dois LEDs com um Botão

Objetivo: Temos dois LEDs. O primeiro deve acender/apagar com um toque longo (25 ms) do botão e o segundo, independentemente, deve acender/apagar com um toque curto do botão. 

Uma descrição está feita em https://www.instructables.com/Arduino-Dual-Function-Button-Long-PressShort-Press/(com um erro óbvio na ligação dos fios).




Simulação em Tinkercad: https://www.tinkercad.com/things/1pGJPK1KDiN-twoledsonebutton
 
Sketch: 

int LED1 = 12;
int LED2 = 13;
int button = 3;

boolean LED1State = false;
boolean LED2State = false;

long buttonTimer = 0;
long longPressTime = 250;

boolean buttonActive = false;
boolean longPressActive = false;

void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
if (digitalRead(button) == HIGH) {
if (buttonActive == false) {
buttonActive = true;
buttonTimer = millis();
}
if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {
longPressActive = true;
LED1State = !LED1State;
digitalWrite(LED1, LED1State);
}
} else {
if (buttonActive == true) {
if (longPressActive == true) {
longPressActive = false;
} else {
LED2State = !LED2State;
digitalWrite(LED2, LED2State);
}
buttonActive = false;
}
}
}

Exercício: Simule e explique o funcionamento deste circuito. Construma uma implementação física.

Saturday, October 30, 2021

Exercício com PWM e analogWrite

 Objetivo: fazer o LED acender e apagar gradualmente

A simulação foi feita em Tinkercad: https://www.tinkercad.com/things/56zfbwPzEDZ-usando-analogwrite/editel


Sktech: 


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

void setup() {

}

void loop() {

  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {

    analogWrite(ledPin, fadeValue);

    delay(30);

  }

  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {

    analogWrite(ledPin, fadeValue);

    delay(30);

  }

}