Paso 7: bono! Lectura FSRs sin pines analógicos
Porque FSR es 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 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.
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 comenzar estos FSRs.
/ * Simple bosquejo prueba FSR.
Conecte un extremo del FSR 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/fsr.html * /
int fsrPin = 2; El FSR y la tapa están conectados a pin2
int fsrReading; 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
fsrReading = RCtime(fsrPin);
Si (fsrReading == 30000) {}
Si tenemos 30000 que significa que 'agotado'
Serial.println ("nada conectado!");
} else {}
Serial.Print ("lectura de RCtime =");
Serial.println(fsrReading); la lectura analógica cruda
Hacer un poco de procesamiento para evitar el parpadeo del LED
fsrReading = 10;
Cuanto más presione, más rápido parpadea!
digitalWrite (ledPin, HIGH);
Delay(fsrReading);
digitalWrite (ledPin, LOW);
Delay(fsrReading);
}
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;
}
Es posible calcular la resistencia real de la lectura, pero desafortunadamente, las variaciones en el IDE y placa arduino hará incompatible. Ser conscientes de que si cambia versiones IDE del sistema operativo, o utilizar un 3.3V arduino en vez de 5V, o cambio de 16 mhz Arduino a un 8 Mhz (como lilypad) puede haber diferencias debido a que tarda para leer el valor de un pin. Generalmente eso no es gran cosa pero puede hacer que su proyecto difícil de depurar si usted no está esperando!