Advertisement
Guest User

Untitled

a guest
Sep 18th, 2015
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. // GND to GND, V to 5v, Out to A0
  2.  
  3. const int leds[] = {2,3,4,5,6};
  4. unsigned int thresh[] = {0,0,0,0,0};
  5. const int numLeds = sizeof(leds) / sizeof(int);
  6.  
  7. const int ledMin = 150;
  8. int ledMax = 300;
  9.  
  10. void setup() {
  11.   Serial.begin(57600);
  12.   // turn LEDs on
  13.   for (int i=0; i<numLeds; ++i)
  14.   {
  15.     pinMode(leds[i], OUTPUT);
  16.     digitalWrite(leds[i], HIGH);
  17.     delay(200);
  18.   }
  19.   // wait for a pull to calibrate (determine the max pull value)
  20.   while (ledMax == 300)
  21.   {
  22.     unsigned int cur = analogRead(A0);
  23.     if (cur > ledMax)
  24.     {
  25.       int calibrateStart = millis();
  26.       while (millis() - calibrateStart < 2000)
  27.       {
  28.         cur = analogRead(A0);
  29.         if (cur > ledMax)
  30.           ledMax = cur;
  31.       }
  32.     }
  33.   }
  34.   unsigned int ledRange = ledMax - ledMin;
  35.   // turn LEDs off to indicate that calibration is finished
  36.   for (int i=0; i<numLeds; ++i)
  37.   {
  38.     thresh[i] = (ledRange / numLeds) * i + ledMin;
  39.     digitalWrite(leds[i], LOW);
  40.     Serial.print("Thresh ");
  41.     Serial.print(i);
  42.     Serial.print(": ");
  43.     Serial.println(thresh[i]);
  44.   }
  45.   delay(1000);
  46. }
  47.  
  48. void loop() {
  49.   unsigned int cur = analogRead(A0);
  50.   for (int i=0; i<numLeds; ++i)
  51.   {
  52.     if (cur > thresh[i])
  53.       digitalWrite(leds[i], HIGH);
  54.     else
  55.       digitalWrite(leds[i], LOW);
  56.   }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement