//board atmega1280 #include #include #include #include // per bluetooth int RECV_PIN = 11; //define input pin on Arduino IRrecv irrecv(RECV_PIN); decode_results results; String val = ""; double Temperature; //parte bluetooth SoftwareSerial blueToothSerial(52, 53); // RX, TX String command = ""; // Stores response of the HC-06 Bluetooth device char blueToothVal; //value sent over via bluetooth char lastValue; //stores last state of device (on/off) int countTemp = 0; double tempTemp = 0; double tempTempTot = 0; double Thermister(int RawADC) { //Function to perform the fancy math of the Steinhart-Hart equation double Temp; //Temp = log(10000.0*((1024.0/RawADC-1))); //Serial.println(RawADC); float R = 9870.0; // Fixed resistance in the voltage divider float Rt,T,logRt; // Computed resistance of the thermistor Rt = R*( 1023.0 / float(RawADC) - 1.0 ); float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; logRt = log(Rt); T = ( 1.0 / (c1 + c2*logRt + c3*logRt*logRt*logRt ) ) - 273.15; //Serial.println(T); // See http://en.wikipedia.org/wiki/Thermistor for explanation of formula 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 return Temp; } char* NormalizedTemp(double Temperature) { char charBuf[50]; //ciaoa.toCharArray(charBuf, 50); int intpart = (int)Temperature; double decpart = (Temperature - intpart)*100; int intdecpart = (int)decpart; sprintf(charBuf, "t%d%d", intpart,intdecpart); return charBuf; } void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver // Initialize the GLCD GLCD.Init(); // Select the font for the default text area GLCD.SelectFont(System5x7); GLCD.print("Formaggino dice:"); //parte bluetooth Serial.println("Type AT commands!"); // The HC-06 defaults to 9600 according to the datasheet. blueToothSerial.begin(9600); pinMode(13,OUTPUT); Temperature = Thermister(analogRead(0)); Serial.println(Temperature); } void loop() { countTemp += 1; Serial.println(countTemp); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): GLCD.CursorTo(0, 1); GLCD.print("Attivo da: "); // print the number of seconds since reset: GLCD.print(millis()/1000); GLCD.print(" sec"); GLCD.print("\nTemperatura: "); tempTemp = Thermister(analogRead(0)); tempTempTot += tempTemp; Serial.println(tempTemp); if ((countTemp % 10) == false){ Serial.println("Dentro"); Serial.println(tempTempTot); Temperature = tempTempTot / 10; tempTempTot = 0; } GLCD.print(Temperature); //Delay 50ms before next reading. delay(50); if (val == "ff30cf") { GLCD.println("valore preso"); } else{ GLCD.println("no"); } if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (String(results.value, HEX) != "ffffffff") val = String(results.value, HEX); Serial.println(val); irrecv.resume(); // Receive the next value } // Read user input if available. if (blueToothSerial.available()){ //delay(10); // The delay is necessary to get this working! //blueToothSerial.write(Serial.read()); blueToothVal=(char)blueToothSerial.read(); //read it Serial.println("sono dentro"); } if (blueToothVal=='n') {//if value from bluetooth serial is n digitalWrite(13,HIGH); //switch on LED blueToothSerial.write(NormalizedTemp(Temperature)); blueToothVal=' '; } else if (blueToothVal=='f') {//if value from bluetooth serial is n digitalWrite(13,LOW); //turn off LED blueToothSerial.write(NormalizedTemp(Temperature)); blueToothVal=' '; } delay(1000); }