Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
petbottleLoading.cpp
00001 #include "petbottleLoading.h" 00002 00003 petbottleLoading::petbottleLoading(): 00004 loadingPid(loadingKP, loadingKI, loadingKD, RATE), 00005 loadingencoder(loadingencoder1_1, loadingencoder1_2 ,NC, 2048, QEI::X4_ENCODING), 00006 RS485control(PA_4), 00007 RS485(MDC_TX,MDC_RX,115200), 00008 // debug(USBTX, USBRX), 00009 limitSW1_(limitswich1_1), 00010 limitSW2_(limitswich1_2), 00011 limitSW3_(limitswich1_3) 00012 { 00013 petbottledrop = new ikarashiMDC(&RS485control,1,0,SM,&RS485); 00014 petbotleslider = new ikarashiMDC(&RS485control,1,1,SM,&RS485); 00015 petbottleIn = new ikarashiMDC(&RS485control,1,2,SM,&RS485); 00016 petbottledrop->braking = true;/*変更*/ 00017 petbotleslider->braking = true;/*変更*/ 00018 petbottleIn->braking = true;/*変更*/ 00019 limitSW1_.mode(PullUp); 00020 limitSW2_.mode(PullUp); 00021 limitSW3_.mode(PullUp); 00022 00023 loadingPid.setMode(AUTO_MODE); 00024 loadingPid.setInputLimits(-10, 2200); 00025 loadingPid.setOutputLimits(-0.9, 0.9); 00026 loadingPid.setBias(0.0); // outputの変わり目 00027 limitSwFlag[2] = 0; 00028 limitSwFlag2[2] = 0; 00029 limitSwFlag[0] = 0; 00030 limitSwFlag2[0] = 0; 00031 sw5flag = 0; 00032 pt.start(); 00033 00034 } 00035 00036 00037 void petbottleLoading::petbottlemode(int loadingmode) 00038 { 00039 nowPals = loadingencoder.getPulses(); 00040 loadingPid.setSetPoint(loadingDistance);// 目標値 00041 loadingPid.setProcessValue(nowPals); 00042 Output_PID = -1.0*loadingPid.compute(); 00043 pdt = pt.read(); 00044 limitSW1 = limitSW1_.read(); 00045 limitSW2 = limitSW2_.read(); 00046 limitSW3 = limitSW3_.read(); 00047 // debug.printf("L1:<%d>, L2:<%d>, L3:<%d>\r\n", limitSW1, limitSW2, limitSW3); 00048 // debug.printf("nowPals<%d>\r\n", nowPals); 00049 00050 if(loadingmode == 0) { 00051 loadingDistance = 0; 00052 petbottledropPwm = 0.0; 00053 petbottleInPwm = 0.0; 00054 } else if(loadingmode == 1) { 00055 limitSwFlag[2] = 0; 00056 limitSwFlag2[2] = 0; 00057 loadingDistance = 875; 00058 if((nowPals - pullDistanceOfset) > 700) { 00059 if(limitSW1 == 1 && limitSwFlag[0] == 0) { 00060 limitSwFlag[0] = 1; 00061 petbottledropPwm = 0.5; 00062 } 00063 if(limitSW1 == 0 && limitSwFlag[0] == 0 &&limitSwFlag2[0] == 0) { 00064 limitSwFlag[0] = 1; 00065 limitSwFlag2[0] = 1; 00066 petbottledropPwm = 0.5 00067 ; 00068 } 00069 if(limitSW1 ==0 && limitSwFlag[0] == 1) limitSwFlag2[0] = 1; 00070 if((limitSwFlag[0] == 1) && (limitSwFlag2[0] == 1) && (limitSW1 == 1))petbottledropPwm = 0.0; 00071 } 00072 } else if(loadingmode == 2) { 00073 limitSwFlag[2] = 0; 00074 limitSwFlag2[2] = 0; 00075 loadingDistance = 1854; 00076 if((nowPals - pullDistanceOfset) > 700) { 00077 if(limitSW1 == 1 && limitSwFlag[0] == 0) { 00078 limitSwFlag[0] = 1; 00079 00080 petbottledropPwm = 0.5; 00081 } 00082 if(limitSW1 == 0 && limitSwFlag[0] == 0 &&limitSwFlag2[0] == 0) { 00083 limitSwFlag[0] = 1; 00084 limitSwFlag2[0] = 1; 00085 petbottledropPwm = 0.5; 00086 } 00087 if(limitSW1 ==0 && limitSwFlag[0] == 1) limitSwFlag2[0] = 1; 00088 if((limitSwFlag[0] == 1) && (limitSwFlag2[0] == 1) && (limitSW1 == 1))petbottledropPwm = 0.0; 00089 } 00090 } else if(loadingmode == 3) { 00091 if(limitSW3 ==1 && limitSwFlag[2] == 0) limitSwFlag[2] = 1,limitSwFlag2[2] = 0 ; 00092 if(limitSW3 ==0 && limitSwFlag[2] == 1) limitSwFlag2[2] = 1; 00093 if(limitSwFlag[2] == 1 && limitSwFlag2[2] == 1) { 00094 if(limitSW3 ==1) { 00095 petbottleInPwm = 0.0; 00096 loadingDistance = 0; 00097 petbottleInPwm = 0.0; 00098 if((nowPals - pullDistanceOfset) < 15) { 00099 if(limitSW1 == 1 && limitSwFlag[0] == 1) { 00100 limitSwFlag[0] = 0; 00101 petbottledropPwm = 0.5; 00102 } 00103 if(limitSW1 == 0 && limitSwFlag[0] == 1 &&limitSwFlag2[0] == 1) { 00104 limitSwFlag[0] = 0; 00105 limitSwFlag2[0] = 0; 00106 petbottledropPwm = 0.45; 00107 } 00108 if(limitSW1 ==0 && limitSwFlag[0] == 0) limitSwFlag2[0] = 0; 00109 if((limitSwFlag[0] == 0) && (limitSwFlag2[0] == 0) && (limitSW1 == 1))petbottledropPwm = 0.0; 00110 } 00111 } 00112 } else { 00113 if((nowPals - pullDistanceOfset) > 700)petbottleInPwm = -0.5; 00114 } 00115 } else { 00116 petbottledropPwm = 0.0; 00117 petbottleInPwm = 0.0; 00118 } 00119 petbottledrop->setSpeed(petbottledropPwm); 00120 petbotleslider->setSpeed(Output_PID); 00121 petbottleIn->setSpeed(petbottleInPwm); 00122 } 00123 00124 int petbottleLoading::LoadingEncoder() 00125 { 00126 return nowPals - pullDistanceOfset; 00127 } 00128 00129 int petbottleLoading::state() 00130 { 00131 00132 }
Generated on Wed Jul 13 2022 05:05:47 by
1.7.2