Takeuchi Kouichi
/
2ck0114_RMCS08
エレキジャックweb mbed入門 mbed RMCS鉄道模型自動制御システム 課題8です。単線線路の両端に設置したcds光センサ間を列車が往復します。
main.cpp@0:b0e0e432fd3e, 2012-02-13 (annotated)
- Committer:
- takeuchi
- Date:
- Mon Feb 13 02:27:15 2012 +0000
- Revision:
- 0:b0e0e432fd3e
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:b0e0e432fd3e | 1 | // mRMCS08 tansen oufuku |
takeuchi | 0:b0e0e432fd3e | 2 | // mbed RailModelContorolSystem |
takeuchi | 0:b0e0e432fd3e | 3 | |
takeuchi | 0:b0e0e432fd3e | 4 | #include "mbed.h" |
takeuchi | 0:b0e0e432fd3e | 5 | #include "TextLCD0420.h" |
takeuchi | 0:b0e0e432fd3e | 6 | |
takeuchi | 0:b0e0e432fd3e | 7 | #define ON 1 |
takeuchi | 0:b0e0e432fd3e | 8 | #define OFF 0 |
takeuchi | 0:b0e0e432fd3e | 9 | #define XON 0 |
takeuchi | 0:b0e0e432fd3e | 10 | #define XOFF 1 |
takeuchi | 0:b0e0e432fd3e | 11 | |
takeuchi | 0:b0e0e432fd3e | 12 | DigitalOut mled1(LED1); |
takeuchi | 0:b0e0e432fd3e | 13 | DigitalOut mled2(LED2); |
takeuchi | 0:b0e0e432fd3e | 14 | DigitalOut mled3(LED3); |
takeuchi | 0:b0e0e432fd3e | 15 | DigitalOut mled4(LED4); |
takeuchi | 0:b0e0e432fd3e | 16 | AnalogIn vr1_adc(p15); |
takeuchi | 0:b0e0e432fd3e | 17 | AnalogIn vr2_adc(p16); |
takeuchi | 0:b0e0e432fd3e | 18 | DigitalIn sens1(p17); |
takeuchi | 0:b0e0e432fd3e | 19 | DigitalIn sens2(p18); |
takeuchi | 0:b0e0e432fd3e | 20 | DigitalIn sens3(p19); |
takeuchi | 0:b0e0e432fd3e | 21 | PwmOut r1_pwm(p22); |
takeuchi | 0:b0e0e432fd3e | 22 | PwmOut r2_pwm(p23); |
takeuchi | 0:b0e0e432fd3e | 23 | DigitalOut po10(p5); |
takeuchi | 0:b0e0e432fd3e | 24 | DigitalOut po11(p6); |
takeuchi | 0:b0e0e432fd3e | 25 | DigitalOut po20(p7); |
takeuchi | 0:b0e0e432fd3e | 26 | DigitalOut po21(p8); |
takeuchi | 0:b0e0e432fd3e | 27 | |
takeuchi | 0:b0e0e432fd3e | 28 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 |
takeuchi | 0:b0e0e432fd3e | 29 | |
takeuchi | 0:b0e0e432fd3e | 30 | float pduty,pduty_slow; |
takeuchi | 0:b0e0e432fd3e | 31 | |
takeuchi | 0:b0e0e432fd3e | 32 | void notch(float duty){ |
takeuchi | 0:b0e0e432fd3e | 33 | r1_pwm.write(duty); |
takeuchi | 0:b0e0e432fd3e | 34 | r2_pwm.write(0); |
takeuchi | 0:b0e0e432fd3e | 35 | } |
takeuchi | 0:b0e0e432fd3e | 36 | |
takeuchi | 0:b0e0e432fd3e | 37 | void r_notch(float duty){ |
takeuchi | 0:b0e0e432fd3e | 38 | r1_pwm.write(0); |
takeuchi | 0:b0e0e432fd3e | 39 | r2_pwm.write(duty); |
takeuchi | 0:b0e0e432fd3e | 40 | } |
takeuchi | 0:b0e0e432fd3e | 41 | |
takeuchi | 0:b0e0e432fd3e | 42 | int main() { |
takeuchi | 0:b0e0e432fd3e | 43 | int i,count,ressha; |
takeuchi | 0:b0e0e432fd3e | 44 | float pduty; |
takeuchi | 0:b0e0e432fd3e | 45 | r1_pwm.pulsewidth(0.000001);//1us=0.000001 |
takeuchi | 0:b0e0e432fd3e | 46 | r1_pwm.period(0.00001);//1ms=0.001s |
takeuchi | 0:b0e0e432fd3e | 47 | r2_pwm.pulsewidth(0.000001);//1us=0.000001 |
takeuchi | 0:b0e0e432fd3e | 48 | r2_pwm.period(0.00001);//1ms=0.001s |
takeuchi | 0:b0e0e432fd3e | 49 | |
takeuchi | 0:b0e0e432fd3e | 50 | count=0; |
takeuchi | 0:b0e0e432fd3e | 51 | lcd.cls(); |
takeuchi | 0:b0e0e432fd3e | 52 | lcd.locate(0,0); |
takeuchi | 0:b0e0e432fd3e | 53 | lcd.printf("** mbed RMCS08 **"); |
takeuchi | 0:b0e0e432fd3e | 54 | |
takeuchi | 0:b0e0e432fd3e | 55 | while(1){ |
takeuchi | 0:b0e0e432fd3e | 56 | pduty=vr1_adc.read(); |
takeuchi | 0:b0e0e432fd3e | 57 | notch(pduty); |
takeuchi | 0:b0e0e432fd3e | 58 | wait(1.0); |
takeuchi | 0:b0e0e432fd3e | 59 | while(sens1==XOFF){ |
takeuchi | 0:b0e0e432fd3e | 60 | pduty=vr1_adc.read(); |
takeuchi | 0:b0e0e432fd3e | 61 | notch(pduty); |
takeuchi | 0:b0e0e432fd3e | 62 | lcd.locate(0,1); |
takeuchi | 0:b0e0e432fd3e | 63 | lcd.printf("d:%3.0f%%",pduty*100); |
takeuchi | 0:b0e0e432fd3e | 64 | lcd.locate(0,2); |
takeuchi | 0:b0e0e432fd3e | 65 | lcd.printf(" notch ON!"); |
takeuchi | 0:b0e0e432fd3e | 66 | } |
takeuchi | 0:b0e0e432fd3e | 67 | notch(0); |
takeuchi | 0:b0e0e432fd3e | 68 | lcd.locate(0,1); |
takeuchi | 0:b0e0e432fd3e | 69 | lcd.printf("d:%3.0f%%",0); |
takeuchi | 0:b0e0e432fd3e | 70 | lcd.locate(0,2); |
takeuchi | 0:b0e0e432fd3e | 71 | lcd.printf("Teishachu!!"); |
takeuchi | 0:b0e0e432fd3e | 72 | wait(5.0); |
takeuchi | 0:b0e0e432fd3e | 73 | pduty=vr2_adc.read(); |
takeuchi | 0:b0e0e432fd3e | 74 | r_notch(pduty); |
takeuchi | 0:b0e0e432fd3e | 75 | wait(1.0); |
takeuchi | 0:b0e0e432fd3e | 76 | while(sens2==XOFF){ |
takeuchi | 0:b0e0e432fd3e | 77 | pduty=vr2_adc.read(); |
takeuchi | 0:b0e0e432fd3e | 78 | r_notch(pduty); |
takeuchi | 0:b0e0e432fd3e | 79 | lcd.locate(0,1); |
takeuchi | 0:b0e0e432fd3e | 80 | lcd.printf("d:%3.0f%%",pduty*100); |
takeuchi | 0:b0e0e432fd3e | 81 | lcd.locate(0,2); |
takeuchi | 0:b0e0e432fd3e | 82 | lcd.printf("r_notch ON!"); |
takeuchi | 0:b0e0e432fd3e | 83 | |
takeuchi | 0:b0e0e432fd3e | 84 | } |
takeuchi | 0:b0e0e432fd3e | 85 | notch(0); |
takeuchi | 0:b0e0e432fd3e | 86 | wait(3.0); |
takeuchi | 0:b0e0e432fd3e | 87 | }//while |
takeuchi | 0:b0e0e432fd3e | 88 | |
takeuchi | 0:b0e0e432fd3e | 89 | }//main |