Uma pequena experiência com leitura de potenciómetro, smoothing dos valores lidos e activação de LEDs de acordo com média.
Baseado no tuturial Smoothing (http://arduino.cc/en/Tutorial/Smoothing) do Arduino com adição dos LEDs.
/*
Smoothing plus LEDs
Reads from analog input, calculates running average and activates LEDs
Based on the "Smoothing" example from de Arduino examples
( http://www.arduino.cc/en/Tutorial/Smoothing )
This code is in the public domain.
*/
const int inputPin = A0;
const int RedPin = 13;
const int YellowPin = 12;
const int GreenPin = 8;
const int RedOn = 900;
const int GreenOff = 800;
const int delayValue = 10;
const int numReadings = 30;
int readings[numReadings];
int index = 0;
int total = 0;
int average = 0;
int currentReading = 0;
void setup() {
Serial.begin(9600);
for (int thisReading = 0; thisReading < numReadings; thisReading++)
readings[thisReading] = 0;
pinMode(RedPin, OUTPUT);
pinMode(YellowPin, OUTPUT);
pinMode(GreenPin, OUTPUT);
}
void loop() {
currentReading = analogRead(inputPin);
total = total - readings[index];
readings[index] = currentReading;
total = total + readings[index];
index = index + 1;
if (index>=numReadings)
index=0;
average = total / numReadings;
digitalWrite(RedPin,( average > RedOn ) );
digitalWrite(GreenPin, ( average < GreenOff ) );
digitalWrite(
YellowPin, ((average > GreenOff) && (average < RedOn))
);
Serial.println(average);
delay(delayValue);
}
