Diferencia entre revisiones de «Medidor de parpadeo de luz»

De fabwiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 1: Línea 1:
__NOTOC__
Este es un instrumento para medir el parpadeo de las fuentes de luz.
Este es un instrumento para medir el parpadeo de las fuentes de luz.
Algunas bombitas son mucho más estables que otras.
Algunas bombitas son mucho más estables que otras.
Línea 12: Línea 14:
=Sensor=
=Sensor=
* [[Media:Ti opt101.pdf | Texas Instruments OPT101 Hoja de Datos]]
* [[Media:Ti opt101.pdf | Texas Instruments OPT101 Hoja de Datos]]
=Medidas=
==Bombita 1==
Estabilidad en la producción de luz: 95%
<gallery>
Bombita 1.jpg
</gallery>


=Codigo=
=Codigo=

Revisión del 18:00 9 jul 2026


Este es un instrumento para medir el parpadeo de las fuentes de luz. Algunas bombitas son mucho más estables que otras. Esos datos no son disponibles. Podemos medir y publicar datos sobre las bombitas que son comunes acá.

Fotos

Sensor

Medidas

Bombita 1

Estabilidad en la producción de luz: 95%

Codigo


#include "I2C_LCD.h"

const int COLLECTION_MS = 100;
const int SENSOR_LIMIT = 850;
const int SENSOR_BAJO = 200;
const int STOP_PIN = 3;
const int INTERRUPT_SETTLE_MS = 1000;

I2C_LCD lcd(39);

volatile bool run = true;

void stop() {
  if (millis() > INTERRUPT_SETTLE_MS) run = false;
}

void setup() {
  Wire.begin();
  Wire.setClock(100000);
  lcd.begin(16, 2);
  pinMode(STOP_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(STOP_PIN), stop, LOW);
}

void loop() {
  int x_max = 0, x_min = 10000;
  unsigned long stop_ms = millis() + COLLECTION_MS;
  int sample_count = 0;
 
  while (millis() < stop_ms) {
    int x = analogRead(A0);
    if (x > x_max) x_max = x;
    if (x < x_min) x_min = x;
    sample_count++;
  }

  if (!run) return;

  lcd.clear();

  if (x_max > SENSOR_LIMIT) {
    lcd.center(1, "demasiada luz");
  } else if (x_max < SENSOR_BAJO) {
    lcd.center(1, "falta de luz");
  } else {
    float ratio = (float)x_min / x_max;
    lcd.center(0, ("ratio = " + String(ratio)).c_str());
    lcd.center(1, ("samples = " + String(sample_count)).c_str());
  }
}