Bubble display example using NXP PCAL9555A GPIO expander

Dependencies:   mbed-dev

Fork of PCAL9555_Hello by InetrfaceProducts NXP

Committer:
MACRUM
Date:
Sat Feb 18 15:37:34 2017 +0000
Revision:
3:f74f521b2e46
Parent:
2:ae0b95d42407
Child:
4:0f3b252fb13f
Bubble display example using I2C expander

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 3:f74f521b2e46 1 #pragma Ospace
MACRUM 3:f74f521b2e46 2
nxp_ip 1:15df36975a85 3 #include "mbed.h"
MACRUM 2:ae0b95d42407 4
MACRUM 2:ae0b95d42407 5 #if 1
MACRUM 2:ae0b95d42407 6
MACRUM 2:ae0b95d42407 7 #ifdef USE_LIB
nxp_ip 1:15df36975a85 8 #include "PCAL9555.h"
MACRUM 2:ae0b95d42407 9 #endif
MACRUM 2:ae0b95d42407 10
MACRUM 2:ae0b95d42407 11 #if defined(TARGET_LPC81X)
MACRUM 2:ae0b95d42407 12 //PCAL9555 gpio_exp(P0_10, P0_11);
MACRUM 3:f74f521b2e46 13 I2C gpio_exp(dp4, dp3);
MACRUM 2:ae0b95d42407 14 #else
MACRUM 2:ae0b95d42407 15 //PCAL9555 gpio_exp(SDA, SCL);
MACRUM 2:ae0b95d42407 16 I2C gpio_exp(SDA, SCL);
MACRUM 2:ae0b95d42407 17 #endif
MACRUM 2:ae0b95d42407 18
MACRUM 2:ae0b95d42407 19 //Serial pc(USBTX, USBRX);
MACRUM 2:ae0b95d42407 20 Ticker tick;
MACRUM 2:ae0b95d42407 21
MACRUM 3:f74f521b2e46 22 static int _seg;
MACRUM 2:ae0b95d42407 23 static int _chrs[4];
MACRUM 2:ae0b95d42407 24
MACRUM 2:ae0b95d42407 25 const char dispTabl[] = {
MACRUM 2:ae0b95d42407 26 0x7E, // 0
MACRUM 2:ae0b95d42407 27 0x30, // 1
MACRUM 2:ae0b95d42407 28 0x6D, // 2
MACRUM 2:ae0b95d42407 29 0x79, // 3
MACRUM 2:ae0b95d42407 30 0x33, // 4
MACRUM 2:ae0b95d42407 31 0x5B, // 5
MACRUM 2:ae0b95d42407 32 0x5F, // 6
MACRUM 2:ae0b95d42407 33 0x70, // 7
MACRUM 2:ae0b95d42407 34 0x7F, // 8
MACRUM 2:ae0b95d42407 35 0x7B, // 9
MACRUM 2:ae0b95d42407 36 };
MACRUM 2:ae0b95d42407 37
MACRUM 2:ae0b95d42407 38 void update()
MACRUM 2:ae0b95d42407 39 {
MACRUM 2:ae0b95d42407 40 int port_0;
MACRUM 2:ae0b95d42407 41 int _data;
MACRUM 2:ae0b95d42407 42
MACRUM 2:ae0b95d42407 43 _data = (dispTabl[_chrs[_seg]]);
nxp_ip 0:26310705044b 44
MACRUM 2:ae0b95d42407 45 switch(_seg) {
MACRUM 2:ae0b95d42407 46 case 0:
MACRUM 2:ae0b95d42407 47 port_0 = 0x70;
MACRUM 2:ae0b95d42407 48 _seg = 1;
MACRUM 2:ae0b95d42407 49 break;
MACRUM 2:ae0b95d42407 50 case 1:
MACRUM 2:ae0b95d42407 51 port_0 = 0xb0;
MACRUM 2:ae0b95d42407 52 _seg = 2;
MACRUM 2:ae0b95d42407 53 break;
MACRUM 2:ae0b95d42407 54 case 2:
MACRUM 2:ae0b95d42407 55 port_0 = 0xd0;
MACRUM 2:ae0b95d42407 56 _seg = 3;
MACRUM 2:ae0b95d42407 57 break;
MACRUM 2:ae0b95d42407 58 case 3:
MACRUM 2:ae0b95d42407 59 port_0 = 0xe0;
MACRUM 2:ae0b95d42407 60 _seg = 0;
MACRUM 2:ae0b95d42407 61 break;
MACRUM 3:f74f521b2e46 62 }
MACRUM 2:ae0b95d42407 63
MACRUM 2:ae0b95d42407 64 #ifdef USE_LIB
MACRUM 2:ae0b95d42407 65 gpio_exp.write( (_data << 8) | port_0 );
MACRUM 2:ae0b95d42407 66 #else
MACRUM 2:ae0b95d42407 67 char buf[3];
MACRUM 2:ae0b95d42407 68 buf[0] = 2; // OUTPUT
MACRUM 2:ae0b95d42407 69 buf[1] = port_0;
MACRUM 2:ae0b95d42407 70 buf[2] = _data; // output
MACRUM 2:ae0b95d42407 71 gpio_exp.write(0x40, buf, 3);
MACRUM 2:ae0b95d42407 72 #endif
MACRUM 2:ae0b95d42407 73 }
MACRUM 2:ae0b95d42407 74
MACRUM 2:ae0b95d42407 75 void write_number(int num)
MACRUM 2:ae0b95d42407 76 {
MACRUM 2:ae0b95d42407 77 num %= 10000;
MACRUM 2:ae0b95d42407 78 _chrs[0] = (num/1000);
MACRUM 2:ae0b95d42407 79 _chrs[1] = ((num/100)%10);
MACRUM 2:ae0b95d42407 80 _chrs[2] = (((num/10)%100)%10);
MACRUM 2:ae0b95d42407 81 _chrs[3] = (((num%1000)%100)%10);
MACRUM 2:ae0b95d42407 82 }
MACRUM 2:ae0b95d42407 83
MACRUM 2:ae0b95d42407 84 int main()
MACRUM 2:ae0b95d42407 85 {
MACRUM 3:f74f521b2e46 86 _seg = 0;
MACRUM 3:f74f521b2e46 87
MACRUM 2:ae0b95d42407 88 #ifdef USE_LIB
MACRUM 3:f74f521b2e46 89 gpio_exp.configure(0x0000); // Set all pins: output
MACRUM 2:ae0b95d42407 90 #else
MACRUM 2:ae0b95d42407 91 char buf[3];
MACRUM 2:ae0b95d42407 92 buf[0] = 0x06; // CONFIG
MACRUM 2:ae0b95d42407 93 buf[1] = 0; // output
MACRUM 2:ae0b95d42407 94 buf[2] = 0; // output
MACRUM 2:ae0b95d42407 95 gpio_exp.write(0x40, buf, 3);
MACRUM 2:ae0b95d42407 96 #endif
MACRUM 2:ae0b95d42407 97
MACRUM 2:ae0b95d42407 98 tick.attach(&update, 0.005); // 5msec
MACRUM 2:ae0b95d42407 99
MACRUM 2:ae0b95d42407 100 //pc.printf("PCAL9555 test program\n");
MACRUM 2:ae0b95d42407 101
MACRUM 2:ae0b95d42407 102 int cnt = 0;
MACRUM 2:ae0b95d42407 103 while(1) {
MACRUM 2:ae0b95d42407 104 write_number(cnt++);
MACRUM 2:ae0b95d42407 105 wait(0.1);
nxp_ip 0:26310705044b 106 }
nxp_ip 0:26310705044b 107 }
MACRUM 2:ae0b95d42407 108
MACRUM 2:ae0b95d42407 109 void error(const char* format, ...) {
MACRUM 2:ae0b95d42407 110 }
MACRUM 2:ae0b95d42407 111
MACRUM 2:ae0b95d42407 112 #else
MACRUM 2:ae0b95d42407 113
MACRUM 2:ae0b95d42407 114 DigitalOut led(LED1);
MACRUM 2:ae0b95d42407 115
MACRUM 2:ae0b95d42407 116 int main()
MACRUM 2:ae0b95d42407 117 {
MACRUM 2:ae0b95d42407 118 printf("hello\n");
MACRUM 2:ae0b95d42407 119
MACRUM 2:ae0b95d42407 120 while(1) {
MACRUM 2:ae0b95d42407 121 led = !led;
MACRUM 2:ae0b95d42407 122 wait(0.3);
MACRUM 2:ae0b95d42407 123 }
MACRUM 2:ae0b95d42407 124 }
MACRUM 2:ae0b95d42407 125
MACRUM 2:ae0b95d42407 126 #endif