Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: OLED160G1 mbed uOLED
Fork of DS18B20GSM by
main.cpp@2:fe0f893513d4, 2012-11-02 (annotated)
- Committer:
- Renato
- Date:
- Fri Nov 02 09:27:14 2012 +0000
- Revision:
- 2:fe0f893513d4
- Parent:
- 1:b2ea1e9d90df
- Child:
- 3:603f315daf7b
Temp Sensor with uOLED96-g1 & GSM support
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| feabhas | 0:03ec282c2908 | 1 | #include "mbed.h" | 
| Renato | 1:b2ea1e9d90df | 2 | #include "stdint.h" | 
| feabhas | 0:03ec282c2908 | 3 | #include "DS18B20.h" | 
| Renato | 1:b2ea1e9d90df | 4 | #include "OLED160G1.h" | 
| Renato | 1:b2ea1e9d90df | 5 | #include "uOLED.h" | 
| feabhas | 0:03ec282c2908 | 6 | |
| Renato | 1:b2ea1e9d90df | 7 | |
| Renato | 1:b2ea1e9d90df | 8 | DigitalInOut sensor(p23); // sensor connected to pin 23 | 
| Renato | 1:b2ea1e9d90df | 9 | |
| Renato | 1:b2ea1e9d90df | 10 | OLED160G1 oled(p9, p10, p8); | 
| Renato | 2:fe0f893513d4 | 11 | //uOLED uoled(p9, p10, p8); | 
| Renato | 2:fe0f893513d4 | 12 | |
| Renato | 2:fe0f893513d4 | 13 | Serial GSM(p13, p14); | 
| feabhas | 0:03ec282c2908 | 14 | |
| feabhas | 0:03ec282c2908 | 15 | Ticker timer; // used for our microsec timing | 
| Renato | 2:fe0f893513d4 | 16 | //Serial pc(USBTX, USBRX); // serial comms over usb back to console | 
| Renato | 1:b2ea1e9d90df | 17 | float temp=0; | 
| Renato | 2:fe0f893513d4 | 18 | void FlushGSM(void) { char char1 = 0; while (GSM.readable()) { char1 = GSM.getc(); } return; } | 
| Renato | 2:fe0f893513d4 | 19 | bool Flag = false; | 
| Renato | 2:fe0f893513d4 | 20 | unsigned char i = 0; | 
| Renato | 2:fe0f893513d4 | 21 | unsigned char j = 0; | 
| Renato | 2:fe0f893513d4 | 22 | char r[]=""; | 
| Renato | 2:fe0f893513d4 | 23 | char NumTel[] = "937831063"; | 
| Renato | 2:fe0f893513d4 | 24 | unsigned char CtrlZ = 0x1A; | 
| feabhas | 0:03ec282c2908 | 25 | |
| feabhas | 0:03ec282c2908 | 26 | int main() { | 
| Renato | 1:b2ea1e9d90df | 27 | |
| Renato | 2:fe0f893513d4 | 28 | |
| Renato | 2:fe0f893513d4 | 29 | GSM.baud(9600); | 
| Renato | 2:fe0f893513d4 | 30 | GSM.format(8,Serial::None,1); | 
| Renato | 2:fe0f893513d4 | 31 | |
| Renato | 2:fe0f893513d4 | 32 | oled.init(); | 
| Renato | 1:b2ea1e9d90df | 33 | oled.eraseScreen(); | 
| Renato | 1:b2ea1e9d90df | 34 | oled.setTextBackgroundType(OLED_SET_TEXT_OPAQUE); | 
| Renato | 1:b2ea1e9d90df | 35 | oled.setFontSize(0); | 
| Renato | 2:fe0f893513d4 | 36 | //uOLED initialization... | 
| Renato | 2:fe0f893513d4 | 37 | //uoled.init(); | 
| Renato | 1:b2ea1e9d90df | 38 | |
| Renato | 1:b2ea1e9d90df | 39 | |
| Renato | 1:b2ea1e9d90df | 40 | //oled.printf("===========\n"); | 
| Renato | 1:b2ea1e9d90df | 41 | //oled.printf("DS18B20 Config\n"); | 
| feabhas | 0:03ec282c2908 | 42 | sensor.mode(PullUp); | 
| feabhas | 0:03ec282c2908 | 43 | |
| feabhas | 0:03ec282c2908 | 44 | ROM_Code_t ROM_Code = ReadROM(); | 
| Renato | 1:b2ea1e9d90df | 45 | /*oled.printf("Family code: 0x%X\n", ROM_Code.BYTES.familyCode); | 
| Renato | 1:b2ea1e9d90df | 46 | oled.printf("Serial Number: \n"); | 
| feabhas | 0:03ec282c2908 | 47 | for (uint32_t i = 6; i != 0; --i) { | 
| Renato | 1:b2ea1e9d90df | 48 | oled.printf("%02X%s", ROM_Code.BYTES.serialNo[i-1], (i != 1)?":":"\n"); | 
| feabhas | 0:03ec282c2908 | 49 | } | 
| Renato | 1:b2ea1e9d90df | 50 | oled.printf("CRC: 0x%X\n", ROM_Code.BYTES.CRC); | 
| Renato | 1:b2ea1e9d90df | 51 | */ | 
| Renato | 1:b2ea1e9d90df | 52 | oled.locate(0,1); | 
| Renato | 2:fe0f893513d4 | 53 | oled.printf("Convertendo...\n"); | 
| Renato | 1:b2ea1e9d90df | 54 | //uoled.drawText(1, 3, 3, 200, 100, 40, "Convertendo...\n"); | 
| feabhas | 0:03ec282c2908 | 55 | while (1) { | 
| Renato | 1:b2ea1e9d90df | 56 | showTemperature(&temp); | 
| Renato | 1:b2ea1e9d90df | 57 | oled.locate(2,3); | 
| Renato | 1:b2ea1e9d90df | 58 | oled.setFontSize(2); | 
| Renato | 1:b2ea1e9d90df | 59 | oled.printf("%.2f C",temp); | 
| feabhas | 0:03ec282c2908 | 60 | wait(10); | 
| Renato | 2:fe0f893513d4 | 61 | |
| Renato | 2:fe0f893513d4 | 62 | GSM.printf("AT+CMGF=1"); | 
| Renato | 2:fe0f893513d4 | 63 | FlushGSM(); | 
| Renato | 2:fe0f893513d4 | 64 | |
| Renato | 2:fe0f893513d4 | 65 | GSM.printf("AT+CMGS=%s",NumTel); | 
| Renato | 2:fe0f893513d4 | 66 | |
| Renato | 2:fe0f893513d4 | 67 | while(GSM.readable()) | 
| Renato | 2:fe0f893513d4 | 68 | { | 
| Renato | 2:fe0f893513d4 | 69 | if(GSM.getc()=='>') | 
| Renato | 2:fe0f893513d4 | 70 | { | 
| Renato | 2:fe0f893513d4 | 71 | Flag = true; | 
| Renato | 2:fe0f893513d4 | 72 | } | 
| Renato | 2:fe0f893513d4 | 73 | } | 
| Renato | 2:fe0f893513d4 | 74 | if(Flag==true) | 
| Renato | 2:fe0f893513d4 | 75 | { | 
| Renato | 2:fe0f893513d4 | 76 | |
| Renato | 2:fe0f893513d4 | 77 | GSM.printf("%.2f C",temp); | 
| Renato | 2:fe0f893513d4 | 78 | |
| Renato | 2:fe0f893513d4 | 79 | GSM.printf("%c",CtrlZ); | 
| Renato | 2:fe0f893513d4 | 80 | |
| Renato | 2:fe0f893513d4 | 81 | while(!GSM.readable()){;} | 
| Renato | 2:fe0f893513d4 | 82 | i=0; | 
| Renato | 2:fe0f893513d4 | 83 | while(GSM.readable()) | 
| Renato | 2:fe0f893513d4 | 84 | { | 
| Renato | 2:fe0f893513d4 | 85 | r[i]=GSM.getc(); | 
| Renato | 2:fe0f893513d4 | 86 | i++; | 
| Renato | 2:fe0f893513d4 | 87 | } | 
| Renato | 2:fe0f893513d4 | 88 | |
| Renato | 2:fe0f893513d4 | 89 | } | 
| Renato | 2:fe0f893513d4 | 90 | else | 
| Renato | 2:fe0f893513d4 | 91 | { | 
| Renato | 2:fe0f893513d4 | 92 | oled.setFontSize(0); | 
| Renato | 2:fe0f893513d4 | 93 | oled.printf("\n\n\nTerminal error !!!"); | 
| Renato | 2:fe0f893513d4 | 94 | return 0; | 
| Renato | 2:fe0f893513d4 | 95 | } | 
| Renato | 2:fe0f893513d4 | 96 | |
| feabhas | 0:03ec282c2908 | 97 | } | 
| feabhas | 0:03ec282c2908 | 98 | } | 
| feabhas | 0:03ec282c2908 | 99 | 
