Saltar la navegación

Código Vumetro sin LCD

Código Vumetro sin Pantalla LCD

#include <Adafruit_NeoPixel.h>
#define N_PIXELS  30  // Number of pixels in strand
#define MIC_PIN A3  // Microphone is attached to this analog pin
#define LED_PIN    6  // NeoPixel LED strand is connected to this pin
int lect_max=512;
Adafruit_NeoPixel  pixels = Adafruit_NeoPixel(N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
int n;
int height;
int periodo = 10;
unsigned long TiempoAhora=0;
int brightness = 100;
int minim;
int maxim;
int t1=(N_PIXELS/7);
int t2=(N_PIXELS/7)*2;
int t3=(N_PIXELS/7)*3;
int t4=(N_PIXELS/7)*4;
int t5=(N_PIXELS/7)*5;
int t6=(N_PIXELS/7)*6;
const int analogPinMin = A0;
const int analogPinMax = A1;
void setup() {
pixels.setBrightness(brightness);
pixels.begin();
Serial.begin(9600);
 
}
 
void loop() {
  set_limits();
  n= analogRead(MIC_PIN); // Raw reading from mic
  //delay(100);
  Serial.println(n);
   Serial.print("minim = ");
   Serial.println(minim);
    Serial.print("maxim = ");
    Serial.println(maxim);
  height=map(n, minim, maxim, 0, N_PIXELS);
  if (height<0){
    height=0;}
  for(int i=0; i<N_PIXELS; i++) {
    if(0<=i && i<t1){
     pixels.setPixelColor(i, pixels.Color(148, 0, 211));//violeta
      }
      else if(t1<=i&&i<t2){
      pixels.setPixelColor(i, pixels.Color(0, 0, 255));//blau
      }
      else if(t2<=i&&i<t3){
     pixels.setPixelColor(i, pixels.Color(0, 255, 0));//cian
      }
      else if(t3<=i&&i<t4){
     pixels.setPixelColor(i, pixels.Color(255, 0, 0));//verd
      }
      else if(t4<=i&&i<t5){
    pixels.setPixelColor(i, pixels.Color(255, 255, 0));//groc
      }
      else if(t5<=i&&i<t6){
      pixels.setPixelColor(i, pixels.Color(255, 165, 0));//taronja
      }
      else if(t6<=i&&i<N_PIXELS){
       pixels.setPixelColor(i, pixels.Color(255, 0, 0));//vermell
      }
      if(i >= height) {
       pixels.setPixelColor(i, pixels.Color(0, 0, 0));
       
      }
     pixels.show();
  }
 
TiempoAhora = millis();
while(millis() < TiempoAhora+periodo){
  }
 
}
 
void set_limits(){
  minim= analogRead(analogPinMin) / 2;
  maxim = analogRead(analogPinMax) / 2;
 }