/**
* Пример детектирования яблока фоторезистором
*
*/
int sensorPin = A0;
int ledPin = 8;
int level;
int counter = 0;
bool shadowState = false;
/**
* Замер среднеквадратичного значения по аналоговой ноге
*/
int measureRMS() {
float sum = 0.0;
for (int i = 0; i < 5; i++) {
sum += sq(analogRead(sensorPin));
}
return (int) sqrt(sum / 5);
}
void toggleLed(){
digitalWrite(ledPin, !digitalRead(ledPin));
}
/**
* Реакция на управление по COM
*/
void checkComReset() {
char buf;
if (Serial.available()) {
buf = Serial.read();
switch(buf){
case 'x':
counter = 0;
Serial.println("Counter reset.");
break;
}
}
}
void echoCounterToCOM(){
Serial.println(counter);
}
void setShadow(bool value) {
if (value == shadowState) {
return;
}
if (!value) {
counter++;
}
toggleLed();
}
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
level = measureRMS();
}
void loop() {
setShadow(!(measureRMS() > level));
checkComReset();
};
Comments