test program

Dependencies:   mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
lokitsyu
Date:
Sat Jul 13 05:17:34 2013 +0000
Parent:
0:3137e34fc9fa
Child:
2:906c20c9d15e
Commit message:
bjh

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Jun 20 20:08:32 2013 +0000
+++ b/main.cpp	Sat Jul 13 05:17:34 2013 +0000
@@ -1,48 +1,117 @@
+/*this program is written for multicoptor project
+ *Developper :lokitsyu azlab
+ *mbed.org
+ *AC-room
+ *mltcptdrv filename:main.cpp
+ *using gyro senser ITG-3200
+ */
+
 #include "mbed.h"
-#include "rtos.h"
+
+InterruptIn unit(p8);
+I2C i2c(p28,p27);
+Ticker timer;
+
+
+int addr[4]={
+    0x20, 0x21, 0x22, 0x23
+};//motor driver address
+
+int outval_1, outval_2, outval_3, outval_4;
+int outval[4] = {
+    outval_1, outval_2, outval_3, outval_4
+};//output value
 
 
-Interrupt unit(p8);
-
-DigitalOut motors[4] = {
-    DigitalOut(p21),DigitalOut(p22),DigitalOut(p23), DigitalOut(p24)
+//////////////////////////////////////////////////////////////
+//Gyro class
+//////////////////////////////////////////////////////////////
+class Gyro{
+    private:
+        int ax_1, ax_2, ax_3, 
+            ay_1, ay_2, ay_3, 
+            az_1, az_2, az_3;
+        float ax, ay, az;        //angr value
+    public:
+        void get();
+        void set();
+        void calc();
+        void simpson();
 };
+//get gyro value
+void Gyro::get()
+{
+    int i = 0;
+        i2c.start();
+    if(i2c.write(11010001)==1){
+        i2c.write();
+        i2c.start();
+        ax_1 = i2c.read();
+        i2c.stop();
+    }else{
+        i2c.stop();
+        i = !i;
+    }
+    if(i == 0){
+        ax_1 = ax_1 << 8;
+        i2c.start();
+        i2c.write(11010001);
+        i2c.write();
+        i2c.start();
+        ax_1 = ax_1 + i2c.read();
+        i2c.stop();
+    }else{}
+}
 
-void get_gyro(){}
+//setting gyro sencer
+void Gyro::set()
+{
+}
 
-//motor drive control funciton
-void motordrv(void const *n, int outval){
-    motors[(int)n] = 1;
-    void wait_us(1000 + outval);
-    motors[(int)n] = 0;
+void Gyro::calc()
+{
+}
+
+void Gyro::simpson()
+{
 }
 
 
+///////////////////////////////////////////////////////////////////////
+//motor drive control funciton
+///////////////////////////////////////////////////////////////////////
+void motordrv()
+{
+    for(int i=0;i<4;i++)
+    {
+        i2c.start();
+        i2c.write(addr[i],outval[i],1);
+        i2c.stop();
+    }
+}
 
+///////////////////////////////////////////////////////////////////////
 //main function
+///////////////////////////////////////////////////////////////////////
 int main() {
-    unit.fall(&get_gyro)
+    Gyro gyro;
     
-    RtosTimer drv_1_timer(motordrv, osTimerPeriodic, (void *)0);
-    RtosTimer drv_2_timer(motordrv, osTimerPeriodic, (void *)1);
-    RtosTimer drv_3_timer(motordrv, osTimerPeriodic, (void *)2);
-    RtosTimer drv_4_timer(motordrv, osTimerPeriodic, (void *)3);
+    i2c.frequency(400000);
+    unit.mode(PullUp);
+    unit.fall(&gyro,&Gyro::get);
+    timer.attach_us(&motordrv,10000);
     
-    drv_1_timer.start(20);
-    drv_2_timer.start(20);
-    drv_3_timer.start(20);
-    drv_4_timer.start(20);
-    
+    gyro.set();
     
     //main loop
     while(1) {
-    /*
+        gyro.calc();
+        /*
     
     
-    Write Program on This Space
-    
+         Write Program on This Space
+        
     
-    
-    */    
+        */    
     }
 }