1
Dependencies: DebugLibrary MCP4xxxx_SPI mbed
Fork of MCP41xxxApp by
main.cpp@4:1561d27a8e3a, 2016-11-30 (annotated)
- Committer:
- viniciushl
- Date:
- Wed Nov 30 18:18:05 2016 +0000
- Revision:
- 4:1561d27a8e3a
- Parent:
- 3:7dbac45b8fd3
Oi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Yann | 0:62020bd58748 | 1 | #include <string> |
Yann | 0:62020bd58748 | 2 | #include <iostream> |
Yann | 0:62020bd58748 | 3 | #include <iomanip> |
viniciushl | 4:1561d27a8e3a | 4 | #include <mbed.h> |
viniciushl | 4:1561d27a8e3a | 5 | #include <math.h> |
Yann | 3:7dbac45b8fd3 | 6 | /** |
Yann | 3:7dbac45b8fd3 | 7 | * Tests were done with schema proposed here: DS11195C-page 11 FIGURE 2-25: Potentiometer Divider Non-Linearity Error Test Circuit (DNL, INL) |
Yann | 3:7dbac45b8fd3 | 8 | */ |
Yann | 0:62020bd58748 | 9 | #include "MCP4xxxx_SPI.h" |
Yann | 0:62020bd58748 | 10 | |
Yann | 0:62020bd58748 | 11 | struct UserChoice { |
Yann | 0:62020bd58748 | 12 | char choice; |
Yann | 0:62020bd58748 | 13 | unsigned char moduleId; |
Yann | 0:62020bd58748 | 14 | }; |
Yann | 0:62020bd58748 | 15 | |
Yann | 0:62020bd58748 | 16 | /* |
Yann | 0:62020bd58748 | 17 | * Declare functions |
Yann | 0:62020bd58748 | 18 | */ |
Yann | 0:62020bd58748 | 19 | void AvailableIndicator(); // LED1 flashing for program while program is alive |
Yann | 0:62020bd58748 | 20 | UserChoice DisplayMenuAndGetChoice(); // Display and get the user choice |
Yann | 0:62020bd58748 | 21 | |
Yann | 0:62020bd58748 | 22 | /* |
Yann | 0:62020bd58748 | 23 | * Declare statics |
Yann | 0:62020bd58748 | 24 | */ |
viniciushl | 4:1561d27a8e3a | 25 | |
viniciushl | 4:1561d27a8e3a | 26 | DigitalOut chipSelect[] = {p8,p9,p10}; // c - MAIS SIGNIFICATIVO |
viniciushl | 4:1561d27a8e3a | 27 | |
viniciushl | 4:1561d27a8e3a | 28 | |
viniciushl | 4:1561d27a8e3a | 29 | |
viniciushl | 4:1561d27a8e3a | 30 | CMCP4xxxx_SPI g_digitalPot(p5, p6, p7, NC, NC, NC); // Create an instance of the class CMCP4xxxx_SPI, p5/p6/p7: SPI#1, /CS managed by library, /RESET input not connected, , /SHDN input not connected |
Yann | 0:62020bd58748 | 31 | |
Yann | 0:62020bd58748 | 32 | int main() { |
Yann | 0:62020bd58748 | 33 | |
viniciushl | 4:1561d27a8e3a | 34 | //unsigned int potLevel1 = 0x0; // Initial digital potentiometer value |
viniciushl | 4:1561d27a8e3a | 35 | //unsigned int potLevel2 = 0x0; // Initial digital potentiometer value |
Yann | 0:62020bd58748 | 36 | |
viniciushl | 4:1561d27a8e3a | 37 | int value = 0; |
viniciushl | 4:1561d27a8e3a | 38 | int num_pot = 0; |
Yann | 0:62020bd58748 | 39 | |
viniciushl | 4:1561d27a8e3a | 40 | while (true) |
viniciushl | 4:1561d27a8e3a | 41 | { |
viniciushl | 4:1561d27a8e3a | 42 | do { |
viniciushl | 4:1561d27a8e3a | 43 | |
viniciushl | 4:1561d27a8e3a | 44 | printf("\r\nDigite o numero do potenciometro (1 a 8):"); |
viniciushl | 4:1561d27a8e3a | 45 | scanf("%d", &num_pot); |
viniciushl | 4:1561d27a8e3a | 46 | }while(num_pot < 1 || num_pot > 12); |
Yann | 0:62020bd58748 | 47 | |
viniciushl | 4:1561d27a8e3a | 48 | do { |
viniciushl | 4:1561d27a8e3a | 49 | |
viniciushl | 4:1561d27a8e3a | 50 | printf("\r\nDigite o valor do volume (0 a 8):"); |
viniciushl | 4:1561d27a8e3a | 51 | scanf("%d", &value); |
viniciushl | 4:1561d27a8e3a | 52 | }while(value < 0 || value >255); |
viniciushl | 4:1561d27a8e3a | 53 | |
viniciushl | 4:1561d27a8e3a | 54 | |
viniciushl | 4:1561d27a8e3a | 55 | |
viniciushl | 4:1561d27a8e3a | 56 | chipSelect[0].write(((num_pot-1) >> 2) & 0x1); |
viniciushl | 4:1561d27a8e3a | 57 | chipSelect[1].write(((num_pot-1) >> 1) & 0x1); |
viniciushl | 4:1561d27a8e3a | 58 | chipSelect[2].write(((num_pot-1) >> 0) & 0x1); |
viniciushl | 4:1561d27a8e3a | 59 | |
viniciushl | 4:1561d27a8e3a | 60 | int value2 = 256 - (pow((double)2,(double)value)); |
viniciushl | 4:1561d27a8e3a | 61 | printf("Value = %d", value2); |
viniciushl | 4:1561d27a8e3a | 62 | |
viniciushl | 4:1561d27a8e3a | 63 | g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, value2); |
viniciushl | 4:1561d27a8e3a | 64 | |
viniciushl | 4:1561d27a8e3a | 65 | |
viniciushl | 4:1561d27a8e3a | 66 | |
viniciushl | 4:1561d27a8e3a | 67 | chipSelect[0].write(1); |
viniciushl | 4:1561d27a8e3a | 68 | chipSelect[1].write(1); |
viniciushl | 4:1561d27a8e3a | 69 | chipSelect[2].write(1); |
viniciushl | 4:1561d27a8e3a | 70 | /* |
Yann | 0:62020bd58748 | 71 | |
viniciushl | 4:1561d27a8e3a | 72 | g_chipSelect1.write(0); |
viniciushl | 4:1561d27a8e3a | 73 | |
viniciushl | 4:1561d27a8e3a | 74 | g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel1); |
Yann | 0:62020bd58748 | 75 | |
viniciushl | 4:1561d27a8e3a | 76 | |
viniciushl | 4:1561d27a8e3a | 77 | g_chipSelect1.write(1); |
viniciushl | 4:1561d27a8e3a | 78 | |
viniciushl | 4:1561d27a8e3a | 79 | |
viniciushl | 4:1561d27a8e3a | 80 | g_chipSelect2.write(0); |
viniciushl | 4:1561d27a8e3a | 81 | |
viniciushl | 4:1561d27a8e3a | 82 | g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2); |
Yann | 0:62020bd58748 | 83 | |
viniciushl | 4:1561d27a8e3a | 84 | |
viniciushl | 4:1561d27a8e3a | 85 | g_chipSelect2.write(1); |
viniciushl | 4:1561d27a8e3a | 86 | |
viniciushl | 4:1561d27a8e3a | 87 | potLevel1+=1; |
viniciushl | 4:1561d27a8e3a | 88 | potLevel2-=1; |
viniciushl | 4:1561d27a8e3a | 89 | |
viniciushl | 4:1561d27a8e3a | 90 | g_chipSelect2.write(0); |
viniciushl | 4:1561d27a8e3a | 91 | g_digitalPot.Write(CMCP4xxxx_SPI::WriteToPot1, potLevel2); |
viniciushl | 4:1561d27a8e3a | 92 | g_chipSelect2.write(1);*/ |
viniciushl | 4:1561d27a8e3a | 93 | |
viniciushl | 4:1561d27a8e3a | 94 | } |
viniciushl | 4:1561d27a8e3a | 95 | |
viniciushl | 4:1561d27a8e3a | 96 | |
Yann | 0:62020bd58748 | 97 | } |
viniciushl | 4:1561d27a8e3a | 98 | |
viniciushl | 4:1561d27a8e3a | 99 |