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: Encoder_dspic33f mbed
main.cpp@0:72dfed48bbcd, 2014-02-27 (annotated)
- Committer:
- shalab
- Date:
- Thu Feb 27 02:15:35 2014 +0000
- Revision:
- 0:72dfed48bbcd
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shalab | 0:72dfed48bbcd | 1 | #include "mbed.h" |
shalab | 0:72dfed48bbcd | 2 | #include "common.h" |
shalab | 0:72dfed48bbcd | 3 | #include "Encoder_dspic33f.h" |
shalab | 0:72dfed48bbcd | 4 | |
shalab | 0:72dfed48bbcd | 5 | using namespace std; |
shalab | 0:72dfed48bbcd | 6 | |
shalab | 0:72dfed48bbcd | 7 | DigitalOut led1(LED1); |
shalab | 0:72dfed48bbcd | 8 | DigitalOut led2(LED2); |
shalab | 0:72dfed48bbcd | 9 | DigitalOut led3(LED3); |
shalab | 0:72dfed48bbcd | 10 | DigitalOut led4(LED4); |
shalab | 0:72dfed48bbcd | 11 | |
shalab | 0:72dfed48bbcd | 12 | Serial pc(USBTX, USBRX); |
shalab | 0:72dfed48bbcd | 13 | |
shalab | 0:72dfed48bbcd | 14 | // dspic Encoder |
shalab | 0:72dfed48bbcd | 15 | const int enc_resolution = 10000 ; |
shalab | 0:72dfed48bbcd | 16 | const int address = 0x18 ; |
shalab | 0:72dfed48bbcd | 17 | Encoder_dspic33f encoder(p9, p10, enc_resolution, address); |
shalab | 0:72dfed48bbcd | 18 | Ticker printer; |
shalab | 0:72dfed48bbcd | 19 | |
shalab | 0:72dfed48bbcd | 20 | int extractInt(char *buf) |
shalab | 0:72dfed48bbcd | 21 | { |
shalab | 0:72dfed48bbcd | 22 | char tmp[10]; |
shalab | 0:72dfed48bbcd | 23 | int tmpInt; |
shalab | 0:72dfed48bbcd | 24 | strcpy(tmp, buf+1), |
shalab | 0:72dfed48bbcd | 25 | |
shalab | 0:72dfed48bbcd | 26 | tmpInt =atof(tmp); |
shalab | 0:72dfed48bbcd | 27 | return tmpInt; |
shalab | 0:72dfed48bbcd | 28 | } |
shalab | 0:72dfed48bbcd | 29 | |
shalab | 0:72dfed48bbcd | 30 | void printdata() |
shalab | 0:72dfed48bbcd | 31 | { |
shalab | 0:72dfed48bbcd | 32 | toggle(led2); |
shalab | 0:72dfed48bbcd | 33 | double data[2]; |
shalab | 0:72dfed48bbcd | 34 | encoder.read(data); |
shalab | 0:72dfed48bbcd | 35 | pc.printf("Data Read: %f | %f \r", toDegrees(data[0]), toDegrees(data[1])); |
shalab | 0:72dfed48bbcd | 36 | } |
shalab | 0:72dfed48bbcd | 37 | |
shalab | 0:72dfed48bbcd | 38 | |
shalab | 0:72dfed48bbcd | 39 | int main() |
shalab | 0:72dfed48bbcd | 40 | { |
shalab | 0:72dfed48bbcd | 41 | char cmd[10]; |
shalab | 0:72dfed48bbcd | 42 | int i = 0; |
shalab | 0:72dfed48bbcd | 43 | pc.baud(115200); |
shalab | 0:72dfed48bbcd | 44 | |
shalab | 0:72dfed48bbcd | 45 | pc.printf("\r\n\r\n\r\n"); |
shalab | 0:72dfed48bbcd | 46 | pc.printf("Shalab - Tutorial004_dspic33fI2cCom\r\n"); |
shalab | 0:72dfed48bbcd | 47 | encoder.set_resolution(enc_resolution); |
shalab | 0:72dfed48bbcd | 48 | encoder.reset(); |
shalab | 0:72dfed48bbcd | 49 | pc.printf("Command list:\r\n" |
shalab | 0:72dfed48bbcd | 50 | "r: reset encoder\r\n" |
shalab | 0:72dfed48bbcd | 51 | "e: set encoder resolution, usage: e1024\r\n" |
shalab | 0:72dfed48bbcd | 52 | "p: print encoder values\r\n"); |
shalab | 0:72dfed48bbcd | 53 | wait(1); |
shalab | 0:72dfed48bbcd | 54 | while(1) { |
shalab | 0:72dfed48bbcd | 55 | toggle(led1); |
shalab | 0:72dfed48bbcd | 56 | ++i; |
shalab | 0:72dfed48bbcd | 57 | pc.printf("[%3d]Enter command: ",i); |
shalab | 0:72dfed48bbcd | 58 | pc.scanf("%s", &cmd); |
shalab | 0:72dfed48bbcd | 59 | |
shalab | 0:72dfed48bbcd | 60 | switch (cmd[0]){ |
shalab | 0:72dfed48bbcd | 61 | case 'r': { |
shalab | 0:72dfed48bbcd | 62 | pc.printf("Reset encoder\r\n"); |
shalab | 0:72dfed48bbcd | 63 | encoder.reset(); |
shalab | 0:72dfed48bbcd | 64 | break;} |
shalab | 0:72dfed48bbcd | 65 | case 'p': { // print data until enter interrupt |
shalab | 0:72dfed48bbcd | 66 | pc.printf("Reading encoder\r\n"); |
shalab | 0:72dfed48bbcd | 67 | wait(0.5); |
shalab | 0:72dfed48bbcd | 68 | printer.attach(&printdata, 0.05); |
shalab | 0:72dfed48bbcd | 69 | pc.getc(); |
shalab | 0:72dfed48bbcd | 70 | pc.printf("Stopping Printing\r\n"); |
shalab | 0:72dfed48bbcd | 71 | printer.detach(); |
shalab | 0:72dfed48bbcd | 72 | |
shalab | 0:72dfed48bbcd | 73 | break;} |
shalab | 0:72dfed48bbcd | 74 | case 'e':{ |
shalab | 0:72dfed48bbcd | 75 | int enc_resolution; |
shalab | 0:72dfed48bbcd | 76 | |
shalab | 0:72dfed48bbcd | 77 | enc_resolution = extractInt(cmd); |
shalab | 0:72dfed48bbcd | 78 | pc.printf("Set encoder resolution: %d\r\n", enc_resolution); |
shalab | 0:72dfed48bbcd | 79 | encoder.set_resolution(enc_resolution); |
shalab | 0:72dfed48bbcd | 80 | break;} |
shalab | 0:72dfed48bbcd | 81 | default: |
shalab | 0:72dfed48bbcd | 82 | break; |
shalab | 0:72dfed48bbcd | 83 | } |
shalab | 0:72dfed48bbcd | 84 | } |
shalab | 0:72dfed48bbcd | 85 | } |