Code for driving 9x OLED displays and reding from an HX711 load cell aplifier.

Dependencies:   Adafruit_GFX SPI_TFT_ILI9341 TFT_fonts hx711 mbed

Committer:
jimconner
Date:
Fri Jan 30 00:01:26 2015 +0000
Revision:
0:3745349c0c83
Child:
1:c09b25119427
Added single pin mux support for a CD4067 (will add more pins later)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jimconner 0:3745349c0c83 1 /*
jimconner 0:3745349c0c83 2 * Copyright (c) 2012 Neal Horman - http://www.wanlink.com
jimconner 0:3745349c0c83 3 *
jimconner 0:3745349c0c83 4 * License: MIT open source (http://opensource.org/licenses/MIT)
jimconner 0:3745349c0c83 5 * Summary;
jimconner 0:3745349c0c83 6 * Use / modify / distribute / publish it how you want and
jimconner 0:3745349c0c83 7 * if you use it, or don't, you can't hold me liable for how
jimconner 0:3745349c0c83 8 * it does or doesn't work.
jimconner 0:3745349c0c83 9 * If it doesn't work how you want, don't use it, or change
jimconner 0:3745349c0c83 10 * it so that it does work.
jimconner 0:3745349c0c83 11 */
jimconner 0:3745349c0c83 12
jimconner 0:3745349c0c83 13 #include "mbed.h"
jimconner 0:3745349c0c83 14 #include "Adafruit_SSD1306.h"
jimconner 0:3745349c0c83 15 #include "Adafruit_GFX.h"
jimconner 0:3745349c0c83 16 #include "PinNames.h"
jimconner 0:3745349c0c83 17
jimconner 0:3745349c0c83 18 PwmOut led1(LED1);
jimconner 0:3745349c0c83 19 PwmOut led2(LED2);
jimconner 0:3745349c0c83 20
jimconner 0:3745349c0c83 21
jimconner 0:3745349c0c83 22 // an SPI sub-class that provides a constructed default
jimconner 0:3745349c0c83 23 class SPIPreInit : public SPI
jimconner 0:3745349c0c83 24 {
jimconner 0:3745349c0c83 25 public:
jimconner 0:3745349c0c83 26 SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
jimconner 0:3745349c0c83 27 {
jimconner 0:3745349c0c83 28 format(8,3);
jimconner 0:3745349c0c83 29 frequency(2000000);
jimconner 0:3745349c0c83 30 };
jimconner 0:3745349c0c83 31 };
jimconner 0:3745349c0c83 32
jimconner 0:3745349c0c83 33 // an I2C sub-class that provides a constructed default
jimconner 0:3745349c0c83 34 class I2CPreInit : public I2C
jimconner 0:3745349c0c83 35 {
jimconner 0:3745349c0c83 36 public:
jimconner 0:3745349c0c83 37 I2CPreInit(PinName PTE0, PinName PTE1) : I2C(PTE0, PTE1)
jimconner 0:3745349c0c83 38 {
jimconner 0:3745349c0c83 39 frequency(800000);
jimconner 0:3745349c0c83 40 start();
jimconner 0:3745349c0c83 41 wait(0.1); // needed so that the displays initialise properly at power-on.
jimconner 0:3745349c0c83 42 };
jimconner 0:3745349c0c83 43 };
jimconner 0:3745349c0c83 44
jimconner 0:3745349c0c83 45 //SPIPreInit gSpi(p5,NC,p7);
jimconner 0:3745349c0c83 46 //Adafruit_SSD1306_Spi gOled1(gSpi,p26,p25,p24);
jimconner 0:3745349c0c83 47
jimconner 0:3745349c0c83 48 I2CPreInit gI2C(PTE0,PTE1);
jimconner 0:3745349c0c83 49 mux_SSD1306_I2c gOled1(gI2C,PTD1,PTB0, 0, 0x78,64);
jimconner 0:3745349c0c83 50 mux_SSD1306_I2c gOled2(gI2C,PTD1,PTB0, 0, 0x7A,64);
jimconner 0:3745349c0c83 51 mux_SSD1306_I2c gOled3(gI2C,PTD1,PTB0, 1, 0x78,64);
jimconner 0:3745349c0c83 52 mux_SSD1306_I2c gOled4(gI2C,PTD1,PTB0, 1, 0x7A,64);
jimconner 0:3745349c0c83 53
jimconner 0:3745349c0c83 54 void testdrawline() {
jimconner 0:3745349c0c83 55 for (int16_t i=0; i<gOled1.width(); i+=4) {
jimconner 0:3745349c0c83 56 gOled1.drawLine(0, 0, i, gOled1.height()-1, WHITE);
jimconner 0:3745349c0c83 57 gOled1.display();
jimconner 0:3745349c0c83 58 }
jimconner 0:3745349c0c83 59 for (int16_t i=0; i<gOled2.height(); i+=4) {
jimconner 0:3745349c0c83 60 gOled2.drawLine(0, 0, gOled2.width()-1, i, WHITE);
jimconner 0:3745349c0c83 61 gOled2.display();
jimconner 0:3745349c0c83 62 }
jimconner 0:3745349c0c83 63 for (int16_t i=0; i<gOled3.height(); i+=4) {
jimconner 0:3745349c0c83 64 gOled3.drawLine(0, 0, gOled3.width()-1, i, WHITE);
jimconner 0:3745349c0c83 65 gOled3.display();
jimconner 0:3745349c0c83 66 }
jimconner 0:3745349c0c83 67 for (int16_t i=0; i<gOled4.width(); i+=4) {
jimconner 0:3745349c0c83 68 gOled4.drawLine(0, 0, i, gOled4.height()-1, WHITE);
jimconner 0:3745349c0c83 69 gOled4.display();
jimconner 0:3745349c0c83 70 }
jimconner 0:3745349c0c83 71
jimconner 0:3745349c0c83 72 }
jimconner 0:3745349c0c83 73
jimconner 0:3745349c0c83 74
jimconner 0:3745349c0c83 75
jimconner 0:3745349c0c83 76 int main()
jimconner 0:3745349c0c83 77 { uint16_t x=0;
jimconner 0:3745349c0c83 78 uint16_t y=65535;
jimconner 0:3745349c0c83 79 uint16_t a=16348;
jimconner 0:3745349c0c83 80 uint16_t b=49152;
jimconner 0:3745349c0c83 81 led1=1;
jimconner 0:3745349c0c83 82 led2=1;
jimconner 0:3745349c0c83 83
jimconner 0:3745349c0c83 84
jimconner 0:3745349c0c83 85 gOled1.clearDisplay();
jimconner 0:3745349c0c83 86 gOled2.clearDisplay();
jimconner 0:3745349c0c83 87 gOled3.clearDisplay();
jimconner 0:3745349c0c83 88 gOled4.clearDisplay();
jimconner 0:3745349c0c83 89
jimconner 0:3745349c0c83 90 testdrawline();
jimconner 0:3745349c0c83 91
jimconner 0:3745349c0c83 92 gOled1.clearDisplay();
jimconner 0:3745349c0c83 93 gOled2.clearDisplay();
jimconner 0:3745349c0c83 94 gOled3.clearDisplay();
jimconner 0:3745349c0c83 95 gOled4.clearDisplay();
jimconner 0:3745349c0c83 96
jimconner 0:3745349c0c83 97 gOled1.printf(" Counting Up \r\n\n\n\n", gOled1.width(), gOled1.height());
jimconner 0:3745349c0c83 98 gOled2.printf(" Counting Down \r\n\n\n\n", gOled2.width(), gOled2.height());
jimconner 0:3745349c0c83 99 gOled3.printf(" More going up \r\n\n\n\n", gOled3.width(), gOled3.height());
jimconner 0:3745349c0c83 100 gOled4.printf(" More going down \r\n\n\n\n", gOled4.width(), gOled4.height());
jimconner 0:3745349c0c83 101 gOled1.setTextSize(2);
jimconner 0:3745349c0c83 102 gOled2.setTextSize(2);
jimconner 0:3745349c0c83 103 gOled3.setTextSize(2);
jimconner 0:3745349c0c83 104 gOled4.setTextSize(2);
jimconner 0:3745349c0c83 105
jimconner 0:3745349c0c83 106
jimconner 0:3745349c0c83 107 while(1)
jimconner 0:3745349c0c83 108 {
jimconner 0:3745349c0c83 109 led1 = 0.98;
jimconner 0:3745349c0c83 110 gOled1.printf(" %uml\r",x);
jimconner 0:3745349c0c83 111 gOled1.display();
jimconner 0:3745349c0c83 112 led1 = 1;
jimconner 0:3745349c0c83 113 led2 = 0.98;
jimconner 0:3745349c0c83 114 gOled2.printf(" %uml\r",y);
jimconner 0:3745349c0c83 115 gOled2.display();
jimconner 0:3745349c0c83 116 gOled3.printf(" %uK\r",a);
jimconner 0:3745349c0c83 117 gOled3.display();
jimconner 0:3745349c0c83 118 gOled4.printf(" %uK\r",b);
jimconner 0:3745349c0c83 119 gOled4.display();
jimconner 0:3745349c0c83 120 led2 = 1;
jimconner 0:3745349c0c83 121 x++;
jimconner 0:3745349c0c83 122 y--;
jimconner 0:3745349c0c83 123 a++;
jimconner 0:3745349c0c83 124 b--;
jimconner 0:3745349c0c83 125 //wait(0.1);
jimconner 0:3745349c0c83 126 }
jimconner 0:3745349c0c83 127 }