Blow out LED

Hallo zusammen,

heute möchte ich Ihnen ein Projekt vorstellen welches so genial wie einfach ist. Wir haben dieses auf Arduino.cc gefunden: Blow out this Arduino LED

Dieser Projektvorschlag richtet sich an alle die gerne tüfteln und probieren. Bei den meisten unserer Projekte ist es nur erforderlich den Code auf den Controller zu kopieren und anschließend alles zu verkabeln. Wir haben, mangels Hardware, etwas Zeit gebraucht, um die richtigen Komponenten zu finden und aufeinander abzustimmen. 

Das Funktionsprinzip:

Beim Betrieb einer LED entsteht durch den durchfließenden Strom Wärme am Emitterkristall. Je wärmer eine LED während des Betriebs wird, desto höher wird der interne Wiederstand. Kühlen wir eine LED, beispielsweise durch anpusten oder Kältespray verringert sich dieser und wir registrieren einen Spannungsabfall.

[wie Sie hier sehen haben wir unsere LED mit den falschen Farben verkabelt]

Die Hardware:

Im Beispiel wird ein 220 Ohm Widerstand und eine bedrahtete 0402 SMD-Led benutzt. Haben Sie diese Hardware zur Verfügung können Sie den nachfolgenden Sketch ohne große Änderungen benutzen, es is lediglich eine kleine Justage hier und da nötig. Das liegt daran, dass die Änderungen der Spannung marginal ist und die Umgebungsbedingungen teils stark variieren.  

Der Code:

// Blow Out LED Ave creates an LED that you can blow out. It automatically relights after 2 seconds
//
// Copyright 2018, Paul H. Dietz

// LED Connections
#define PLUS A1               // High side of the resistor
#define MEASURE A0            // Low side of resistor and anode of LED
// Cathode of LED goes to ground

#define NUMSAMPLES 10         // Number of samples to keep
#define MINJUMP 150           // Minimum jump for blow out

long int sensedata[NUMSAMPLES];
int dataptr = 0;
int buffull = 0;

void setup() {
  Serial.begin(250000);                     // Initialize serial communication
  pinMode(MEASURE, INPUT);
  pinMode(PLUS, OUTPUT);
  digitalWrite(PLUS, HIGH);                 // Turn on the LED
}

void loop() {
  int cnt;
  long int sum = 0;

  // Sum 256 adc readings (to reduce adc noise)
  for (cnt = 0; cnt < 256; cnt++) {
    sum = sum + analogRead(MEASURE);
  }
  
  Serial.println(sum);                      // Output sum so we can watch with Serial Plotter

  // Compare current measurement to oldest if buffer full
  if (buffull && (sum > (sensedata[dataptr] + MINJUMP))) {
 
    // Temperature drop exceeded minimum - turn off
    digitalWrite(PLUS, LOW);
    dataptr = 0;                            // Reinitialize the buffer
    buffull = 0;
    delay(2000);                            // off time for LED
    digitalWrite(PLUS, HIGH);
  }
  else {
    sensedata[dataptr] = sum;               // Store the latest data in the buffer
    dataptr++;                              // Update buffer pointer
    if (dataptr == NUMSAMPLES) {            // Check if dataptr went past end
      dataptr = 0;                          // Reset the dataptr to beginning
      buffull = 1;                          // Mark that buffer is full
    }
  }
}



Viel Spaß beim tüfteln und probieren :)

 

Letzter Artikel Uno R3 als Webserver mit Ethernet Shield

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe