Yann Garcia / Mbed 2 deprecated MCP23017App

Dependencies:   DebugLibrary MCP23017_I2C mbed

Committer:
Yann
Date:
Wed Jan 07 09:49:59 2015 +0000
Revision:
0:1d91b4046326
Child:
1:e981573db063
Start implementing support of MCP28017

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yann 0:1d91b4046326 1 #include <string>
Yann 0:1d91b4046326 2 #include <iostream>
Yann 0:1d91b4046326 3 #include <iomanip>
Yann 0:1d91b4046326 4
Yann 0:1d91b4046326 5 #include "MCP23017_I2C.h"
Yann 0:1d91b4046326 6
Yann 0:1d91b4046326 7 /*
Yann 0:1d91b4046326 8 * Declare functions
Yann 0:1d91b4046326 9 */
Yann 0:1d91b4046326 10 void AvailableIndicator(); // LED1 flashing for program while program is alive
Yann 0:1d91b4046326 11 DigitalOut g_availableLed(LED1); // To verify if program in running
Yann 0:1d91b4046326 12 Ticker g_available; // LED1 will flash with a period of 2s
Yann 0:1d91b4046326 13 char DisplayMenuAndGetChoice();
Yann 0:1d91b4046326 14
Yann 0:1d91b4046326 15 static CMCP23017_I2C g_gpioExp(p9, p10, 0x27, p15, p16, p17);
Yann 0:1d91b4046326 16
Yann 0:1d91b4046326 17 int main() {
Yann 0:1d91b4046326 18 // Launch available indicator
Yann 0:1d91b4046326 19 g_available.attach(&AvailableIndicator, 2.0);
Yann 0:1d91b4046326 20
Yann 0:1d91b4046326 21 g_gpioExp.Initialize();
Yann 0:1d91b4046326 22
Yann 0:1d91b4046326 23 while(true) {
Yann 0:1d91b4046326 24 switch (DisplayMenuAndGetChoice()) {
Yann 0:1d91b4046326 25 case 'a':
Yann 0:1d91b4046326 26 g_gpioExp.write(GPB0, 1);
Yann 0:1d91b4046326 27 break;
Yann 0:1d91b4046326 28 case 'b':
Yann 0:1d91b4046326 29 g_gpioExp.write(GPB0, 0);
Yann 0:1d91b4046326 30 break;
Yann 0:1d91b4046326 31 case 'c':
Yann 0:1d91b4046326 32 g_gpioExp.write(GPB2, 1);
Yann 0:1d91b4046326 33 break;
Yann 0:1d91b4046326 34 case 'd':
Yann 0:1d91b4046326 35 g_gpioExp.write(GPB2, 0);
Yann 0:1d91b4046326 36 break;
Yann 0:1d91b4046326 37 case 'r':
Yann 0:1d91b4046326 38 g_gpioExp.reset();
Yann 0:1d91b4046326 39 break;
Yann 0:1d91b4046326 40 default:
Yann 0:1d91b4046326 41 std::cout << "Invalid user choice\r" << std::endl;
Yann 0:1d91b4046326 42 break;
Yann 0:1d91b4046326 43 } // End of 'switch' statement
Yann 0:1d91b4046326 44
Yann 0:1d91b4046326 45 } // End of 'while' loop
Yann 0:1d91b4046326 46 }
Yann 0:1d91b4046326 47
Yann 0:1d91b4046326 48 void AvailableIndicator()
Yann 0:1d91b4046326 49 {
Yann 0:1d91b4046326 50 g_availableLed = !g_availableLed;
Yann 0:1d91b4046326 51 } // End of AvailableIndicator
Yann 0:1d91b4046326 52
Yann 0:1d91b4046326 53 char DisplayMenuAndGetChoice()
Yann 0:1d91b4046326 54 {
Yann 0:1d91b4046326 55 char value;
Yann 0:1d91b4046326 56 std::cout << "\r" << std::endl << "\r" << std::endl << "MCP23017_I2C v0.1\r" << std::endl;
Yann 0:1d91b4046326 57 std::cout << "\tSet PortB-0 :\t\ta\r" << std::endl;
Yann 0:1d91b4046326 58 std::cout << "\tUnset PortB-0 :\t\tb\r" << std::endl;
Yann 0:1d91b4046326 59 std::cout << "\tUnset PortB-2 :\t\tc\r" << std::endl;
Yann 0:1d91b4046326 60 std::cout << "\tUnset PortB-2 :\t\td\r" << std::endl;
Yann 0:1d91b4046326 61 std::cout << "\tReset device :\t\tr\r" << std::endl;
Yann 0:1d91b4046326 62 std::cout << "Enter your choice: " << std::flush;
Yann 0:1d91b4046326 63 value = getchar();
Yann 0:1d91b4046326 64 std::cout << "\r" << std::endl;
Yann 0:1d91b4046326 65 return value;
Yann 0:1d91b4046326 66 }