/** * Пример детектирования яблока фоторезистором * */ 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(); };