Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL mbed ConfigFile
Fork of 4DGLtest by
keyboard.cpp@8:dd258f9e24b0, 2014-07-09 (annotated)
- Committer:
- WillemBraat
- Date:
- Wed Jul 09 07:52:00 2014 +0000
- Revision:
- 8:dd258f9e24b0
- Parent:
- 7:779c5b8d3b14
- Child:
- 9:311b6676272d
Modification on BackGroundLighting procedure
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| WillemBraat | 3:f7bce78b04c1 | 1 | /* Keyboard chip TCA8418 control */ |
| WillemBraat | 3:f7bce78b04c1 | 2 | #include "mbed.h" |
| WillemBraat | 3:f7bce78b04c1 | 3 | #include "keyboard.h" |
| WillemBraat | 3:f7bce78b04c1 | 4 | |
| WillemBraat | 3:f7bce78b04c1 | 5 | extern int key_hit_ID; |
| WillemBraat | 3:f7bce78b04c1 | 6 | //extern mbos CDU_OS; |
| WillemBraat | 3:f7bce78b04c1 | 7 | |
| WillemBraat | 3:f7bce78b04c1 | 8 | //CDU Keyboard communications KEYBOARD_INT |
| WillemBraat | 3:f7bce78b04c1 | 9 | InterruptIn CDU_KB_INT( p5 ); //Set CDU keyboard interrupt line. |
| WillemBraat | 6:904d00252480 | 10 | I2C CDU_I2C(p28, p27); //I2C bus for keyboard/temp chip. |
| WillemBraat | 3:f7bce78b04c1 | 11 | |
| WillemBraat | 8:dd258f9e24b0 | 12 | //CDU Keyboard LEDS |
| WillemBraat | 3:f7bce78b04c1 | 13 | DigitalOut EXEC( p12 ); |
| WillemBraat | 3:f7bce78b04c1 | 14 | DigitalOut FAIL( p17 ); |
| WillemBraat | 3:f7bce78b04c1 | 15 | DigitalOut DSPY( p18 ); |
| WillemBraat | 3:f7bce78b04c1 | 16 | DigitalOut MSG( p19 ); |
| WillemBraat | 3:f7bce78b04c1 | 17 | DigitalOut OFST( p20 ); |
| WillemBraat | 3:f7bce78b04c1 | 18 | |
| WillemBraat | 3:f7bce78b04c1 | 19 | //CDU background lighting |
| WillemBraat | 6:904d00252480 | 20 | AnalogIn BGL_POT( p16 ); //background light control potmeter |
| WillemBraat | 7:779c5b8d3b14 | 21 | PwmOut BGL_LED( p21 ); //PWM output background lighting |
| WillemBraat | 3:f7bce78b04c1 | 22 | |
| WillemBraat | 3:f7bce78b04c1 | 23 | void CDU_KB_COMM_INIT() |
| WillemBraat | 3:f7bce78b04c1 | 24 | { //initialize communication with TCA84818 |
| WillemBraat | 6:904d00252480 | 25 | CDU_I2C.write(CDU_KB_WRITE); //initiate write cycle |
| WillemBraat | 3:f7bce78b04c1 | 26 | //intialize all registers from TCA8418 here |
| WillemBraat | 6:904d00252480 | 27 | CDU_I2C.read(CDU_KB_READ); //start reading from TCA4818 |
| WillemBraat | 3:f7bce78b04c1 | 28 | } |
| WillemBraat | 3:f7bce78b04c1 | 29 | |
| WillemBraat | 6:904d00252480 | 30 | void CDU_KB_GET_KEY() |
| WillemBraat | 3:f7bce78b04c1 | 31 | { |
| WillemBraat | 6:904d00252480 | 32 | CDU_I2C.write(CDU_KB_READ); //initiate read cycle |
| WillemBraat | 6:904d00252480 | 33 | key_hit_ID = CDU_I2C.read(CDU_KB_READ) ; //read key value |
| WillemBraat | 3:f7bce78b04c1 | 34 | //CDU_OS.SetEvent(KEY_EVENT,SEND_KEYMESSAGE_TASK_ID ); //Set event key to wakeup task |
| WillemBraat | 3:f7bce78b04c1 | 35 | } |
| WillemBraat | 3:f7bce78b04c1 | 36 | |
| WillemBraat | 3:f7bce78b04c1 | 37 | void CDU_KB_INT_START() |
| WillemBraat | 3:f7bce78b04c1 | 38 | { |
| WillemBraat | 7:779c5b8d3b14 | 39 | CDU_KB_INT.mode( PullUp ); //Keyboard chip pulls this line to 0 on a keypress |
| WillemBraat | 7:779c5b8d3b14 | 40 | CDU_KB_INT.fall(&CDU_KB_GET_KEY); //Bind function to interrupt handler |
| WillemBraat | 3:f7bce78b04c1 | 41 | } |
| WillemBraat | 3:f7bce78b04c1 | 42 | |
| WillemBraat | 7:779c5b8d3b14 | 43 | void CDU_SET_BGL_INTENSITY( int nVal=255 ) |
| WillemBraat | 3:f7bce78b04c1 | 44 | { |
| WillemBraat | 8:dd258f9e24b0 | 45 | //This routine must be called 5-10x per second. Manual test to see what is pleasant to see |
| WillemBraat | 3:f7bce78b04c1 | 46 | //AnalogIn BGL_POT( p15 ); //background light control potmeter. Returns a value between 0.0 and 1.0 |
| WillemBraat | 3:f7bce78b04c1 | 47 | //PwmOut BGL_LED( p21 ); //PWM output |
| WillemBraat | 3:f7bce78b04c1 | 48 | //calculate required brightness in percentage from 0%-100% |
| WillemBraat | 7:779c5b8d3b14 | 49 | //nVal 255 --> calculate brightness from potmeter value (default value if no parameter is passed) |
| WillemBraat | 3:f7bce78b04c1 | 50 | //nVal = 0 --> switch off backlight |
| WillemBraat | 3:f7bce78b04c1 | 51 | //nVal = 100 --> switch on backlight max |
| WillemBraat | 3:f7bce78b04c1 | 52 | |
| WillemBraat | 3:f7bce78b04c1 | 53 | switch (nVal) |
| WillemBraat | 3:f7bce78b04c1 | 54 | { |
| WillemBraat | 3:f7bce78b04c1 | 55 | case 0: |
| WillemBraat | 3:f7bce78b04c1 | 56 | { |
| WillemBraat | 3:f7bce78b04c1 | 57 | //switch off backlighting |
| WillemBraat | 3:f7bce78b04c1 | 58 | BGL_LED.pulsewidth( 0.0 ); |
| WillemBraat | 3:f7bce78b04c1 | 59 | break; |
| WillemBraat | 3:f7bce78b04c1 | 60 | } |
| WillemBraat | 3:f7bce78b04c1 | 61 | case 100: |
| WillemBraat | 3:f7bce78b04c1 | 62 | { |
| WillemBraat | 3:f7bce78b04c1 | 63 | //switch on backlighting |
| WillemBraat | 3:f7bce78b04c1 | 64 | BGL_LED.pulsewidth( 100.0 ); |
| WillemBraat | 3:f7bce78b04c1 | 65 | break; |
| WillemBraat | 3:f7bce78b04c1 | 66 | } |
| WillemBraat | 3:f7bce78b04c1 | 67 | case 255: |
| WillemBraat | 3:f7bce78b04c1 | 68 | { |
| WillemBraat | 3:f7bce78b04c1 | 69 | //calculate percentage from potmeter value |
| WillemBraat | 8:dd258f9e24b0 | 70 | BGL_LED = ( 0.0 + 100*BGL_POT ); |
| WillemBraat | 3:f7bce78b04c1 | 71 | } |
| WillemBraat | 3:f7bce78b04c1 | 72 | } |
| WillemBraat | 3:f7bce78b04c1 | 73 | } |
