test program
Revision 1:5c6888eb051a, committed 2013-07-13
- 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
+
-
- */
+ */
}
}