Bubble display example using NXP PCAL9555A GPIO expander

Dependencies:   mbed-dev

Fork of PCAL9555_Hello by InetrfaceProducts NXP

Committer:
MACRUM
Date:
Sat Feb 18 12:54:01 2017 +0000
Revision:
2:ae0b95d42407
Parent:
1:15df36975a85
Child:
3:f74f521b2e46
Initial commit

Who changed what in which revision?

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