mbedを用いた制御学生の制御 / Mbed 2 deprecated NHK2015

Dependencies:   Motor_NIT_Nagaoka_College PID Servo QEI SoftPWM mbed HBridge

Committer:
WAT34
Date:
Thu Aug 06 14:24:04 2015 +0000
Revision:
2:74c543a0a671
Parent:
1:107a7d8f4c54
Child:
3:d2c733b52600
?????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WAT34 0:00fcc71314cf 1 #define pi 3.141592
WAT34 0:00fcc71314cf 2 #include "mbed.h"
WAT34 0:00fcc71314cf 3 #include "rtos.h"
WAT34 0:00fcc71314cf 4 #include "QEI.h"
WAT34 0:00fcc71314cf 5 #include "Motor.h"
WAT34 0:00fcc71314cf 6 #include "HMC6352.h"
WAT34 0:00fcc71314cf 7 BusOut air(p15,p16);
WAT34 2:74c543a0a671 8 Serial conn(p28,p27);
WAT34 2:74c543a0a671 9 Serial pc(USBTX,USBRX);
WAT34 0:00fcc71314cf 10 BusOut mypaul(p17,p18);
WAT34 2:74c543a0a671 11 BusIn sw(p24,p25);
WAT34 0:00fcc71314cf 12 Motor od(p21,p19,p20);
WAT34 1:107a7d8f4c54 13 Motor ot(p22,p12,p11);
WAT34 2:74c543a0a671 14 QEI sensort(p29,p30,NC,624);
WAT34 0:00fcc71314cf 15 HMC6352 sensord(p9,p10);
WAT34 0:00fcc71314cf 16 char read;
WAT34 2:74c543a0a671 17 int main()
WAT34 0:00fcc71314cf 18 {
WAT34 2:74c543a0a671 19 //sensord.setOpMode(HMC6352_CONTINUOUS,1,20);
WAT34 2:74c543a0a671 20 double direct = 0,tilt = 0,cdirect = 0,adirect = 0,tdirect = 0,ttilt =0,itilt=0;
WAT34 2:74c543a0a671 21 //tdirect = sensord.sample()/10.0;
WAT34 2:74c543a0a671 22 sw.mode(PullUp);
WAT34 0:00fcc71314cf 23 while(1) {
WAT34 0:00fcc71314cf 24 if(conn.readable()) {
WAT34 0:00fcc71314cf 25 read = conn.getc();
WAT34 0:00fcc71314cf 26 }
WAT34 0:00fcc71314cf 27 air = read%4;
WAT34 0:00fcc71314cf 28 mypaul = (read>>2)%4;
WAT34 2:74c543a0a671 29 if((read>>4)%2 || 0/*sw == 2*/) {
WAT34 2:74c543a0a671 30 //tdirect++;
WAT34 2:74c543a0a671 31 od.speed(0.3);
WAT34 2:74c543a0a671 32 } else if((read>>5)%2 ||0 /*sw == 1*/) {
WAT34 2:74c543a0a671 33 //tdirect--;
WAT34 2:74c543a0a671 34 od.speed(-0.3);
WAT34 2:74c543a0a671 35 } else {
WAT34 2:74c543a0a671 36 od.speed(0);
WAT34 0:00fcc71314cf 37 }
WAT34 2:74c543a0a671 38 if((read>>6)%2|| sw == 2 ) {
WAT34 2:74c543a0a671 39 //ttilt+=pi/180.0*0.01;
WAT34 2:74c543a0a671 40 ot.speed(0.3);
WAT34 2:74c543a0a671 41 } else if((read>>7)%2 || sw == 1) {
WAT34 2:74c543a0a671 42 //ttilt-=pi/180.0*0.01;
WAT34 2:74c543a0a671 43 ot.speed(-0.3);
WAT34 2:74c543a0a671 44 } else {
WAT34 2:74c543a0a671 45 ot.speed(0);
WAT34 0:00fcc71314cf 46 }
WAT34 2:74c543a0a671 47 if(tdirect >= 180 ||tdirect <= -180) {
WAT34 2:74c543a0a671 48 //tdirect *= -1;
WAT34 0:00fcc71314cf 49 }
WAT34 2:74c543a0a671 50 //cdirect = sensord.sample()/10.0;
WAT34 2:74c543a0a671 51 direct = cdirect+540-tdirect;
WAT34 0:00fcc71314cf 52 direct = int(direct+0.5)%360;
WAT34 0:00fcc71314cf 53 direct -= 180;
WAT34 2:74c543a0a671 54 //tilt = sensort.getPulses()/360.0/25.0*pi;
WAT34 2:74c543a0a671 55 pc.printf("%d\n\r",read);
WAT34 2:74c543a0a671 56 //od.speed(cdirect);
WAT34 2:74c543a0a671 57 //ot.speed((ttilt-tilt)*1.0+itilt*0.01);
WAT34 2:74c543a0a671 58 itilt += ttilt-tilt;
WAT34 0:00fcc71314cf 59 }
WAT34 0:00fcc71314cf 60 }