Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int sensorPin = 0;
- const int temperaturePin = 1;
- int lightLevel, high = 0, low = 1023;
- int mark = 255;
- int count = 1;
- int buttonState;
- int lastButtonState = LOW;
- unsigned long lastDebounceTime = 0;
- unsigned long debounceDelay = 50;
- void setup()
- {
- Serial.begin(9600);
- //LEDs
- pinMode(13, OUTPUT);
- pinMode(12, OUTPUT);
- pinMode(11, OUTPUT);
- pinMode(10, OUTPUT);
- pinMode(9, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(4, OUTPUT);
- //button
- pinMode(2, INPUT);
- }
- void loop()
- {
- int reading = digitalRead(2);
- if (reading != lastButtonState)
- {
- lastDebounceTime = millis();
- }
- if ((millis() - lastDebounceTime) > debounceDelay)
- {
- if (reading != buttonState)
- {
- buttonState = reading;
- if (buttonState == HIGH)
- {
- count++;
- }
- }
- }
- lastButtonState = reading;
- //set mode based on toggle status. True on, false off
- if(count % 2)
- {
- mode1();
- }
- else
- {
- mode2();
- }
- }
- void mode1()
- {
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(6, LOW);
- digitalWrite(7, LOW);
- digitalWrite(8, LOW);
- digitalWrite(9, LOW);
- digitalWrite(10, LOW);
- digitalWrite(11, LOW);
- digitalWrite(12, LOW);
- digitalWrite(13, LOW);
- lightLevel = analogRead(sensorPin);
- // prepare light levels
- if (lightLevel < low)
- {
- low = lightLevel;
- }
- if (lightLevel > high)
- {
- high = lightLevel;
- }
- lightLevel = map(lightLevel, low+30, high-30, 0, 250);
- lightLevel = constrain(lightLevel, 0, 250);
- //turn on LEDS accordingly
- if (lightLevel > mark)
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- digitalWrite(12, HIGH);
- digitalWrite(13, HIGH);
- }
- if (lightLevel > (mark * 0.9) && lightLevel < mark)
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- digitalWrite(12, HIGH);
- }
- if (lightLevel > (mark * 0.8) && lightLevel < (mark * 0.9))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- }
- if (lightLevel > (mark * 0.7) && lightLevel < (mark * 0.8))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- }
- if (lightLevel > (mark * 0.6) && lightLevel < (mark * 0.7))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- }
- if (lightLevel > (mark * 0.5) && lightLevel < (mark * 0.6))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- }
- if (lightLevel > (mark * 0.4) && lightLevel < (mark * 0.5))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- }
- if (lightLevel > (mark * 0.3) && lightLevel < (mark * 0.4))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- }
- if (lightLevel > (mark * 0.2) && lightLevel < (mark * 0.3))
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- }
- if (lightLevel < (mark * 0.2))
- {
- digitalWrite(4, HIGH);
- }
- Serial.println(lightLevel);
- delay(500);
- }
- void mode2()
- {
- digitalWrite(4, LOW);
- digitalWrite(5, LOW);
- digitalWrite(6, LOW);
- digitalWrite(7, LOW);
- digitalWrite(8, LOW);
- digitalWrite(9, LOW);
- digitalWrite(10, LOW);
- digitalWrite(11, LOW);
- digitalWrite(12, LOW);
- digitalWrite(13, LOW);
- float voltage, degreesC;
- voltage = getVoltage(temperaturePin);
- degreesC = (voltage - 0.5) * 100.0;
- if( (degreesC > 0.0) && (degreesC < 4.0) )
- {
- digitalWrite(4, HIGH);
- }
- if( (degreesC > 3.0) && (degreesC < 7.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- }
- if( (degreesC > 6.0) && (degreesC < 10.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- }
- if( (degreesC > 9.0) && (degreesC < 13.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- }
- if( (degreesC > 12.0) && (degreesC < 16.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- }
- if( (degreesC > 15.0) && (degreesC < 19.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- }
- if( (degreesC > 18.0) && (degreesC < 22.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- }
- if( (degreesC > 21.0) && (degreesC < 25.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- }
- if( (degreesC > 24.0) && (degreesC < 28.0) )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- digitalWrite(12, HIGH);
- }
- if( degreesC > 27.0 )
- {
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(6, HIGH);
- digitalWrite(7, HIGH);
- digitalWrite(8, HIGH);
- digitalWrite(9, HIGH);
- digitalWrite(10, HIGH);
- digitalWrite(11, HIGH);
- digitalWrite(12, HIGH);
- digitalWrite(13, HIGH);
- }
- Serial.println(degreesC);
- delay(500);
- }
- float getVoltage(int pin)
- {
- return (analogRead(pin) * 0.004882814);
- // This equation converts the 0 to 1023 value that analogRead()
- // returns, into a 0.0 to 5.0 value that is the true voltage
- // being read at that pin.
- }
Advertisement
Add Comment
Please, Sign In to add comment