Étape 7: BONUS ! Photocellules de lecture sans broches analogiques
Parce que les cellules photoélectriques sont 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 (comme 5V) à travers une résistance, il facturera jusqu'à la tension lentement. Plus la résistance, le plus lent, il est.
Cette capture d’un oscilloscope montre whats happening sur la broche numérique (jaune). La ligne bleue indique quand l’esquisse commence à compter et que le dépouillement est terminé, environ 1.2ms plus tard.
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 cellules photoélectriques. Si vous voulez mesurer les gammes plus lumineux, utiliser un condensateur 1uF. Si vous voulez mesurer les gammes plus sombres, descendre à 0.01UF.
/ * Simple croquis Test photocellule.
Connectez une extrémité de la cellule photoélectrique 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/cds.html * /
int photocellPin = 2 ; le LDR et le capuchon sont connectés au code pin2
int photocellReading ; 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
photocellReading = RCtime(photocellPin) ;
Si (photocellReading == 30000) {}
Si nous avons obtenu 30000 cela signifie que nous « timed out »
Serial.println ("rien branché!") ;
} else {}
Serial.Print ("lecture RCtime =") ;
Serial.println(photocellReading) ; la lecture analogique brute
C’est le plus brillant, plus vite elle clignote !
digitalWrite (ledPin, HIGH) ;
Delay(photocellReading) ;
digitalWrite (ledPin, basse) ;
Delay(photocellReading) ;
}
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 ;
}