mirror of
				https://github.com/taigrr/arduinolibs
				synced 2025-01-18 04:33:12 -08:00 
			
		
		
		
	Reading the temperature from a DS3232 chip
This commit is contained in:
		
							parent
							
								
									fca3145d8b
								
							
						
					
					
						commit
						d26dcdc740
					
				| @ -353,6 +353,16 @@ void DS3232RTC::writeByte(uint8_t offset, uint8_t value) | |||||||
|         RTC::writeByte(offset, value); |         RTC::writeByte(offset, value); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int DS3232RTC::readTemperature() | ||||||
|  | { | ||||||
|  |     if (_isRealTime) { | ||||||
|  |         return (((int)(signed char)readRegister(DS3232_TEMP_MSB)) << 2) | | ||||||
|  |                (readRegister(DS3232_TEMP_LSB) >> 6); | ||||||
|  |     } else { | ||||||
|  |         return NO_TEMPERATURE; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * \brief Enables the generation of interrupts for alarms 0 and 1. |  * \brief Enables the generation of interrupts for alarms 0 and 1. | ||||||
|  * |  * | ||||||
|  | |||||||
| @ -48,6 +48,8 @@ public: | |||||||
|     uint8_t readByte(uint8_t offset); |     uint8_t readByte(uint8_t offset); | ||||||
|     void writeByte(uint8_t offset, uint8_t value); |     void writeByte(uint8_t offset, uint8_t value); | ||||||
| 
 | 
 | ||||||
|  |     int readTemperature(); | ||||||
|  | 
 | ||||||
|     void enableAlarmInterrupts(); |     void enableAlarmInterrupts(); | ||||||
|     void disableAlarmInterrupts(); |     void disableAlarmInterrupts(); | ||||||
|     int firedAlarm(); |     int firedAlarm(); | ||||||
|  | |||||||
| @ -257,6 +257,24 @@ void RTC::writeByte(uint8_t offset, uint8_t value) | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * \var RTC::NO_TEMPERATURE | ||||||
|  |  * \brief Value that is returned from readTemperature() if the realtime | ||||||
|  |  * clock chip cannot determine the temperature. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * \brief Reads the value of the temperature sensor and returns the | ||||||
|  |  * temperature in quarters of a degree celcius. | ||||||
|  |  * | ||||||
|  |  * Returns the value NO_TEMPERATURE if the realtime clock chip cannot | ||||||
|  |  * determine the temperature. | ||||||
|  |  */ | ||||||
|  | int RTC::readTemperature() | ||||||
|  | { | ||||||
|  |     return NO_TEMPERATURE; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * \var RTC::INCREMENT |  * \var RTC::INCREMENT | ||||||
|  * \brief Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears(). |  * \brief Increment the day, month, or year in a call to adjustDays(), adjustMonths(), or adjustYears(). | ||||||
|  | |||||||
| @ -69,6 +69,10 @@ public: | |||||||
|     virtual uint8_t readByte(uint8_t offset); |     virtual uint8_t readByte(uint8_t offset); | ||||||
|     virtual void writeByte(uint8_t offset, uint8_t value); |     virtual void writeByte(uint8_t offset, uint8_t value); | ||||||
| 
 | 
 | ||||||
|  |     static const int NO_TEMPERATURE = 32767; | ||||||
|  | 
 | ||||||
|  |     virtual int readTemperature(); | ||||||
|  | 
 | ||||||
|     // Flags for adjustDays(), adjustMonths(), and adjustYears().
 |     // Flags for adjustDays(), adjustMonths(), and adjustYears().
 | ||||||
|     static const uint8_t INCREMENT = 0x0000; |     static const uint8_t INCREMENT = 0x0000; | ||||||
|     static const uint8_t DECREMENT = 0x0001; |     static const uint8_t DECREMENT = 0x0001; | ||||||
|  | |||||||
							
								
								
									
										78
									
								
								libraries/RTC/examples/DumpRTC/DumpRTC.pde
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								libraries/RTC/examples/DumpRTC/DumpRTC.pde
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | |||||||
|  | /* | ||||||
|  | This example demonstrates how to read time, date, and other information | ||||||
|  | from the DS3232 realtime clock chip. | ||||||
|  | 
 | ||||||
|  | This example is placed into the public domain. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #include <SoftI2C.h> | ||||||
|  | #include <DS3232RTC.h> | ||||||
|  | 
 | ||||||
|  | SoftI2C i2c(A4, A5); | ||||||
|  | DS3232RTC rtc(i2c); | ||||||
|  | 
 | ||||||
|  | const char *months[] = { | ||||||
|  |     " Jan ", " Feb ", " Mar ", " Apr ", " May ", " Jun ", | ||||||
|  |     " Jul ", " Aug ", " Sep ", " Oct ", " Nov ", " Dec " | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | void setup() { | ||||||
|  |     Serial.begin(9600); | ||||||
|  | 
 | ||||||
|  |     RTCAlarm alarm; | ||||||
|  |     for (byte alarmNum = 0; alarmNum < RTC::ALARM_COUNT; ++alarmNum) { | ||||||
|  |         rtc.readAlarm(alarmNum, &alarm); | ||||||
|  |         Serial.print("Alarm "); | ||||||
|  |         Serial.print(alarmNum + 1, DEC); | ||||||
|  |         Serial.print(": "); | ||||||
|  |         if (alarm.flags & 0x01) { | ||||||
|  |             printDec2(alarm.hour); | ||||||
|  |             Serial.print(':'); | ||||||
|  |             printDec2(alarm.minute); | ||||||
|  |             Serial.println(); | ||||||
|  |         } else { | ||||||
|  |             Serial.println("Off"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     Serial.println(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void loop() { | ||||||
|  |     RTCTime time; | ||||||
|  |     RTCDate date; | ||||||
|  |     rtc.readTime(&time); | ||||||
|  |     rtc.readDate(&date); | ||||||
|  | 
 | ||||||
|  |     Serial.print("Time: "); | ||||||
|  |     printDec2(time.hour); | ||||||
|  |     Serial.print(':'); | ||||||
|  |     printDec2(time.minute); | ||||||
|  |     Serial.print(':'); | ||||||
|  |     printDec2(time.second); | ||||||
|  |     Serial.println(); | ||||||
|  | 
 | ||||||
|  |     Serial.print("Date: "); | ||||||
|  |     Serial.print(date.day, DEC); | ||||||
|  |     Serial.print(months[date.month - 1]); | ||||||
|  |     Serial.print(date.year); | ||||||
|  |     Serial.println(); | ||||||
|  | 
 | ||||||
|  |     Serial.print("Temp: "); | ||||||
|  |     int temp = rtc.readTemperature(); | ||||||
|  |     if (temp != RTC::NO_TEMPERATURE) { | ||||||
|  |         Serial.print(temp / 4.0); | ||||||
|  |         Serial.println(" celcius"); | ||||||
|  |     } else { | ||||||
|  |         Serial.println("not available"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Serial.println(); | ||||||
|  | 
 | ||||||
|  |     delay(1000); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void printDec2(int value) | ||||||
|  | { | ||||||
|  |     Serial.print((char)('0' + (value / 10))); | ||||||
|  |     Serial.print((char)('0' + (value % 10))); | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user