Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int button = 2;
- int buttonState;
- //=========================
- int redLed = 7;
- int greenLed = 8;
- int rgbInR = 5;
- int rgbInG = 4;
- int rgbInB = 3;
- int rgbOutR = 10;
- int rgbOutG = 9;
- int rgbOutB = 11;
- int buzzer = 13;
- //=====================
- int inTemp = A0;
- int outTemp = A1;
- int inHumid = A2;
- int outHumid = A3;
- //=========================
- int incomingLow=0, incomingHigh=0;
- #define OFF_STATE 0
- #define ON_STATE 1
- int systemState;
- void setup()
- {
- Serial.begin(9600);
- pinMode(13, OUTPUT);
- pinMode(button, INPUT);
- pinMode(redLed, OUTPUT);
- pinMode(greenLed, OUTPUT);
- systemState = 0;
- buttonState = 0;
- }
- void loop()
- {
- if (buttonPressed()){
- buttonState = 1;
- systemState = nextState();
- }
- delay(500);
- if(Serial.peek()!=-1){
- incomingLow = Serial.read();
- incomingHigh = Serial.read();
- }
- handleSystemState();
- //Serial.println(readTempInCelsius(10, outTemp));
- }
- //=========================
- void handleSystemState(){
- switch(systemState){
- case OFF_STATE:
- digitalWrite(redLed, HIGH);
- digitalWrite(greenLed, LOW);
- rgbWrite(5,0,4,0,3,0);
- rgbWrite(10,0,9,0,6,0);
- break;
- case ON_STATE:
- digitalWrite(redLed, LOW);
- digitalWrite(greenLed, HIGH);
- float outTemperature = getTemp(outTemp);
- if ( outTemperature >=0 && outTemperature<=50){
- rgbWrite(rgbOutR,0,rgbOutG,255,rgbOutB,0);
- } else
- rgbWrite(rgbOutR,255, rgbOutG,0,rgbOutB,0);
- float inTemperature = getTemp(inTemp);
- if (inTemperature >=0 && inTemperature <=50){
- rgbWrite(rgbInR,0,rgbInG,255, rgbInB, 255);
- }else {
- rgbWrite(rgbInR,255, rgbInG,0,rgbInB,0);
- }
- Serial.println(getTemp(outTemp));
- Serial.println(getTemp(inTemp));
- Serial.println(getHumidity(outHumid));
- Serial.println(getHumidity(inHumid));
- break;
- }
- }
- //=========================
- void rgbWrite(int rPin, int rInt,
- int gPin, int gInt,
- int bPin, int bInt
- ){
- analogWrite(rPin, rInt);
- analogWrite(gPin, gInt);
- analogWrite(bPin, bInt);
- }
- int nextState(){
- switch(systemState){
- case OFF_STATE: return ON_STATE;
- case ON_STATE: return OFF_STATE;
- default: return -1;
- }
- }
- int buttonPressed(){
- int btn_state = digitalRead(button);
- if (btn_state == LOW){
- buttonState = 0;
- return 0;
- }
- return ((btn_state == HIGH) != buttonState);
- }
- float getTemp(int pin){
- return readTempInCelsius(10,pin);
- }
- double Thermistor(int RawADC) {
- double Temp; // Working variable
- Temp = log(((10240000 / RawADC) - 10000));
- Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
- Temp = Temp - 273.15; // Convert Kelvin to Celcius
- //Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
- return Temp;
- }
- int oldV;
- int getHumidity(int pin){
- int v = analogRead(pin);
- v = smooth(v, 0.99, oldV);
- oldV = v;
- delay(2);
- return v;
- }
- int smooth(int data, float filterVal, float smoothedVal) {
- if (filterVal > 1){ // check to make sure param's are within range
- filterVal = .99;
- }
- else if (filterVal <= 0){
- filterVal = 0;
- }
- smoothedVal = (data * (1 - filterVal)) + (smoothedVal * filterVal);
- return (int)smoothedVal;
- }
- float readTempInCelsius(int count, int pin) {
- float temperaturaMediata = 0;
- float sumaTemperatura = 0;
- for (int i =0; i < count; i++) {
- int reading = analogRead(pin);
- float voltage = reading * 5.0;
- voltage /= 1024.0;
- float temperatureCelsius = (voltage - 0.5) * 100 ;
- sumaTemperatura = sumaTemperatura + temperatureCelsius;
- }
- return sumaTemperatura / (float)count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement