エレキジャックweb mbed入門 mbed RMCS鉄道模型自動制御システム 課題10です。単線ですが、ポイントを一つ設置して2列車を交互運転できるレイアウトです3アクティブ光センサ、1ポイントを設置しています。コンパクトに小型アルミトランクに組み込みました。
main.cpp
00001 // mRMCS10 Active sensor 00002 // Trunk rayout tansen oufuku 00003 // mbed RailModelContorolSystem 00004 00005 #include "mbed.h" 00006 #include "TextLCD0420.h" 00007 00008 #define ON 1 00009 #define OFF 0 00010 #define XON 0 00011 #define XOFF 1 00012 00013 DigitalOut mled1(LED1); 00014 DigitalOut mled2(LED2); 00015 DigitalOut mled3(LED3); 00016 DigitalOut mled4(LED4); 00017 AnalogIn vr1_adc(p15); 00018 AnalogIn vr2_adc(p16); 00019 DigitalIn sens1(p17); 00020 DigitalIn sens2(p18); 00021 DigitalIn sens3(p19); 00022 PwmOut r1_pwm(p22); 00023 PwmOut r2_pwm(p23); 00024 DigitalOut po10(p5); 00025 DigitalOut po11(p6); 00026 DigitalOut po20(p7); 00027 DigitalOut po21(p8); 00028 DigitalIn Asens1(p9); 00029 DigitalIn Asens2(p10); 00030 DigitalIn Asens3(p11); 00031 00032 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 00033 00034 float pduty,pduty_slow; 00035 00036 void notch(float duty){ 00037 r1_pwm.write(duty); 00038 r2_pwm.write(0); 00039 } 00040 00041 void r_notch(float duty){ 00042 r1_pwm.write(0); 00043 r2_pwm.write(duty); 00044 } 00045 00046 void point1(int x){ 00047 if(x==0){ 00048 po10=ON; 00049 po11=OFF; 00050 wait(0.2); 00051 po10=OFF; 00052 po11=OFF; 00053 } 00054 else if(x==1){ 00055 po10=OFF; 00056 po11=ON; 00057 wait(0.2); 00058 po10=OFF; 00059 po11=OFF; 00060 } 00061 } 00062 00063 int main() { 00064 int i,count,ressha,init_sts; 00065 float pduty; 00066 r1_pwm.pulsewidth(0.000001);//1us=0.000001 00067 r1_pwm.period(0.00001);//1ms=0.001s 00068 r2_pwm.pulsewidth(0.000001);//1us=0.000001 00069 r2_pwm.period(0.00001);//1ms=0.001s 00070 00071 lcd.cls(); 00072 lcd.locate(0,0); 00073 lcd.printf("Set Train on rail!!"); 00074 lcd.locate(0,1); 00075 lcd.printf("==>Sns1:XON,Sns2:XON"); 00076 00077 notch(0); 00078 init_sts=1; 00079 ressha=0; 00080 while(init_sts==1){ 00081 if(Asens1==XON && Asens2==XON){ 00082 lcd.cls(); 00083 lcd.locate(0,0); 00084 lcd.printf("** mbed RMCS **"); 00085 lcd.locate(0,1); 00086 lcd.printf("> Pse Main pwr on!"); 00087 lcd.locate(0,1); 00088 lcd.printf("> System start ..."); 00089 wait(1.0); 00090 point1(0); 00091 wait(1.0); 00092 point1(1); 00093 wait(1.0); 00094 point1(0); 00095 wait(1.0); 00096 init_sts=0; 00097 } 00098 } 00099 00100 lcd.cls(); 00101 lcd.locate(0,0); 00102 lcd.printf("** mbed RMCS10 **"); 00103 00104 while(1){ 00105 00106 lcd.locate(0,3); 00107 lcd.printf("Point1 0"); 00108 point1(0); 00109 00110 pduty=vr1_adc.read(); 00111 r_notch(pduty); 00112 wait(1.0); 00113 while(Asens3==XOFF){ 00114 pduty=vr1_adc.read(); 00115 r_notch(pduty); 00116 lcd.locate(0,1); 00117 lcd.printf("d:%3.0f%%",pduty*100); 00118 lcd.locate(0,2); 00119 lcd.printf("E:001 r_notch ON!"); 00120 } 00121 r_notch(0); 00122 lcd.locate(0,1); 00123 lcd.printf("d:%3.0f%%",0); 00124 lcd.locate(0,2); 00125 lcd.printf("E:001 Teishachu!!"); 00126 wait(5.0); 00127 pduty=vr1_adc.read(); 00128 notch(pduty); 00129 wait(1.0); 00130 while(Asens1==XOFF){ 00131 pduty=vr1_adc.read(); 00132 notch(pduty); 00133 lcd.locate(0,1); 00134 lcd.printf("d:%3.0f%%",pduty*100); 00135 lcd.locate(0,2); 00136 lcd.printf("E:001 notch ON! "); 00137 00138 } 00139 notch(0); 00140 wait(3.0); 00141 00142 lcd.locate(0,3); 00143 lcd.printf("Point1 1"); 00144 00145 point1(1); 00146 wait(1.0); 00147 pduty=vr2_adc.read(); 00148 r_notch(pduty); 00149 wait(1.0); 00150 while(Asens3==XOFF){ 00151 pduty=vr2_adc.read(); 00152 r_notch(pduty); 00153 lcd.locate(0,1); 00154 lcd.printf("d:%3.0f%%",pduty*100); 00155 lcd.locate(0,2); 00156 lcd.printf("E:002 r_notch ON!"); 00157 } 00158 r_notch(0); 00159 lcd.locate(0,1); 00160 lcd.printf("d:%3.0f%%",0); 00161 lcd.locate(0,2); 00162 lcd.printf("E:002 Teishachu!!"); 00163 wait(5.0); 00164 pduty=vr2_adc.read(); 00165 notch(pduty); 00166 wait(1.0); 00167 while(Asens2==XOFF){ 00168 pduty=vr2_adc.read(); 00169 notch(pduty); 00170 lcd.locate(0,1); 00171 lcd.printf("d:%3.0f%%",pduty*100); 00172 lcd.locate(0,2); 00173 lcd.printf("E:002 notch ON! "); 00174 00175 } 00176 notch(0); 00177 wait(3.0); 00178 }//while 00179 00180 }//main
Generated on Sat Jul 30 2022 23:13:13 by 1.7.2