Stap 6: Programmering en conclusies
De schets:
#define resolutie 8 #define vernieuwen 2 * 1000000 / lichtnet int minValue; VOID Setup {} int. temp; void loop {} lange tijd (int pin, byte masker) {} extern vluchtige unsigned long timer0_overflow_count; ongeldig startTimer() {} unsigned long checkTimer() {}
#define lichtnet 50 / / 60: Noord-Amerika, japan; 50: de meeste andere plaatsen
Serial.begin(9600); DEBUG
pinMode (8, INPUT);
float temp;
int i = 0;
while(1) {}
if(i==100)
breken;
temp = temp + tijd (8, B00000001);
Serial.println(temp); DEBUG
i ++;
}
minValue = temp / 100;
Serial.println(minValue); DEBUG
}
Temp = tijd (8, B00000001);
Serial.Print(temp); DEBUG
if(temp > minValue) {}
Toon (A0, 494);
digitalWrite(A1,HIGH);
Serial.println ("ON"); DEBUG
} else {}
noTone(A0);
digitalWrite(A1,LOW);
Serial.println ("OFF"); DEBUG
}
}
Lange telling unsigned = 0, totaal = 0;
while(checkTimer() < vernieuwen) {}
pinMode is ongeveer 6 keer langzamer dan het toewijzen van
DDRB direct, maar die pauze is belangrijk
pinMode (pin, uitvoer);
PORTB = 0;
pinMode (pin, ingang);
terwijl ((PINB & mask) == 0)
Graaf ++;
totaal ++;
}
startTimer();
retourneren (graaf << resolutie) / totaal;
}
timer0_overflow_count = 0;
TCNT0 = 0;
}
retourneren ((timer0_overflow_count << 8) + TCNT0) << 2;
}
In wezen bestaat het uit twee delen: de setup en de lus. In de instellingen, die staat voor ongeveer 10 seconden, Arduino maken het wiskundige gemiddelde tussen de waarden die ontvangt tijdens dit terwijl en stel deze in als een "minimale waarde" (tijdens die eerste seconden moet je je hand zoals in de buurt van de kan als u wilt dat het punt waar, na, het alarm begint). In de lus, in plaats daarvan, Arduino lezen de huidige waarde en ziet als het is groter dan de "minimale waarde": de spreker zal in dit geval een Toon die stopt als alleen de waarde kleiner is dan de "minimale waarde wordt". De "/ / DEBUG" regels zijn in het geval dat iets verkeerd komt
De instructable is voltooid. Geniet ervan. Ik ben sorry voor mijn slechte Engels: hebt u eventuele problemen, laat alstublieft een reactie.