Paso 7: bono! Fotocélulas de lectura sin pines analógicos
Porque las fotocélulas son básicamente resistencias, es posible utilizar incluso si usted no tiene ningún análogo pines en el microcontrolador (o si decir que desea conectar más de lo que los pines de entrada analógicos). La forma de hacer esto es mediante el aprovechamiento de una propiedad electrónica básica de resistencias y condensadores. Resulta que si usted toma un condensador que almacena inicialmente no hay tensión y luego lo conecte a la corriente (como 5V) a través de un resistor, se carga hasta el voltaje de alimentación lentamente. Cuanto mayor sea la resistencia, el más lento es.
Esta captura de un osciloscopio muestra cuál ocurre en el pin digital (amarillo). La línea azul indica cuándo el dibujo empieza a contar y cuando la cuenta es completa, unos 1.2ms más adelante.
Esto es porque el condensador actúa como un cubo y la resistencia es como un tubo delgado. Para llenar un cubo con un tubo muy delgado tarda bastante que usted puede averiguar qué tan amplia es el tubo por el tiempo que tarda para llenar el cubo a la mitad.
En este caso, el 'cubo' es un 0.1uF condensador de cerámica. Puede cambiar el condensador de casi cualquier forma que desee, pero los valores de sincronización también cambiará. 0.1uF parece ser un lugar aceptable para empezar estas fotocélulas. Si desea medir gamas más brillantes, use un condensador de 1uF. Si usted desea medir gamas más oscuras, ir a 0.01uF.
/ * Simple bosquejo prueba fotocélula.
Conecte un extremo de la célula fotoeléctrica a la energía, el otro extremo al pin 2.
Luego conecte un extremo de un 0.1uF condensador del pin 2 a tierra
Para más información consulte www.ladyada.net/learn/sensors/cds.html * /
int photocellPin = 2; la LDR y la tapa están conectados a pin2
int photocellReading; la lectura digital
int ledPin = 13; se puede usar el LED 'incorporado'
void setup(void) {}
Te enviaremos información vía el Serial monitor de depuración
Serial.Begin(9600);
pinMode (ledPin, salida); tiene un LED de salida
}
void loop(void) {}
Lea la resistencia mediante la técnica de RCtime
photocellReading = RCtime(photocellPin);
Si (photocellReading == 30000) {}
Si tenemos 30000 que significa que 'agotado'
Serial.println ("nada conectado!");
} else {}
Serial.Print ("lectura de RCtime =");
Serial.println(photocellReading); la lectura analógica cruda
El más brillante, más rápido parpadea!
digitalWrite (ledPin, HIGH);
Delay(photocellReading);
digitalWrite (ledPin, LOW);
Delay(photocellReading);
}
Delay(100);
}
Utiliza un pin digital para medir resistencia (como un FSR o fotocélula)
Para ello, teniendo la corriente del resistor que alimenta en un condensador y
contar cuánto tiempo tarda llegar a Vcc/2 (para la mayoría arduinos, que es 2, 5V)
int {RCtime (int RCpin)
lectura de int = 0; comenzar con 0
configurar el pin una salida y tirar para bajo (tierra)
pinMode (RCpin, salida);
digitalWrite (RCpin, bajo);
Ahora configurar el pin a la entrada y...
pinMode (RCpin, entrada);
mientras que (digitalRead(RCpin) == LOW) {/ / contar cuanto tarda para levantarse a alta
lectura ++; incremento de tiempo
Si (leer == 30000) {}
Si tenemos esto ahora, la resistencia es tan alta
su probable que nada está conectado!
rotura; deja el bucle
}
}
OK tampoco hemos maximizado en 30000 o que tiene una lectura, volver a la cuenta
volver a leer;
}