Bättre ledde som ljussensor (3 / 4 steg)
Steg 3: Ladda upp skissen
int ledde = 13. PIN-koden där du sätter LED
int sensorpin = A3; den analoga PIN-kod där du sätter din sensorLED
int resetteller = 0; resten är räknare och variabler för att beräkna med
int sens = 0;
int teller = 0;
int grund = 1024;
int test = 1024;
int test2 = 1024;
int test3 = 1024;
Detta är värdena som ska spela med att få bättre (eller sämre) resultat
int marge = 5; utrymmet mellan en positiv och negativ behandling
int vertraging = 1; hastigheten på behandlingen; en lägre siffra är en högre hastighet
int prover = 70. antalet prover att jämföra för att göra en behandling
int resetsamples = 30. Hur många cykler att köra ljuset på innan du litar inte på värdet längre
void setup() {
pinMode ledde (, OUTPUT);
Serial.BEGIN(9600); ingen verklig del av programmet, bara för felsökning
för (teller = 0; teller < prover, teller ++) {/ / kom ihåg det lägsta värdet av många avläsningar
Sens = analogRead(sensorpin);
om (sens < grund) {grund = sens;}
Delay(vertraging); sensorn behöver en försening här för att fånga andan
}
}
void loop() {
för (teller = 0; teller < prover, teller ++) {/ / kom ihåg det lägsta värdet av många avläsningar
Sens = analogRead(sensorpin);
Delay(vertraging); sensorn behöver en försening här för att fånga andan
om (sens < testa) {
test3 = sens; kom ihåg de 3 lägsta avläsningarna
test2 = test3;
testa = test2;}
}
om (testa < grund-marge & & test2 < grund-marge & & test3 < grund-marge) {//all 3 låg avläsningar mus vara < grund läsning
digitalWrite (ledde, högt);
resetteller ++; räkna hur länge lampan är tänd
}
annat {
digitalWrite (ledde, låg);
bas = test; om den lägsta test behandlingen är högre än grunden, återställs grunden
resetteller = 0;
}
om (resetteller > resetsamples) {grund = test;} Om LED vistelser på länge, vi inte lita på det och återställa grund
Serial.Print(basis); Serial.Print(""); Serial.Print(test); Serial.Print(""); Serial.println (sens); //just för felsökning
testa = 1024;
}