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 :)