test code for hdc1080 humidity sensor

Dependencies:   hdc1080 mbed

Fork of Nucleo-F303K8-SSD1306_OLED by Joseph Ellsworth

Revision:
2:dc3e84d595c3
Parent:
1:90d213185462
Child:
3:47148198f5f2
--- a/main.cpp	Mon Mar 21 00:11:05 2016 +0000
+++ b/main.cpp	Mon Mar 21 03:42:56 2016 +0000
@@ -1,80 +1,87 @@
 /* Example of Reading all the ADC pins PIN and display ot OLED display using
- Nucleo_F303K8 by Joseph Ellsworth CTO A2WH -  Free for all but no warranty, no promises 
- Attempt to drive:  
+ Nucleo_F303K8 by Joseph Ellsworth CTO A2WH -  Free for all but no warranty, no promises
+ Displays voltage read from first 2 ADC lines on OLED display
+
+  Used to Drive:
    ebay part http://www.ebay.com/itm/152000005331?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
   0-96-I2C-IIC-SPI-Serial-White-OLED-LCD-LED-Display-Module-128X64
   The Datasheet.  https://www.adafruit.com/datasheets/SSD1306.pdf
-  
+
   Unfortunately this part never turns on using the SSD1308 library.
-  Not sure why and don't have time to finish tracking it down at this 
-  time. 
-  
+  but did find that the https://developer.mbed.org/users/nkhorman/code/Adafruit_GFX/
+  library works.  Unfortunately the Adafruit library doesn't include the scroll functionality.
+
   Using my I2C address scanner I found that it responds on Added 120 (x78) ,121 (x79)
-  and when the part was unsoldered nothing responded on 120 or 121. According to 
+  and when the part was unsoldered nothing responded on 120 or 121. According to
   to the page #19 (8.1.5) of the data sheet the I2C address should be 011110
-  which seems to map correctly to dec=120 hex=79 so I think the chip is responsive
-  and the library must be sending incorrect commands.
-  
+  which seems to map correctly to dec=120 hex=79
+
  */
 
 #include "mbed.h"
-#include "SSD1308.h"
+//#include "SSD1308.h"
+#include "Adafruit_SSD1306.h"
 
 //#include "mbed_logo.h"
- 
- //Pin Defines for I2C Bus
- #define D_SDA                  PB_7 // specific for Nucleo-F303K8
- #define D_SCL                  PB_6 // specific for Nucleo-F303K8
- I2C i2c(D_SDA, D_SCL);
- 
- // Host PC Communication channels
- Serial pc(USBTX, USBRX); // tx, rx
- 
- // Instantiate OLED
- //SSD1308 oled = SSD1308(i2c, SSD1308_SA0);
- SSD1308 oled = SSD1308(i2c, SSD1308_SA1);
- //SSD1308 oled = SSD1308(i2c, 120);
- 
-AnalogIn   pa0(PA_0); 
- 
+
+//Pin Defines for I2C Bus
+#define D_SDA                  PB_7 // specific for Nucleo-F303K8
+#define D_SCL                  PB_6 // specific for Nucleo-F303K8
+I2C i2c(D_SDA, D_SCL);
+
+// Host PC Communication channels
+Serial pc(USBTX, USBRX); // tx, rx
+
+AnalogIn   pa0(PA_0);
+AnalogIn   pa1(PA_1);
+
 DigitalOut myled(LED1);
 const float voltMeterARef = 3.3;
 
-char buff[100];
-float readPrint(AnalogIn ain, char *label) {
-  float tval = ain.read();
-  float volts = tval * voltMeterARef;
-  float perc = tval * 100.0;  
-  unsigned short  tvalu16 = ain.read_u16 ();
-
-  printf("adc %s R=%3.3f V=%3.3f%% U16=%u\r\n",label, tval, volts, tvalu16);
-  sprintf(buff, "V=%3.3f%",volts);
-  oled.printf(buff);
-  return tval;
-}
-    
+// an I2C sub-class that provides a constructed default
+class I2CPreInit : public I2C
+{
+public:
+    I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl) {
+        frequency(400000);
+        start();
+    };
+};
 
-int main() {
-    pc.printf("OLED test start\r");  
-    oled.writeString(0, 0, "Hello World !");
-    oled.printf("Hello World !");
-  
-    oled.fillDisplay(0xAA);
-    oled.setDisplayOff();
-    wait(1);   
-    oled.setDisplayOn();
-    oled.clearDisplay();
-    oled.setDisplayInverse();
-    wait(0.5);
-    oled.setDisplayNormal();                                         
-    //oled.writeBitmap((uint8_t*) mbed_logo);
-    pc.printf("OLED test done\r\n");  
-  
+
+I2CPreInit gI2C(D_SDA,D_SCL);
+Adafruit_SSD1306_I2c gOled2(gI2C,PB_5);
 
 
+float readPrint(AnalogIn ain, char *label)
+{
+    float tval = ain.read();
+    float volts = tval * voltMeterARef;
+    float perc = tval * 100.0;
+    unsigned short  tvalu16 = ain.read_u16 ();
+    printf("adc %s R=%3.3f V=%3.3f%% U16=%u\r\n",label, tval, volts, tvalu16);
+    gOled2.printf("%s=%3.3fV\r\n",label,volts);
+    gOled2.display();
+    return tval;
+}
+
+
+int main()
+{
+    // Display with the Adafruit Library
+    gOled2.printf("%ux%u OLED Display\r\n", gOled2.width(), gOled2.height());
+    wait(5);
+    gOled2.clearDisplay();
     while(1) {
-        myled = !myled; // toggle led 
-        readPrint(pa0, "PA_0");                
-        wait(7.0);        
+        myled = !myled;
+        gOled2.clearDisplay();
+        gOled2.setTextCursor(1,1);
+        readPrint(pa0, "PA_0");
+        wait(0.1);
+        gOled2.setTextCursor(1,10);
+        readPrint(pa1, "PA_1");
+        wait(3.0);
     }
+
+
 }