Shinichiro Nakamura
/
StarBoardOrangeExample2
StarBoard Orange - Example application No.2 (Version 0.0.4)
main.cpp@0:5d79cd4ac81d, 2010-08-13 (annotated)
- Committer:
- shintamainjp
- Date:
- Fri Aug 13 11:25:40 2010 +0000
- Revision:
- 0:5d79cd4ac81d
- Child:
- 3:469de11d1e1d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:5d79cd4ac81d | 1 | /** |
shintamainjp | 0:5d79cd4ac81d | 2 | * StarBoard Orange - Example application No.2 (Version 0.0.1) |
shintamainjp | 0:5d79cd4ac81d | 3 | * Remote IR receiver with StarBoard Orange |
shintamainjp | 0:5d79cd4ac81d | 4 | * |
shintamainjp | 0:5d79cd4ac81d | 5 | * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_ja/ |
shintamainjp | 0:5d79cd4ac81d | 6 | * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_en/ |
shintamainjp | 0:5d79cd4ac81d | 7 | * |
shintamainjp | 0:5d79cd4ac81d | 8 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:5d79cd4ac81d | 9 | * http://shinta.main.jp/ |
shintamainjp | 0:5d79cd4ac81d | 10 | */ |
shintamainjp | 0:5d79cd4ac81d | 11 | |
shintamainjp | 0:5d79cd4ac81d | 12 | #include <mbed.h> |
shintamainjp | 0:5d79cd4ac81d | 13 | |
shintamainjp | 0:5d79cd4ac81d | 14 | #include "ReceiverIR.h" |
shintamainjp | 0:5d79cd4ac81d | 15 | #include "TextLCD.h" |
shintamainjp | 0:5d79cd4ac81d | 16 | |
shintamainjp | 0:5d79cd4ac81d | 17 | ReceiverIR ir(p17); |
shintamainjp | 0:5d79cd4ac81d | 18 | BusOut led(LED4, LED3, LED2, LED1); |
shintamainjp | 0:5d79cd4ac81d | 19 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); |
shintamainjp | 0:5d79cd4ac81d | 20 | |
shintamainjp | 0:5d79cd4ac81d | 21 | /** |
shintamainjp | 0:5d79cd4ac81d | 22 | * Display a splash screen. |
shintamainjp | 0:5d79cd4ac81d | 23 | */ |
shintamainjp | 0:5d79cd4ac81d | 24 | void splash(void) { |
shintamainjp | 0:5d79cd4ac81d | 25 | lcd.cls(); |
shintamainjp | 0:5d79cd4ac81d | 26 | lcd.locate(0, 0); |
shintamainjp | 0:5d79cd4ac81d | 27 | lcd.printf("StarBoard Orange"); |
shintamainjp | 0:5d79cd4ac81d | 28 | lcd.locate(0, 1); |
shintamainjp | 0:5d79cd4ac81d | 29 | lcd.printf("mbed NXP LPC1768"); |
shintamainjp | 0:5d79cd4ac81d | 30 | wait(3); |
shintamainjp | 0:5d79cd4ac81d | 31 | |
shintamainjp | 0:5d79cd4ac81d | 32 | lcd.cls(); |
shintamainjp | 0:5d79cd4ac81d | 33 | lcd.locate(0, 0); |
shintamainjp | 0:5d79cd4ac81d | 34 | lcd.printf("Example app No.2"); |
shintamainjp | 0:5d79cd4ac81d | 35 | lcd.locate(0, 1); |
shintamainjp | 0:5d79cd4ac81d | 36 | lcd.printf(" Remote IR "); |
shintamainjp | 0:5d79cd4ac81d | 37 | wait(3); |
shintamainjp | 0:5d79cd4ac81d | 38 | } |
shintamainjp | 0:5d79cd4ac81d | 39 | |
shintamainjp | 0:5d79cd4ac81d | 40 | /** |
shintamainjp | 0:5d79cd4ac81d | 41 | * Entry point. |
shintamainjp | 0:5d79cd4ac81d | 42 | */ |
shintamainjp | 0:5d79cd4ac81d | 43 | int main(void) { |
shintamainjp | 0:5d79cd4ac81d | 44 | |
shintamainjp | 0:5d79cd4ac81d | 45 | /* |
shintamainjp | 0:5d79cd4ac81d | 46 | * Splash. |
shintamainjp | 0:5d79cd4ac81d | 47 | */ |
shintamainjp | 0:5d79cd4ac81d | 48 | splash(); |
shintamainjp | 0:5d79cd4ac81d | 49 | |
shintamainjp | 0:5d79cd4ac81d | 50 | /* |
shintamainjp | 0:5d79cd4ac81d | 51 | * Initialize. |
shintamainjp | 0:5d79cd4ac81d | 52 | */ |
shintamainjp | 0:5d79cd4ac81d | 53 | led = 0; |
shintamainjp | 0:5d79cd4ac81d | 54 | lcd.cls(); |
shintamainjp | 0:5d79cd4ac81d | 55 | lcd.locate(0, 0); |
shintamainjp | 0:5d79cd4ac81d | 56 | lcd.printf("Press a button "); |
shintamainjp | 0:5d79cd4ac81d | 57 | lcd.locate(0, 1); |
shintamainjp | 0:5d79cd4ac81d | 58 | lcd.printf("on a controller."); |
shintamainjp | 0:5d79cd4ac81d | 59 | |
shintamainjp | 0:5d79cd4ac81d | 60 | while (1) { |
shintamainjp | 0:5d79cd4ac81d | 61 | static int latest_bits = 0; |
shintamainjp | 0:5d79cd4ac81d | 62 | static ReceiverIR::State prev = ReceiverIR::Idle; |
shintamainjp | 0:5d79cd4ac81d | 63 | |
shintamainjp | 0:5d79cd4ac81d | 64 | /* |
shintamainjp | 0:5d79cd4ac81d | 65 | * Get a current state. |
shintamainjp | 0:5d79cd4ac81d | 66 | */ |
shintamainjp | 0:5d79cd4ac81d | 67 | ReceiverIR::State curr = ir.getState(); |
shintamainjp | 0:5d79cd4ac81d | 68 | if (prev != curr) { |
shintamainjp | 0:5d79cd4ac81d | 69 | lcd.locate(0, 0); |
shintamainjp | 0:5d79cd4ac81d | 70 | switch (curr) { |
shintamainjp | 0:5d79cd4ac81d | 71 | case ReceiverIR::Idle: |
shintamainjp | 0:5d79cd4ac81d | 72 | lcd.printf("Idle (%2d) \n", latest_bits); |
shintamainjp | 0:5d79cd4ac81d | 73 | break; |
shintamainjp | 0:5d79cd4ac81d | 74 | case ReceiverIR::Receiving: |
shintamainjp | 0:5d79cd4ac81d | 75 | lcd.printf("Receiving \n"); |
shintamainjp | 0:5d79cd4ac81d | 76 | break; |
shintamainjp | 0:5d79cd4ac81d | 77 | case ReceiverIR::Received: |
shintamainjp | 0:5d79cd4ac81d | 78 | lcd.printf("Received \n"); |
shintamainjp | 0:5d79cd4ac81d | 79 | break; |
shintamainjp | 0:5d79cd4ac81d | 80 | } |
shintamainjp | 0:5d79cd4ac81d | 81 | } |
shintamainjp | 0:5d79cd4ac81d | 82 | prev = curr; |
shintamainjp | 0:5d79cd4ac81d | 83 | |
shintamainjp | 0:5d79cd4ac81d | 84 | /* |
shintamainjp | 0:5d79cd4ac81d | 85 | * Update statuses if it updated. |
shintamainjp | 0:5d79cd4ac81d | 86 | */ |
shintamainjp | 0:5d79cd4ac81d | 87 | if (ReceiverIR::Received == curr) { |
shintamainjp | 0:5d79cd4ac81d | 88 | led = led + 1; |
shintamainjp | 0:5d79cd4ac81d | 89 | ReceiverIR::Format format; |
shintamainjp | 0:5d79cd4ac81d | 90 | uint8_t buf[32]; |
shintamainjp | 0:5d79cd4ac81d | 91 | int bc = ir.getData(&format, buf, sizeof(buf)); |
shintamainjp | 0:5d79cd4ac81d | 92 | latest_bits = bc; |
shintamainjp | 0:5d79cd4ac81d | 93 | lcd.locate(10, 0); |
shintamainjp | 0:5d79cd4ac81d | 94 | switch (format) { |
shintamainjp | 0:5d79cd4ac81d | 95 | case ReceiverIR::UNKNOWN: |
shintamainjp | 0:5d79cd4ac81d | 96 | lcd.printf(": ????"); |
shintamainjp | 0:5d79cd4ac81d | 97 | break; |
shintamainjp | 0:5d79cd4ac81d | 98 | case ReceiverIR::NEC: |
shintamainjp | 0:5d79cd4ac81d | 99 | lcd.printf(": NEC "); |
shintamainjp | 0:5d79cd4ac81d | 100 | break; |
shintamainjp | 0:5d79cd4ac81d | 101 | case ReceiverIR::AEHA: |
shintamainjp | 0:5d79cd4ac81d | 102 | lcd.printf(": AEHA"); |
shintamainjp | 0:5d79cd4ac81d | 103 | break; |
shintamainjp | 0:5d79cd4ac81d | 104 | case ReceiverIR::SONY: |
shintamainjp | 0:5d79cd4ac81d | 105 | lcd.printf(": SONY"); |
shintamainjp | 0:5d79cd4ac81d | 106 | break; |
shintamainjp | 0:5d79cd4ac81d | 107 | default: |
shintamainjp | 0:5d79cd4ac81d | 108 | break; |
shintamainjp | 0:5d79cd4ac81d | 109 | } |
shintamainjp | 0:5d79cd4ac81d | 110 | lcd.locate(0, 1); |
shintamainjp | 0:5d79cd4ac81d | 111 | for (int i = 0; i < (bc / 8); i++) { |
shintamainjp | 0:5d79cd4ac81d | 112 | lcd.printf("%02X", buf[i]); |
shintamainjp | 0:5d79cd4ac81d | 113 | } |
shintamainjp | 0:5d79cd4ac81d | 114 | for (int i = 0; i < 8 - (bc / 8); i++) { |
shintamainjp | 0:5d79cd4ac81d | 115 | lcd.printf("--"); |
shintamainjp | 0:5d79cd4ac81d | 116 | } |
shintamainjp | 0:5d79cd4ac81d | 117 | } |
shintamainjp | 0:5d79cd4ac81d | 118 | } |
shintamainjp | 0:5d79cd4ac81d | 119 | } |