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:
Thu Feb 26 11:30:54 2015 +0000
Revision:
2:c5f60c130f9a
Parent:
1:c09b25119427
Child:
3:6dcf74b20bed
Known good version for KL25Z board... Committing this before I start making changes.

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 2:c5f60c130f9a 18 DigitalOut led1(LED1);
jimconner 2:c5f60c130f9a 19 DigitalOut led2(LED2);
jimconner 0:3745349c0c83 20
jimconner 1:c09b25119427 21 #define MUX_MASK 0x0000000F
jimconner 1:c09b25119427 22 PortOut MuxPortOut(PortB, MUX_MASK);
jimconner 0:3745349c0c83 23
jimconner 0:3745349c0c83 24 // an SPI sub-class that provides a constructed default
jimconner 0:3745349c0c83 25 class SPIPreInit : public SPI
jimconner 0:3745349c0c83 26 {
jimconner 0:3745349c0c83 27 public:
jimconner 0:3745349c0c83 28 SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
jimconner 0:3745349c0c83 29 {
jimconner 0:3745349c0c83 30 format(8,3);
jimconner 0:3745349c0c83 31 frequency(2000000);
jimconner 0:3745349c0c83 32 };
jimconner 0:3745349c0c83 33 };
jimconner 0:3745349c0c83 34
jimconner 0:3745349c0c83 35 // an I2C sub-class that provides a constructed default
jimconner 0:3745349c0c83 36 class I2CPreInit : public I2C
jimconner 0:3745349c0c83 37 {
jimconner 0:3745349c0c83 38 public:
jimconner 0:3745349c0c83 39 I2CPreInit(PinName PTE0, PinName PTE1) : I2C(PTE0, PTE1)
jimconner 0:3745349c0c83 40 {
jimconner 0:3745349c0c83 41 frequency(800000);
jimconner 0:3745349c0c83 42 start();
jimconner 0:3745349c0c83 43 wait(0.1); // needed so that the displays initialise properly at power-on.
jimconner 0:3745349c0c83 44 };
jimconner 0:3745349c0c83 45 };
jimconner 0:3745349c0c83 46
jimconner 0:3745349c0c83 47 //SPIPreInit gSpi(p5,NC,p7);
jimconner 0:3745349c0c83 48 //Adafruit_SSD1306_Spi gOled1(gSpi,p26,p25,p24);
jimconner 0:3745349c0c83 49
jimconner 0:3745349c0c83 50 I2CPreInit gI2C(PTE0,PTE1);
jimconner 1:c09b25119427 51 //mux_SSD1306_I2c gOled1(gI2C,Reset_Pin,muxport, muxmask, 0, 0x78,64);
jimconner 1:c09b25119427 52
jimconner 1:c09b25119427 53 mux_SSD1306_I2c gOled1(gI2C,PTD1,MuxPortOut, 0, 0x78,64);
jimconner 1:c09b25119427 54 mux_SSD1306_I2c gOled2(gI2C,PTD1,MuxPortOut, 0, 0x7A,64);
jimconner 1:c09b25119427 55 mux_SSD1306_I2c gOled3(gI2C,PTD1,MuxPortOut, 1, 0x78,64);
jimconner 1:c09b25119427 56 //mux_SSD1306_I2c gOled4(gI2C,PTD1,MuxPortOut, 1, 0x7A,64);
jimconner 1:c09b25119427 57 mux_SSD1306_I2c gOled5(gI2C,PTD1,MuxPortOut, 2, 0x78,64);
jimconner 1:c09b25119427 58 mux_SSD1306_I2c gOled6(gI2C,PTD1,MuxPortOut, 2, 0x7A,64);
jimconner 2:c5f60c130f9a 59 mux_SSD1306_I2c gOled7(gI2C,PTD1,MuxPortOut, 3, 0x78,64);
jimconner 1:c09b25119427 60 mux_SSD1306_I2c gOled8(gI2C,PTD1,MuxPortOut, 3, 0x7A,64);
jimconner 2:c5f60c130f9a 61 //mux_SSD1306_I2c gOled9(gI2C,PTD1,MuxPortOut, 4, 0x78,64);
jimconner 1:c09b25119427 62
jimconner 1:c09b25119427 63
jimconner 1:c09b25119427 64
jimconner 0:3745349c0c83 65
jimconner 0:3745349c0c83 66 void testdrawline() {
jimconner 0:3745349c0c83 67 for (int16_t i=0; i<gOled1.width(); i+=4) {
jimconner 0:3745349c0c83 68 gOled1.drawLine(0, 0, i, gOled1.height()-1, WHITE);
jimconner 0:3745349c0c83 69 gOled1.display();
jimconner 0:3745349c0c83 70 }
jimconner 0:3745349c0c83 71 for (int16_t i=0; i<gOled2.height(); i+=4) {
jimconner 0:3745349c0c83 72 gOled2.drawLine(0, 0, gOled2.width()-1, i, WHITE);
jimconner 0:3745349c0c83 73 gOled2.display();
jimconner 0:3745349c0c83 74 }
jimconner 0:3745349c0c83 75 for (int16_t i=0; i<gOled3.height(); i+=4) {
jimconner 0:3745349c0c83 76 gOled3.drawLine(0, 0, gOled3.width()-1, i, WHITE);
jimconner 0:3745349c0c83 77 gOled3.display();
jimconner 0:3745349c0c83 78 }
jimconner 1:c09b25119427 79 // for (int16_t i=0; i<gOled4.width(); i+=4) {
jimconner 1:c09b25119427 80 // gOled4.drawLine(0, 0, i, gOled4.height()-1, WHITE);
jimconner 1:c09b25119427 81 // gOled4.display();
jimconner 1:c09b25119427 82 // }
jimconner 1:c09b25119427 83 for (int16_t i=0; i<gOled5.width(); i+=4) {
jimconner 1:c09b25119427 84 gOled5.drawLine(0, 0, i, gOled5.height()-1, WHITE);
jimconner 1:c09b25119427 85 gOled5.display();
jimconner 1:c09b25119427 86 }
jimconner 1:c09b25119427 87 for (int16_t i=0; i<gOled6.width(); i+=4) {
jimconner 1:c09b25119427 88 gOled6.drawLine(0, 0, i, gOled6.height()-1, WHITE);
jimconner 1:c09b25119427 89 gOled6.display();
jimconner 1:c09b25119427 90 }
jimconner 2:c5f60c130f9a 91 for (int16_t i=0; i<gOled7.width(); i+=4) {
jimconner 2:c5f60c130f9a 92 gOled7.drawLine(0, 0, i, gOled7.height()-1, WHITE);
jimconner 2:c5f60c130f9a 93 gOled7.display();
jimconner 2:c5f60c130f9a 94 }
jimconner 1:c09b25119427 95 for (int16_t i=0; i<gOled8.width(); i+=4) {
jimconner 1:c09b25119427 96 gOled8.drawLine(0, 0, i, gOled8.height()-1, WHITE);
jimconner 1:c09b25119427 97 gOled8.display();
jimconner 1:c09b25119427 98 }
jimconner 2:c5f60c130f9a 99 // for (int16_t i=0; i<gOled9.width(); i+=4) {
jimconner 2:c5f60c130f9a 100 // gOled9.drawLine(0, 0, i, gOled9.height()-1, WHITE);
jimconner 2:c5f60c130f9a 101 // gOled9.display();
jimconner 2:c5f60c130f9a 102 // }
jimconner 0:3745349c0c83 103
jimconner 0:3745349c0c83 104 }
jimconner 0:3745349c0c83 105
jimconner 0:3745349c0c83 106
jimconner 0:3745349c0c83 107
jimconner 0:3745349c0c83 108 int main()
jimconner 0:3745349c0c83 109 { uint16_t x=0;
jimconner 0:3745349c0c83 110 uint16_t y=65535;
jimconner 0:3745349c0c83 111 uint16_t a=16348;
jimconner 0:3745349c0c83 112 uint16_t b=49152;
jimconner 0:3745349c0c83 113 led1=1;
jimconner 0:3745349c0c83 114 led2=1;
jimconner 0:3745349c0c83 115
jimconner 0:3745349c0c83 116
jimconner 0:3745349c0c83 117 gOled1.clearDisplay();
jimconner 0:3745349c0c83 118 gOled2.clearDisplay();
jimconner 0:3745349c0c83 119 gOled3.clearDisplay();
jimconner 1:c09b25119427 120 // gOled4.clearDisplay();
jimconner 1:c09b25119427 121 gOled5.clearDisplay();
jimconner 1:c09b25119427 122 gOled6.clearDisplay();
jimconner 2:c5f60c130f9a 123 gOled7.clearDisplay();
jimconner 1:c09b25119427 124 gOled8.clearDisplay();
jimconner 2:c5f60c130f9a 125 // gOled9.clearDisplay();
jimconner 0:3745349c0c83 126
jimconner 0:3745349c0c83 127 testdrawline();
jimconner 0:3745349c0c83 128
jimconner 0:3745349c0c83 129 gOled1.clearDisplay();
jimconner 0:3745349c0c83 130 gOled2.clearDisplay();
jimconner 0:3745349c0c83 131 gOled3.clearDisplay();
jimconner 1:c09b25119427 132 // gOled4.clearDisplay();
jimconner 1:c09b25119427 133 gOled5.clearDisplay();
jimconner 1:c09b25119427 134 gOled6.clearDisplay();
jimconner 2:c5f60c130f9a 135 gOled7.clearDisplay();
jimconner 1:c09b25119427 136 gOled8.clearDisplay();
jimconner 2:c5f60c130f9a 137 // gOled9.clearDisplay();
jimconner 0:3745349c0c83 138
jimconner 1:c09b25119427 139 gOled1.printf(" Aqua Vega A \r\n\n\n\n", gOled1.width(), gOled1.height());
jimconner 1:c09b25119427 140 gOled2.printf(" Aqua Vega B \r\n\n\n\n", gOled2.width(), gOled2.height());
jimconner 1:c09b25119427 141 gOled3.printf(" Cannazyme \r\n\n\n\n", gOled3.width(), gOled3.height());
jimconner 1:c09b25119427 142 // gOled4.printf(" Rhizotonic \r\n\n\n\n", gOled4.width(), gOled4.height());
jimconner 1:c09b25119427 143 gOled5.printf(" Aqua Flores A \r\n\n\n\n", gOled5.width(), gOled5.height());
jimconner 1:c09b25119427 144 gOled6.printf(" Aqua Flores B \r\n\n\n\n", gOled6.width(), gOled6.height());
jimconner 2:c5f60c130f9a 145 gOled7.printf(" PK13/14 \r\n\n\n\n", gOled7.width(), gOled7.height());
jimconner 1:c09b25119427 146 gOled8.printf(" Cannaboost \r\n\n\n\n", gOled8.width(), gOled8.height());
jimconner 2:c5f60c130f9a 147 // gOled9.printf(" pH-Down \r\n\n\n\n", gOled9.width(), gOled9.height());
jimconner 0:3745349c0c83 148 gOled1.setTextSize(2);
jimconner 0:3745349c0c83 149 gOled2.setTextSize(2);
jimconner 0:3745349c0c83 150 gOled3.setTextSize(2);
jimconner 1:c09b25119427 151 gOled5.setTextSize(2);
jimconner 1:c09b25119427 152 gOled6.setTextSize(2);
jimconner 2:c5f60c130f9a 153 gOled7.setTextSize(2);
jimconner 1:c09b25119427 154 gOled8.setTextSize(2);
jimconner 0:3745349c0c83 155
jimconner 0:3745349c0c83 156
jimconner 0:3745349c0c83 157 while(1)
jimconner 0:3745349c0c83 158 {
jimconner 2:c5f60c130f9a 159 led1 = 0;
jimconner 0:3745349c0c83 160 gOled1.printf(" %uml\r",x);
jimconner 0:3745349c0c83 161 gOled1.display();
jimconner 1:c09b25119427 162 gOled6.printf(" %uml\r",x);
jimconner 1:c09b25119427 163 gOled6.display();
jimconner 1:c09b25119427 164
jimconner 0:3745349c0c83 165 led1 = 1;
jimconner 2:c5f60c130f9a 166 led2 = 0;
jimconner 0:3745349c0c83 167 gOled2.printf(" %uml\r",y);
jimconner 0:3745349c0c83 168 gOled2.display();
jimconner 2:c5f60c130f9a 169 gOled7.printf(" %uml\r",y);
jimconner 2:c5f60c130f9a 170 gOled7.display();
jimconner 1:c09b25119427 171 gOled3.printf(" %uml\r",a);
jimconner 0:3745349c0c83 172 gOled3.display();
jimconner 1:c09b25119427 173 gOled8.printf(" %uml\r",a);
jimconner 1:c09b25119427 174 gOled8.display();
jimconner 1:c09b25119427 175 gOled5.printf(" %uml\r",b);
jimconner 1:c09b25119427 176 gOled5.display();
jimconner 2:c5f60c130f9a 177 // gOled9.printf(" %uml\r",b);
jimconner 2:c5f60c130f9a 178 // gOled9.display();
jimconner 0:3745349c0c83 179 led2 = 1;
jimconner 0:3745349c0c83 180 x++;
jimconner 0:3745349c0c83 181 y--;
jimconner 0:3745349c0c83 182 a++;
jimconner 0:3745349c0c83 183 b--;
jimconner 0:3745349c0c83 184 //wait(0.1);
jimconner 0:3745349c0c83 185 }
jimconner 0:3745349c0c83 186 }