shustry

Apple Counter with photo resistor

Feb 18th, 2019
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. /**
  2.  * Пример детектирования яблока фоторезистором
  3.  *
  4.  */
  5. int sensorPin = A0;
  6. int ledPin = 8;
  7. int level;
  8. int counter = 0;
  9. bool shadowState = false;
  10.  
  11. /**
  12.  * Замер среднеквадратичного значения по аналоговой ноге
  13.  */
  14. int measureRMS() {
  15.   float sum = 0.0;
  16.   for (int i = 0; i < 5; i++) {
  17.     sum += sq(analogRead(sensorPin));
  18.   }
  19.   return (int) sqrt(sum / 5);
  20. }
  21.  
  22. void toggleLed(){
  23.   digitalWrite(ledPin, !digitalRead(ledPin));
  24. }
  25.  
  26. /**
  27.  * Реакция на управление по COM
  28.  */
  29. void checkComReset() {
  30.   char buf;
  31.   if (Serial.available()) {
  32.     buf = Serial.read();
  33.     switch(buf){
  34.       case 'x':
  35.       counter = 0;
  36.       Serial.println("Counter reset.");
  37.       break;
  38.     }
  39.   }
  40. }
  41.  
  42. void echoCounterToCOM(){
  43.   Serial.println(counter);
  44. }
  45.  
  46. void setShadow(bool value) {
  47.   if (value == shadowState) {
  48.     return;
  49.   }
  50.   if (!value) {
  51.     counter++;  
  52.   }
  53.   toggleLed();
  54. }
  55.  
  56. void setup() {
  57.   Serial.begin(9600);
  58.   pinMode(ledPin, OUTPUT);
  59.   level = measureRMS();
  60. }
  61.  
  62. void loop() {
  63.   setShadow(!(measureRMS() > level));
  64.   checkComReset();
  65. };
Advertisement
Add Comment
Please, Sign In to add comment