Étape 7: BONUS ! FSRs de lecture sans broches analogiques
Car la FSR est essentiellement des résistances, possible de les utiliser même si vous n’avez pas tout analogique épingle sur votre microcontrôleur (ou si vous voulez dire connecter plus que vous avez les broches d’entrée analogiques. Notre façon de faire c’est en profitant d’une base propriété électronique des résistances et des condensateurs. Il s’avère que si vous prenez un condensateur qui ne stocke aucune tension au départ et puis branchez au pouvoir à travers une résistance, il facturera jusqu'à la tension lentement. Plus la résistance, le plus lent, il est.
C’est parce que le condensateur agit comme un seau et la résistance est comme un tuyau mince. Pour remplir un seau avec un tube très mince prend assez de temps que vous pouvez trouver la largeur du tuyau est en chronométrant le temps nécessaire pour remplir le seau à mi-chemin.
Dans ce cas, notre « seau » est un 0.1uF condensateur céramique. Vous pouvez changer le condensateur presque n’importe quelle manière que vous voulez, mais les valeurs de minuterie changera également. 0.1uF semble être un endroit correct pour commencer pour ces représentants.
/ * Simple croquis test FSR.
Branchez une extrémité du FSR au pouvoir, l’autre extrémité de la broche 2.
Puis connectez l’extrémité d’un 0.1uF condensateur de broche 2 au sol
Pour plus d’informations voir www.ladyada.net/learn/sensors/fsr.html * /
int fsrPin = 2 ; le FSR et le capuchon sont connectés au code pin2
int fsrReading ; la lecture numérique
int ledPin = 13 ; vous pouvez simplement utiliser la LED « intégrée »
void setup(void) {}
Nous allons envoyer des informations via le Serial monitor de débogage
Serial.Begin(9600) ;
pinMode (ledPin, sortie) ; avoir une LED pour la sortie
}
void loop(void) {}
lire la résistance en utilisant la technique de RCtime
fsrReading = RCtime(fsrPin) ;
Si (fsrReading == 30000) {}
Si nous avons obtenu 30000 cela signifie que nous « timed out »
Serial.println ("rien branché!") ;
} else {}
Serial.Print ("lecture RCtime =") ;
Serial.println(fsrReading) ; la lecture analogique brute
Faire un petit traitement pour éviter le clignotement de la LED
fsrReading / = 10 ;
Plus vous appuyez, plus vite elle clignote !
digitalWrite (ledPin, HIGH) ;
Delay(fsrReading) ;
digitalWrite (ledPin, basse) ;
Delay(fsrReading) ;
}
Delay(100) ;
}
Utilise une broche numérique pour mesurer une résistance (comme un enregistrement anticipé ou photocellule!)
Nous faisons cela en ayant la résistance d’alimentation de courant dans un condensateur et
compter combien de temps il faut pour se rendre à Vcc/2 (pour la plupart arduinos, c'est-à-dire 2,5 v)
int RCtime (int RCpin) {}
lecture int = 0 ; commencent par 0
affecter à la broche de sortie et tirez dessus pour le bas (sol)
pinMode (RCpin, sortie) ;
digitalWrite (RCpin, basse) ;
Maintenant mettre la broche sur une entrée et...
pinMode (entrée, RCpin) ;
même si (digitalRead(RCpin) == faible) {/ / compter combien de temps il faut pour se lever à haute
lecture ++ ; majoration pour garder une trace de temps
Si (lecture == 30000) {}
Si nous avons obtenu ce présent, la résistance est si élevée
son probable que rien n’est connecté !
rupture ; laisser la boucle
}
}
OK non plus nous maxed à 30000 ou si tout va bien, a obtenu une lecture, retourner le décompte
retour de lecture ;
}
Il est possible de calculer la résistance effective de la lecture, mais malheureusement, les variations dans l’IDE et la carte arduino rendra incompatible. Sachez que si vous changez les versions IDE de l’OS, ou utilisez 3.3V arduino au lieu de 5V ou changement d’un 16 mhz Arduino à un 8 Mhz un (comme un lilypad), il peut y avoir des différences en raison de combien de temps il faut pour lire la valeur d’une épingle. Habituellement, ce n’est pas une grosse affaire, mais il peut faire votre projet difficile à déboguer si vous n’êtes pas enceinte il !