shalab shalab / Mbed 2 deprecated Tutorial04_dspic33fI2cCom

Dependencies:   Encoder_dspic33f mbed

main.cpp

Committer:
shalab
Date:
2014-02-27
Revision:
0:72dfed48bbcd

File content as of revision 0:72dfed48bbcd:

#include "mbed.h"
#include "common.h" 
#include "Encoder_dspic33f.h"

using namespace std;
 
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

Serial pc(USBTX, USBRX);

// dspic Encoder 
const int enc_resolution = 10000 ;
const int address = 0x18 ;
Encoder_dspic33f encoder(p9, p10, enc_resolution, address);
Ticker printer;

int extractInt(char *buf)
{
    char tmp[10];
    int tmpInt;
    strcpy(tmp, buf+1), 
    
    tmpInt =atof(tmp);    
    return tmpInt;
}

void printdata()
{
    toggle(led2);
    double data[2];   
    encoder.read(data);  
    pc.printf("Data Read: %f | %f \r", toDegrees(data[0]), toDegrees(data[1]));   
}
 
 
int main() 
{ 
    char cmd[10];
    int i = 0;
    pc.baud(115200);  
    
    pc.printf("\r\n\r\n\r\n");
    pc.printf("Shalab - Tutorial004_dspic33fI2cCom\r\n");   
    encoder.set_resolution(enc_resolution); 
    encoder.reset();
    pc.printf("Command list:\r\n"
              "r: reset encoder\r\n"
              "e: set encoder resolution, usage: e1024\r\n"
              "p: print encoder values\r\n");
    wait(1); 
    while(1) { 
        toggle(led1);
        ++i; 
        pc.printf("[%3d]Enter command: ",i); 
        pc.scanf("%s", &cmd);
        
        switch (cmd[0]){
            case 'r': {
                pc.printf("Reset encoder\r\n"); 
                encoder.reset();
                break;}
            case 'p': { // print data until enter interrupt
                pc.printf("Reading encoder\r\n"); 
                wait(0.5);
                printer.attach(&printdata, 0.05);           
                pc.getc();
                pc.printf("Stopping Printing\r\n"); 
                printer.detach();
                
                break;}
            case 'e':{ 
                int enc_resolution;
                 
                enc_resolution = extractInt(cmd);
                pc.printf("Set encoder resolution: %d\r\n", enc_resolution); 
                encoder.set_resolution(enc_resolution); 
                break;}
            default:
                break;
        }   
    }
}