Benutzer-Werkzeuge

Webseiten-Werkzeuge


arduino:flackerndes_windlicht:programmversion_0.3

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
arduino:flackerndes_windlicht:programmversion_0.3 [30.01.2018 18:33] Frickelpietarduino:flackerndes_windlicht:programmversion_0.3 [22.10.2018 18:47] Frickelpiet
Zeile 2: Zeile 2:
 Der Nachteil der [[arduino:flackerndes_windlicht:programmversion_0.2|Programmversion 0.2]] ist, dass die Flamme sich nur auf einer Kreisbahn bewegen kann. Das ist schon recht effektvoll, aber nur eine lausige Simulation der Bewegung einer echten Flamme im Windzug. Daher habe ich den Code in dieser Programmversion vollständig überarbeitet. Der Nachteil der [[arduino:flackerndes_windlicht:programmversion_0.2|Programmversion 0.2]] ist, dass die Flamme sich nur auf einer Kreisbahn bewegen kann. Das ist schon recht effektvoll, aber nur eine lausige Simulation der Bewegung einer echten Flamme im Windzug. Daher habe ich den Code in dieser Programmversion vollständig überarbeitet.
  
-Ab dieser Programmversion kann sich die Flamme über die gesamte Kreisfläche bewegen, die der NeoPixel-Ring umschließt. Die Variable "deviance" beschreibt die Ablenkung der Flamme aus der Mittelstellung, die Variable "angle" den Winkel der Ablenkung und die Variable "flickerDepth" die Stärke des Flackerns. Die Variable "FlickerDepth" wirkt sich global auf die Helligkeit aller NeoPixel aus, da sie ein Multiplikator ist aber auch die helleren stärker als auf die dunkleren.+Ab dieser Programmversion kann sich die Flamme über die gesamte Kreisfläche bewegen, die der NeoPixel-Ring umschließt. Die Variable "deviance" beschreibt die Ablenkung der Flamme aus der Mittelstellung, die Variable "angle" den Winkel der Ablenkung und die Variable "flickerDepth" die Stärke des Flackerns. Die Variable "FlickerDepth" wirkt sich global auf die Helligkeit aller NeoPixel aus, da sie ein Multiplikator ist aber auf die helleren stärker als auf die dunkleren. Was mir sehr gut gefällt ist, dass der Algorithmus sehr kompakt ist
  
 <code> <code>
-// Comfortable flickering and fluttering candle +// Flickering and fluttering candle 
-// Simulates a candle on a ring of twelve NeoPixels +// This code emulates a candle using a ring of twelve NeoPixels 
-// Version 0.4+// Version 0.4.3
 // by Frickelpiet // by Frickelpiet
  
Zeile 16: Zeile 16:
 #include <Adafruit_TSL2561_U.h> #include <Adafruit_TSL2561_U.h>
  
-// Define the in- and output pins+// Define output pin
 #define PIN 2 #define PIN 2
    
 // Define the NeoPixel ring // Define the NeoPixel ring
-int numPixels = 12;                                    // Number of NeoPixels +int numPixels = 12;                                     // Number of NeoPixels 
 Adafruit_NeoPixel ring = Adafruit_NeoPixel(numPixels, PIN, NEO_GRBW + NEO_KHZ800); Adafruit_NeoPixel ring = Adafruit_NeoPixel(numPixels, PIN, NEO_GRBW + NEO_KHZ800);
  
 +// Define the light seensor (TSL2561)
 Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
- 
  
 // Variables // Variables
Zeile 46: Zeile 46:
 float sensorValue; float sensorValue;
  
-// Definiert die Tracking-Variablen für die IF-Abfragen +unsigned long previousMillisProgram = 0;                // Program 
-unsigned long previousMillisProgram = 0;                // NeoPixel-Animation +unsigned long previousMillisCandle = 0;                 // Emulation 
-unsigned long previousMillisCandle = 0;                 // NeoPixel-Animation +unsigned long previousMillisBrightness = 0;             // Brightness
-unsigned long previousMillisBrightness = 0;             // NeoPixel-Animation+
  
-// Definiert die Intervalle für die IF-Abfragen in Millisekunden +unsigned long intervalProgram = 50;                     // Program 
-unsigned long intervalProgram = 50;                     // NeoPixel-Animation +unsigned long intervalCandle = 20;                      // Emulation 
-unsigned long intervalCandle = 20;                      // NeoPixel-Animation +unsigned long intervalBrightness = 200;                 // Brightness
-unsigned long intervalBrightness = 200;                 // NeoPixel-Animation+
  
 void setup() { void setup() {
-  //ring.setBrightness(191);                             // Maximal brightnes of the NeoPixel ring 
- 
   Serial.begin(115200);   Serial.begin(115200);
  
Zeile 106: Zeile 102:
       Serial.println(angleArray[i]);       Serial.println(angleArray[i]);
     }     }
 +  
   ring.begin();   ring.begin();
   ring.show();                                         // Initialize all pixels to 'off'   ring.show();                                         // Initialize all pixels to 'off'
  
 } }
- 
  
  
Zeile 182: Zeile 178:
  
      
-  // Animation of the flame's flickering and fluttering+  // Emulation of the flame's flickering and fluttering
   if ((unsigned long)(currentMillis - previousMillisCandle) >= intervalCandle) {   if ((unsigned long)(currentMillis - previousMillisCandle) >= intervalCandle) {
  
Zeile 227: Zeile 223:
       flameArray[i] = byte(deviationArray[i] * flickering * brightness);       flameArray[i] = byte(deviationArray[i] * flickering * brightness);
     }     }
- 
  
     // Calculation of the colors for the twelve NeoPixel     // Calculation of the colors for the twelve NeoPixel
Zeile 273: Zeile 268:
      
 } }
 +
 +
 </code> </code>
  
 Tags: #Arduino #NeoPixel #Windlicht Tags: #Arduino #NeoPixel #Windlicht
arduino/flackerndes_windlicht/programmversion_0.3.txt · Zuletzt geändert: 18.05.2023 12:34 von 127.0.0.1