ticker implemented

Dependencies:   mbed mbed-rtos

Files at this revision

API Documentation at this revision

Comitter:
mfurukawa
Date:
Fri Aug 28 14:06:17 2020 +0000
Parent:
3:1e1a29557d8e
Commit message:
confirmed pulse width changing via p26;

Changed in this revision

jikken.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 1e1a29557d8e -r 0a12973cf24a jikken.cpp
--- a/jikken.cpp	Fri Aug 28 08:49:45 2020 +0000
+++ b/jikken.cpp	Fri Aug 28 14:06:17 2020 +0000
@@ -8,15 +8,9 @@
 PwmOut servo4(p25);//θ4 pin
 PwmOut servo5(p26);//θ5 pin
 
-//for plogram check
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
-
 Serial pc(USBTX, USBRX);
 #define SampleFreq   60   // [Hz]
-Ticker          ticker;
+//Ticker          ticker;
 FILE* fp;
 
 int cnt;
@@ -25,6 +19,7 @@
 
 float aOut, bOut, cOut, dOut, eOut, fOut;//J123456 degree
 int pw0, pw1, pw2, pw3, pw4, pw5;//Output Pulse Width
+float* pOut[6];
 
 //degree to PulseWidth
 int cal_input0(float arg) {
@@ -72,26 +67,16 @@
     cal_pw();
     send_servo();
 }
-
-void move_attach()
-{
-    led3=0.0;
-    //fscanf(fp, "%f,%f,%f\n",&Out[i][0],&Out[i][1],&Out[i][2]);
-    if(fp!=NULL or cnt<2548)
-        fscanf(fp, "%f,%f,%f\n",&aOut,&bOut,&cOut);
-    cnt++;
-    led3=1.0;
-    dOut = 0.0;
-    eOut = 0.0;
-    fOut = 0.0;
-    move();
-}
 int main(void)
 {
-    //pc.baud(115200);
-    //pc.format(8, Serial::None, 1);
-    //pc.printf("start\n");
-    float w = 60.0;//========Control Frequency===========
+    //===============ボーレート=============
+    pc.baud(921600);
+    pc.format(8, Serial::None, 1);
+
+    char rbuf[4];
+    
+    //========Control Frequency===========
+    float w = 60.0;
     float PWMperiod = 1.0 / w;  
     
     servo0.period(PWMperiod);
@@ -100,43 +85,31 @@
     servo3.period(PWMperiod);
     servo4.period(PWMperiod);
     servo5.period(PWMperiod);
-
-    led4=1.0;
-    //float Out[2548][3];
-    led2=1.0;
+        
+    // store pointer
+    pOut[0] = &aOut;
+    pOut[1] = &bOut;
+    pOut[2] = &cOut;
+    pOut[3] = &dOut;
+    pOut[4] = &eOut;
+    pOut[5] = &fOut;
+    
+    while (1) {
+        //動かす関数        
+        move();
+        
+        if (pc.readable()) {
+            if (pc.getc() != '*') continue;
+            if (pc.getc() != '+') continue;
+            for (int i = 0; i < 6; i++) {
+                for (int b = 0; b < 4; b++)
+                    rbuf[b] = pc.getc();
 
-    char fname[] ="/local/xy14.csv";
-    fp = fopen(fname, "r");
-    if (fp == NULL)
-    {
-        led1 = 1.0;
-        led2 = 1.0;
-        led3 = 1.0;
-        led4 = 1.0;
-        //pc.printf("error\n");
+                // ( 4 bytes -> one float )
+                float const* f = reinterpret_cast<float const*>(rbuf);
+                *pOut[i] = *f;
+            }
+        }
+
     }
-    else
-    {
-        led3=1.0;
-        //pc.printf("moving\n");
-        cnt = 0;
-        ticker.attach_us(move_attach, 1000000.0f/SampleFreq);
-        //led2=1.0;
-        /*for(i=0;i<2548;i++)
-        {
-            aOut = Out[i][0];
-            bOut = Out[i][1];
-            cOut = Out[i][2];
-            dOut = 0.0;
-            eOut = 0.0;
-            fOut = 0.0;
-            move();
-            wait_ms(0.16);
-        } */ 
-    }
-    led1=1.0;
-    led2=1.0;
-    led3=1.0;
-    led4=1.0;
-    return 0;
 }
\ No newline at end of file