エレキジャックweb mbed入門 mbed RMCS鉄道模型自動制御システム 課題8です。単線線路の両端に設置したcds光センサ間を列車が往復します。

Dependencies:   mbed

Committer:
takeuchi
Date:
Mon Feb 13 02:27:15 2012 +0000
Revision:
0:b0e0e432fd3e

        

Who changed what in which revision?

UserRevisionLine numberNew 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