Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // GND to GND, V to 5v, Out to A0
- const int leds[] = {2,3,4,5,6};
- unsigned int thresh[] = {0,0,0,0,0};
- const int numLeds = sizeof(leds) / sizeof(int);
- const int ledMin = 150;
- int ledMax = 300;
- void setup() {
- Serial.begin(57600);
- // turn LEDs on
- for (int i=0; i<numLeds; ++i)
- {
- pinMode(leds[i], OUTPUT);
- digitalWrite(leds[i], HIGH);
- delay(200);
- }
- // wait for a pull to calibrate (determine the max pull value)
- while (ledMax == 300)
- {
- unsigned int cur = analogRead(A0);
- if (cur > ledMax)
- {
- int calibrateStart = millis();
- while (millis() - calibrateStart < 2000)
- {
- cur = analogRead(A0);
- if (cur > ledMax)
- ledMax = cur;
- }
- }
- }
- unsigned int ledRange = ledMax - ledMin;
- // turn LEDs off to indicate that calibration is finished
- for (int i=0; i<numLeds; ++i)
- {
- thresh[i] = (ledRange / numLeds) * i + ledMin;
- digitalWrite(leds[i], LOW);
- Serial.print("Thresh ");
- Serial.print(i);
- Serial.print(": ");
- Serial.println(thresh[i]);
- }
- delay(1000);
- }
- void loop() {
- unsigned int cur = analogRead(A0);
- for (int i=0; i<numLeds; ++i)
- {
- if (cur > thresh[i])
- digitalWrite(leds[i], HIGH);
- else
- digitalWrite(leds[i], LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement