INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Neuling mit Progammierungslücken
Gestern, 18:34
Beitrag #25
RE: Neuling mit Progammierungslücken
So, habe mal was eingetippt.
Code:
/*
LED VU meter for Arduino and Adafruit NeoPixel LEDs.
Hardware requirements:
- Most Arduino or Arduino-compatible boards (ATmega 328P or better).
- Adafruit Electret Microphone Amplifier (ID: 1063)
- Adafruit Flora RGB Smart Pixels (ID: 1260)
   OR
- Adafruit NeoPixel Digital LED strip (ID: 1138)
- Optional: battery for portable use (else power through USB or adapter)
Software requirements:
- Adafruit NeoPixel library
Connections:
- 3.3V to mic amp +
- GND to mic amp -
- Analog pin to microphone output (configurable below)
- Digital pin to LED data input (configurable below)
See notes in setup() regarding 5V vs. 3.3V boards - there may be an
extra connection to make and one line of code to enable or disable.
Written by Adafruit Industries.  Distributed under the BSD license.
This paragraph must be included in any redistribution.
*/

#include <Adafruit_NeoPixel.h>

#define N_PIXELS  60  // Number of pixels in strand
#define MIC_PIN   A0  // Microphone is attached to this analog pin
#define LED_PIN    6  // NeoPixel LED strand is connected to this pin
#define DC_OFFSET  0  // DC offset in mic signal - if unusure, leave 0
#define NOISE     10  // Noise/hum/interference in mic signal
#define SAMPLES   60  // Length of buffer for dynamic level adjustment
#define TOP       (N_PIXELS + 2) // Allow dot to go slightly off scale
#define PEAK_FALL 40  // Rate of peak falling dot

byte
  peak      = 0,      // Used for falling dot
  dotCount  = 0,      // Frame counter for delaying dot-falling speed
  volCount  = 0;      // Frame counter for storing past volume data
int
  vol[SAMPLES],       // Collection of prior volume samples
  lvl       = 10,      // Current "dampened" audio level
  minLvlAvg = 0,      // For dynamic adjustment of graph low & high
  maxLvlAvg = 512;
Adafruit_NeoPixel
  strip = Adafruit_NeoPixel(N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {

  // This is only needed on 5V Arduinos (Uno, Leonardo, etc.).
  // Connect 3.3V to mic AND TO AREF ON ARDUINO and enable this
  // line.  Audio samples are 'cleaner' at 3.3V.
  // COMMENT OUT THIS LINE FOR 3.3V ARDUINOS (FLORA, ETC.):
//  analogReference(EXTERNAL);

  memset(vol, 0, sizeof(vol));
  strip.begin();
}

void loop() {
  uint8_t  i;
  uint16_t minLvl, maxLvl;
  int      n, height;
  int minValue = 102 ;  // Min. Analogeingangswert
  int maxValue = 963 ;  // Maximaler analoger Eingangswert (0-1023 entspricht 0-5V)
  int sensitiveValue = 128 ;  // 0 - 255, Anfangswert (Wert, der vom Potentiometer gelesen wird, wenn useSensorValues ​​= true ist)
  int maxSensitivity = 255 ;  // lass die 'Lautstärke' auf 200% steigen!
  int ledBrightness = 30 ;  // 0 - 255, Anfangswert (Wert, der vom Potentiometer gelesen wird, wenn useSensorValues ​​= true ist)
  int sensorDeviationBrightness = 1 ;  // Schwankende Werte beseitigen
  int overflowDelay = 20 ;  //


  n   = analogRead(MIC_PIN);                        // Raw reading from mic
  n   = abs(n - 512 - DC_OFFSET); // Center on zero
  n   = (n <= NOISE) ? 0 : (n - NOISE);             // Remove noise/hum
  lvl = ((lvl * 7) + n) >> 3;    // "Dampened" reading (else looks twitchy)

  // Calculate bar height based on dynamic min/max levels (fixed point):
  height = TOP * (lvl - minLvlAvg) / (long)(maxLvlAvg - minLvlAvg);

  if(height < 0L)       height = 0;      // Clip output
  else if(height > TOP) height = TOP;
  if(height > peak)     peak   = height; // Keep 'peak' dot at top


  // Color pixels based on rainbow gradient
  for(i=0; i<N_PIXELS; i++) {
    if(i >= height)               strip.setPixelColor(i,0,0,0);
    else {strip.setPixelColor(0,0,0,250);
  strip.setPixelColor(1,0,0,250);
  strip.setPixelColor(2,0,0,250);
  strip.setPixelColor(3,0,0,250);
  strip.setPixelColor(4,0,0,250);
  strip.setPixelColor(5,0,0,250);
  strip.setPixelColor(6,0,0,250);
  strip.setPixelColor(7,0,0,250);
  strip.setPixelColor(8,0,0,250);
  strip.setPixelColor(9,0,0,250);
  strip.setPixelColor(10,0,0,250);
  strip.setPixelColor(11,0,250,0);
  strip.setPixelColor(12,0,0,250);
  strip.setPixelColor(13,0,0,250);
  strip.setPixelColor(14,0,0,250);
  strip.setPixelColor(15,0,0,250);
  strip.setPixelColor(16,0,0,250);
  strip.setPixelColor(17,0,0,250);
  strip.setPixelColor(18,0,0,250);
  strip.setPixelColor(19,0,0,250);
  strip.setPixelColor(20,0,0,250);
  strip.setPixelColor(21,0,0,250);
  strip.setPixelColor(22,0,0,250);
  strip.setPixelColor(23,0,250,0);
  strip.setPixelColor(24,0,0,250);
  strip.setPixelColor(25,0,0,250);
  strip.setPixelColor(26,0,0,250);
  strip.setPixelColor(27,0,0,250);
  strip.setPixelColor(28,0,0,250);
  strip.setPixelColor(29,0,0,250);
  strip.setPixelColor(30,0,0,250);
  strip.setPixelColor(31,0,0,250);
  strip.setPixelColor(32,0,0,250);
  strip.setPixelColor(33,0,0,250);
  strip.setPixelColor(34,0,0,250);
  strip.setPixelColor(35,0,250,0);
  strip.setPixelColor(36,0,0,250);
  strip.setPixelColor(37,0,0,250);
  strip.setPixelColor(38,0,0,250);
  strip.setPixelColor(39,0,0,250);
  strip.setPixelColor(40,0,0,250);
  strip.setPixelColor(41,0,0,250);
  strip.setPixelColor(42,0,0,250);
  strip.setPixelColor(43,0,0,250);
  strip.setPixelColor(44,0,0,250);
  strip.setPixelColor(45,0,0,250);
  strip.setPixelColor(46,0,0,250);
  strip.setPixelColor(47,0,250,0);
  strip.setPixelColor(48,0,0,250);
  strip.setPixelColor(49,0,0,250);
  strip.setPixelColor(50,0,0,250);
  strip.setPixelColor(51,0,0,250);
  strip.setPixelColor(52,0,0,250);
  strip.setPixelColor(53,0,0,250);
  strip.setPixelColor(54,0,0,250);
  strip.setPixelColor(55,0,0,250);
  strip.setPixelColor(56,0,0,250);
  strip.setPixelColor(57,0,0,250);
  strip.setPixelColor(58,0,0,250);
  strip.setPixelColor(59,0,250,0);}
  }



  // Draw peak dot  
  if(peak > 0 && peak <= N_PIXELS-1) strip.setPixelColor(peak,Wheel(map(peak,0,strip.numPixels()-1,0,255)));
  
   strip.show(); // Update strip

// Every few frames, make the peak pixel drop by 1:

    if(++dotCount >= PEAK_FALL) { //fall rate
      
      if(peak > 0) peak--;
      dotCount = 0;
    }



  vol[volCount] = n;                      // Save sample for dynamic leveling
  if(++volCount >= SAMPLES) volCount = 0; // Advance/rollover sample counter

  // Get volume range of prior frames
  minLvl = maxLvl = vol[0];
  for(i=1; i<SAMPLES; i++) {
    if(vol[i] < minLvl)      minLvl = vol[i];
    else if(vol[i] > maxLvl) maxLvl = vol[i];
  }
  // minLvl and maxLvl indicate the volume range over prior frames, used
  // for vertically scaling the output graph (so it looks interesting
  // regardless of volume level).  If they're too close together though
  // (e.g. at very low volume levels) the graph becomes super coarse
  // and 'jumpy'...so keep some minimum distance between them (this
  // also lets the graph go to zero when no sound is playing):
  if((maxLvl - minLvl) < TOP) maxLvl = minLvl + TOP;
  minLvlAvg = (minLvlAvg * 63 + minLvl) >> 6; // Dampen min/max levels
  maxLvlAvg = (maxLvlAvg * 63 + maxLvl) >> 6; // (fake rolling average)

}

// Input a value 0 to 255 to get a color value.
// The colors are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
Soweit, so gut. Es läuft zwar, kann es aber nicht Testen, da mir noch der Sensor fehlt und ich kein regelbares Netzteil habe.
Bei 3,3 V geht die Anzeige bis ca. die Mitte, mehr kann ich erstmal nicht Testen.
Werde erstmal abwarten und es dann mit dem Sensor testen.
Falls Ihr noch einen, einige Fehler gesehen habt, wäre ich Euch Dankbar, mir die zusagen.
MfG Ben2019
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Gestern, 18:49
Beitrag #26
RE: Neuling mit Progammierungslücken
Ohne mir jetzt den ganzen Code anzuschauen, ein paar Blicke in die Kinderbücher hätten Deinem Code gut getan. Hint: modulo

Du wolltest doch jede 10. LED andersfarbig darsrtellen warum machst Du das dann bei 11, 23, ...?

Du machst 60 mal folgendes:
Code:
Wenn i >= height setze die LED auf schwarz
Ansonsten setze [color=#FF0000][u][b]alle 60 LED[/b][/u][/color] einzeln auf eine Farbe / die 11., 23., ... auf eine andere

Du solltest Deine Abneigung vor Kinderbüchern ablegen und erst mal die Grundlagen der Programmierung lernen und mehr Sorgfalt in die Formatierung investieren.

Der Code ist, so wie er ist: Schrott.

Sorry, sonst bin ich bei Anfängern in der Bewertung nicht so hart. Deine Arroganz hat aber nichts anderes verdient.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Sad Neuling verzweifelt braucht Hilfe delay durch timer ersetzen Lois 1 274 06.02.2019 16:15
Letzter Beitrag: Tommy56
  Neuling sucht Hilfe HeikeF 6 403 16.01.2019 10:07
Letzter Beitrag: hotsystems
  Neuling kommt nicht weiter, ws2812 If abfragen Tabata 8 1.606 19.04.2018 14:07
Letzter Beitrag: Tommy56
  Neuling mit einen Projekt MrNiceGuy 39 4.837 04.02.2018 20:50
Letzter Beitrag: MrNiceGuy
  Neuling sucht Beratung für ein RFID Motorschloss MaikGyver 34 6.461 07.01.2018 21:24
Letzter Beitrag: Tommy56
  Neuling Fehler beim Kompilieren guenni71 6 2.988 26.11.2017 16:48
Letzter Beitrag: hotsystems
  Neuling Projekt Zähler Feuersturm84 2 765 16.11.2017 19:50
Letzter Beitrag: Chopp
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 1.075 27.08.2016 18:23
Letzter Beitrag: Binatone
Wink Bin Neuling Guekard 62 9.128 12.06.2016 19:01
Letzter Beitrag: hotsystems
  Neuling PWM Programmierung Gerald_Z 6 5.165 21.02.2016 22:23
Letzter Beitrag: reiner_liebold

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste