Bubble display example using NXP PCAL9555A GPIO expander

Dependencies:   mbed-dev

Fork of PCAL9555_Hello by InetrfaceProducts NXP

Committer:
MACRUM
Date:
Wed Feb 22 00:56:52 2017 +0000
Revision:
4:0f3b252fb13f
Parent:
3:f74f521b2e46
Code clean-up

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 1:15df36975a85 1 #include "mbed.h"
MACRUM 2:ae0b95d42407 2
MACRUM 4:0f3b252fb13f 3 #if defined(TARGET_LPC812)
MACRUM 4:0f3b252fb13f 4 I2C gpio_exp(P0_10, P0_11);
MACRUM 4:0f3b252fb13f 5 #elif defined(TARGET_LPC810)
MACRUM 4:0f3b252fb13f 6 I2C gpio_exp(dp2, dp3);
MACRUM 4:0f3b252fb13f 7 #else
MACRUM 4:0f3b252fb13f 8 I2C gpio_exp(SDA, SCL);
MACRUM 2:ae0b95d42407 9 #endif
MACRUM 2:ae0b95d42407 10
MACRUM 4:0f3b252fb13f 11 Ticker tick;
MACRUM 3:f74f521b2e46 12 static int _seg;
MACRUM 2:ae0b95d42407 13 static int _chrs[4];
MACRUM 2:ae0b95d42407 14
MACRUM 2:ae0b95d42407 15 const char dispTabl[] = {
MACRUM 2:ae0b95d42407 16 0x7E, // 0
MACRUM 2:ae0b95d42407 17 0x30, // 1
MACRUM 2:ae0b95d42407 18 0x6D, // 2
MACRUM 2:ae0b95d42407 19 0x79, // 3
MACRUM 2:ae0b95d42407 20 0x33, // 4
MACRUM 2:ae0b95d42407 21 0x5B, // 5
MACRUM 2:ae0b95d42407 22 0x5F, // 6
MACRUM 2:ae0b95d42407 23 0x70, // 7
MACRUM 2:ae0b95d42407 24 0x7F, // 8
MACRUM 2:ae0b95d42407 25 0x7B, // 9
MACRUM 2:ae0b95d42407 26 };
MACRUM 2:ae0b95d42407 27
MACRUM 2:ae0b95d42407 28 void update()
MACRUM 2:ae0b95d42407 29 {
MACRUM 2:ae0b95d42407 30 int port_0;
MACRUM 2:ae0b95d42407 31 int _data;
MACRUM 4:0f3b252fb13f 32
MACRUM 2:ae0b95d42407 33 _data = (dispTabl[_chrs[_seg]]);
nxp_ip 0:26310705044b 34
MACRUM 2:ae0b95d42407 35 switch(_seg) {
MACRUM 2:ae0b95d42407 36 case 0:
MACRUM 2:ae0b95d42407 37 port_0 = 0x70;
MACRUM 2:ae0b95d42407 38 _seg = 1;
MACRUM 2:ae0b95d42407 39 break;
MACRUM 2:ae0b95d42407 40 case 1:
MACRUM 2:ae0b95d42407 41 port_0 = 0xb0;
MACRUM 2:ae0b95d42407 42 _seg = 2;
MACRUM 2:ae0b95d42407 43 break;
MACRUM 2:ae0b95d42407 44 case 2:
MACRUM 2:ae0b95d42407 45 port_0 = 0xd0;
MACRUM 2:ae0b95d42407 46 _seg = 3;
MACRUM 2:ae0b95d42407 47 break;
MACRUM 2:ae0b95d42407 48 case 3:
MACRUM 2:ae0b95d42407 49 port_0 = 0xe0;
MACRUM 2:ae0b95d42407 50 _seg = 0;
MACRUM 2:ae0b95d42407 51 break;
MACRUM 3:f74f521b2e46 52 }
MACRUM 2:ae0b95d42407 53
MACRUM 2:ae0b95d42407 54 char buf[3];
MACRUM 4:0f3b252fb13f 55 buf[0] = 2; // OUTPUT
MACRUM 4:0f3b252fb13f 56 buf[1] = port_0; // Port 0
MACRUM 4:0f3b252fb13f 57 buf[2] = _data; // Port 1
MACRUM 2:ae0b95d42407 58 gpio_exp.write(0x40, buf, 3);
MACRUM 2:ae0b95d42407 59 }
MACRUM 2:ae0b95d42407 60
MACRUM 2:ae0b95d42407 61 void write_number(int num)
MACRUM 2:ae0b95d42407 62 {
MACRUM 2:ae0b95d42407 63 num %= 10000;
MACRUM 2:ae0b95d42407 64 _chrs[0] = (num/1000);
MACRUM 2:ae0b95d42407 65 _chrs[1] = ((num/100)%10);
MACRUM 2:ae0b95d42407 66 _chrs[2] = (((num/10)%100)%10);
MACRUM 2:ae0b95d42407 67 _chrs[3] = (((num%1000)%100)%10);
MACRUM 2:ae0b95d42407 68 }
MACRUM 2:ae0b95d42407 69
MACRUM 2:ae0b95d42407 70 int main()
MACRUM 2:ae0b95d42407 71 {
MACRUM 3:f74f521b2e46 72 _seg = 0;
MACRUM 4:0f3b252fb13f 73
MACRUM 2:ae0b95d42407 74 char buf[3];
MACRUM 2:ae0b95d42407 75 buf[0] = 0x06; // CONFIG
MACRUM 2:ae0b95d42407 76 buf[1] = 0; // output
MACRUM 2:ae0b95d42407 77 buf[2] = 0; // output
MACRUM 2:ae0b95d42407 78 gpio_exp.write(0x40, buf, 3);
MACRUM 4:0f3b252fb13f 79 wait(0.5);
MACRUM 2:ae0b95d42407 80
MACRUM 4:0f3b252fb13f 81 tick.attach(&update, 0.01); // 10 msec
MACRUM 2:ae0b95d42407 82
MACRUM 2:ae0b95d42407 83 int cnt = 0;
MACRUM 2:ae0b95d42407 84 while(1) {
MACRUM 2:ae0b95d42407 85 write_number(cnt++);
MACRUM 4:0f3b252fb13f 86 wait(0.1); // 100ms
nxp_ip 0:26310705044b 87 }
nxp_ip 0:26310705044b 88 }
MACRUM 2:ae0b95d42407 89
MACRUM 2:ae0b95d42407 90 void error(const char* format, ...) {
MACRUM 2:ae0b95d42407 91 }