Test application to demonstrate MCP4xxxx_SPI library

Dependencies:   DebugLibrary MCP4xxxx_SPI mbed

Files at this revision

API Documentation at this revision

Comitter:
Yann
Date:
Fri Jan 25 16:13:03 2013 +0000
Child:
1:a463807bf483
Commit message:
Create library and test application for Microchip Digital Potentiometers MCP42xxx/MCP41xxx

Changed in this revision

DebugLibrary.lib Show annotated file Show diff for this revision Revisions of this file
MCP4xxxx_SPI.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DebugLibrary.lib	Fri Jan 25 16:13:03 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Yann/code/DebugLibrary/#a11adabe9ded
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCP4xxxx_SPI.lib	Fri Jan 25 16:13:03 2013 +0000
@@ -0,0 +1,1 @@
+MCP4xxxx_SPI#03314ad622d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jan 25 16:13:03 2013 +0000
@@ -0,0 +1,92 @@
+#include <string>
+#include <iostream>
+#include <iomanip>
+
+#include "MCP4xxxx_SPI.h"
+
+struct UserChoice {
+    char choice;
+    unsigned char moduleId;
+};
+
+/*
+ * Declare functions
+ */
+void AvailableIndicator(); // LED1 flashing for program while program is alive
+UserChoice DisplayMenuAndGetChoice(); // Display and get the user choice
+
+/*
+ * Declare statics
+ */
+DigitalOut g_availableLed(LED1); // To verify if program in running
+Ticker g_available; // LED1 will flash with a period of 2s
+DigitalOut g_chipSelect(p8); // /CS to select MCP4xxxx device
+CMCP4xxxx_SPI g_digitalPot(p5, p6, p7, NC, NC); // Create an instance of the class CMCP4xxxx_SPI, p5/p6/p7: SPI#1, /RESET input not connected, , /SHDN input not connected
+UserChoice g_userChoice; // Used to store user choice from displayed menu
+
+int main() {
+
+    unsigned char potLevel = 0x80; // Initial digital potentiometer value
+    
+    g_chipSelect = 1; // Device is disabled 
+
+    // Launch available indicator
+    g_available.attach(&AvailableIndicator, 2.0);
+    
+    while (true) {
+    
+        g_userChoice = DisplayMenuAndGetChoice(); // Retrieve the user selection
+         switch (g_userChoice.choice) {
+            case 'a':
+                potLevel += 1;
+                g_chipSelect.write(0);
+                g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel);
+                g_chipSelect.write(1);
+                break;
+            case 'b':
+                potLevel += 1;
+                g_chipSelect.write(0);
+                g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot2, potLevel);
+                g_chipSelect.write(1);
+               break;
+            case 'c':
+                potLevel -= 1;
+                g_chipSelect.write(0);
+                g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel);
+                g_chipSelect.write(1);
+                break;
+            case 'd':
+                potLevel -= 1;
+                g_chipSelect.write(0);
+                g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot2, potLevel);
+                g_chipSelect.write(1);
+                break;
+            default:
+                std::cout << "Invalid user choice\r" << std::endl;
+                break;
+         } // End of 'switch' statement
+       
+    } // End of 'while' statement
+} // End of program - nerver reached
+
+void AvailableIndicator() {
+    g_availableLed = !g_availableLed;
+} // End of AvailableIndicator
+
+UserChoice DisplayMenuAndGetChoice() {
+    static UserChoice userChoice;
+
+    // Display the title
+    std::cout << "\r" << std::endl << "MCP4xxxx_SPI v0.1\r" << std::endl;
+
+    // Display the menu
+    std::cout << "\tIncrease level on pot #1:\t\t\ta\r" << std::endl;
+    std::cout << "\tIncrease level on pot #2:\t\t\tb\r" << std::endl;
+    std::cout << "\tDecrease level on pot #1:\t\t\tc\r" << std::endl;
+    std::cout << "\tDecrease level on pot #2:\t\t\td\r" << std::endl;
+    std::cout << "Enter your choice: " << std::flush;
+    userChoice.choice = getchar();
+    // Display the menu
+    std::cout << "\r" << std::endl << std::flush;
+    return userChoice;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jan 25 16:13:03 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/0954ebd79f59
\ No newline at end of file