Honey Bee Counter (3 / 4 steg)
Steg 3: Programmering - lätt
Koden är bifogat nedan.
/*
Detta är för de första två gateways: A och B.
*/
Denna konstant kommer inte att ändra:
CONST int ain = 44. stift 44 är den första digitala ingången för Gate A
CONST int aout = 45; stift 45 är den andra digitala ingången för Gate A
CONST int bin = 42. samma för Gate B
CONST int bout = 43; samma för Gate B
Variabler som ändras:
int ins = 0; räknar alla Detaljer
int outs = 0;
int ai = 0; Utfärda utegångsförbud för en 1: a pin status
int lai = 0; Gate 1. pin senaste status
int ao = 0; Utfärda utegångsförbud för en 2: a pin status
int lao = 0; Gate 2. pin senaste status
int bi = 0;
int lbi = 0;
int bo = 0;
int lbo = 0;
int count = 0; Detta testar bara om det har skett en förändring i våra bee räkna
int lcount = 0;
void setup() {/ / initiera knappen pin som bidrag:
pinMode (ain, ingång);
pinMode (aout, ingång);
pinMode (bin, indata);
pinMode (skjutningen, ingång);
initiera seriell kommunikation:
Serial.BEGIN(38400); lite annorlunda än Arduino här... 38400
}
void loop() {
Läs det tryckknapp ingångsstiftet:
AI = digitalRead(ain);
Ao = digitalRead(aout);
bi = digitalRead(bin);
bo = digitalRead(bout);
om (lai! = ai) {/ / har status om den 1: a stiftet ändras?
om (ai > ao) {/ / om ja, biet kommer in eller ut?
ins ++; om det kommer lägga till en bee i ins
}}
om (lao! = ao) {
om (ao > ai) {
outs ++;
}}
om (lbi! = bi) {
om (bi > bo) {
ins ++;
}}
om (lbo! = bo) {
om (bo > bi) {
outs ++;
}}
Lai = ai; uppdaterar senaste status
Lao = ao;
LBI = bi;
LBO = bo;
count = ins + outs;
om (lcount! = count) {/ / om greven har ändrats vi skriva ut antalet nya
Serial.Print ("nummer i:");
Serial.println(ins);
Serial.Print ("nummer ut:");
Serial.println(outs);
lcount = count;
}
}
Jag la en debeebouce sekvens. Här är den senaste kalibreringen video från idag 06/26/12. Dess 91% korrekt men det finns fortfarande lite utrymme att förbättra: