#include <Wire.h>
const int sampleWindow = 50;
unsigned int sample;
const int K = 10; //Nr de LED-uri
int barPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; //Pinii de iesire-led-uri
void setup()
{
for (int i = 0; i < K; i++) {
pinMode(barPins[i], OUTPUT); //Configurarea pinilor ca iesiri
}
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis = millis();
unsigned int peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow) {
sample = analogRead(A0);
if (sample < 1024) {
if (sample > signalMax) {
signalMax = sample;
}
else if (sample < signalMin) {
signalMin = sample;
}
}
}
peakToPeak = signalMax - signalMin;
double volts = (peakToPeak * 5.0) / 1024;
Serial.print(peakToPeak);
Serial.print(" ");
Serial.println(volts);
int level = map(peakToPeak, 0, 1023, 0, 10); // Translatarea
// domeniului datelor de intrare in domeniul 0,10 nivele
Serial.println(level);
for (int i = 0; i < K; i++) {
if (i < level) {
digitalWrite(barPins[i], HIGH);
}
else {
digitalWrite(barPins[i], LOW);
}
}
delay(10);
}