White Wizard Board Wireless Oscilloscope sample program. PC program is here. http://www.wizard.nestegg.jp/

Dependencies:   mbed

main.cpp

Committer:
halfpitch
Date:
2011-08-24
Revision:
0:ff25f1727cb9

File content as of revision 0:ff25f1727cb9:

#include "mbed.h"

Serial rn42(p9,p10);
//Serial rn42(p28,p27); // tx, rx
DigitalOut myled1(LED1);
DigitalOut myled2(LED2);
DigitalOut myled3(LED3);
DigitalOut myled4(LED4);

AnalogIn ad(p20);
AnalogOut da(p18);

Ticker flipper;

int AD_now, AD_before;
int ADdata[200];
int i1;
bool flg_save;
bool flg_finish_saving;

int flg_mode;   //trigger mode
int trigger_y;


int flip_counter;

void flip() {
    //printf("flg_save = %d, flg_finish_saving = %d, flg_mode = %c, trigger_y = %d",flg_save, flg_finish_saving, flg_mode, trigger_y);
    //DA out
        //da = (float)flip_counter * 0.01;
        da = sin(((float)flip_counter*4.0 / 180.0) * 3.14)*0.5+0.5;
        ++flip_counter;
        
    if(flip_counter<90){
        ;
    }else{
        flip_counter=0;
    }
    
    //AD comvert
    AD_now = (int)(ad.read()*3300.0);     //return mV
    
    if(flg_save == 1){  //saving mode
        if(i1 < 100){
            flg_finish_saving = 0;
            ADdata[i1] = AD_now;     //return uV
            myled1 = !myled1;
            ++i1;
            //printf("%d\n",i1);
        }else{
            i1 = 0;
            flg_finish_saving = 1;
            flg_save = 0; //break saving mode
            
            //printf("flg_finish_saving = 1");
            myled4 = !myled4;
        }
    }
    
    //check trigger
    //printf("flg_save = %d, flg_finish_saving = %d, flg_mode = %d\n",flg_save,flg_finish_saving,flg_mode);
    if((flg_save == 0)&&(flg_finish_saving == 0)){
        if(flg_mode == 1){    //up
            if((trigger_y > AD_before)&&(trigger_y < AD_now)){
                flg_save = 1;
                myled2 = !myled2;
                ADdata[0] = AD_before; 
                ADdata[1] = AD_now;
                i1 = 2;
               
            }
        }else if(flg_mode == 2){  //down
            if((trigger_y < AD_before)&&(trigger_y > AD_now)){
                flg_save = 1;
                myled2 = !myled2;
                ADdata[0] = AD_before; 
                ADdata[1] = AD_now;
                i1 = 2;
            }
        }else if(flg_mode == 0){ //stop
            //do nothing
        }
    }
    
    //printf("flg_save = %d, flg_finish_saving = %d, flg_mode = %d\n",flg_save,flg_finish_saving,flg_mode);
    
    AD_before = AD_now;
    myled3 = !myled3;
}


int main() {
    //char input[100];
    rn42.baud(115200);
    myled1 = 0;
    myled2 = 0;
        
    int j=0;
    
    flipper.attach_us(&flip, 1000); // the address of the function to be attached (flip) and the interval
    //flipper.attach(&flip, 1);
    printf("start\n");
    
    // echo back characters, toggle the LED
    while (1) {
        if (rn42.readable()) {
           int n = rn42.scanf("T%dV%d", &flg_mode, &trigger_y);
           printf("T%dV%d\n", flg_mode, trigger_y);
           rn42.getc();//These getc() are for stopping scanf().
           rn42.getc();
           //printf("T%dV%d\n", flg_mode, trigger_y);
        }
        
        
        if(flg_finish_saving==1){
            while(j<100){
                if(rn42.writeable()){
                printf("%d,%d\n\r", j,ADdata[j]);
                rn42.printf("%d,\n\r", ADdata[j]);
                ++j;
            
                if(j>=100){
                //flg reset
                    printf("END\n\r");
                    rn42.printf("END\n\r");
                    flg_finish_saving = 0;
                    flg_mode = 0;
                    flg_save = 0;
                    
                    
                    myled1 = 0;
                    myled2 = 0;
                    myled3 = 0;
                    myled4 = 0;
                
                }
                }
            
            }
                
            j = 0;
        }
    }
}