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.
main.cpp@0:43b0efef866f, 2010-12-01 (annotated)
- Committer:
- guruimage
- Date:
- Wed Dec 01 02:48:07 2010 +0000
- Revision:
- 0:43b0efef866f
genenral loop program for hw2
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| guruimage | 0:43b0efef866f | 1 | |
| guruimage | 0:43b0efef866f | 2 | #include "mbed.h" |
| guruimage | 0:43b0efef866f | 3 | //input from sensor function work well!!!!! |
| guruimage | 0:43b0efef866f | 4 | #define numsamples 1 |
| guruimage | 0:43b0efef866f | 5 | |
| guruimage | 0:43b0efef866f | 6 | int twoSensor(void); |
| guruimage | 0:43b0efef866f | 7 | void HostConfig(void); |
| guruimage | 0:43b0efef866f | 8 | void sensorInput(void); |
| guruimage | 0:43b0efef866f | 9 | |
| guruimage | 0:43b0efef866f | 10 | AnalogIn input1(p20); |
| guruimage | 0:43b0efef866f | 11 | DigitalIn charger(p19); |
| guruimage | 0:43b0efef866f | 12 | DigitalOut ground(p18); |
| guruimage | 0:43b0efef866f | 13 | |
| guruimage | 0:43b0efef866f | 14 | |
| guruimage | 0:43b0efef866f | 15 | AnalogIn input2(p17); |
| guruimage | 0:43b0efef866f | 16 | DigitalIn charger2(p16); |
| guruimage | 0:43b0efef866f | 17 | DigitalOut ground2(p15); |
| guruimage | 0:43b0efef866f | 18 | |
| guruimage | 0:43b0efef866f | 19 | Serial pc(USBTX, USBRX); // tx, rx |
| guruimage | 0:43b0efef866f | 20 | |
| guruimage | 0:43b0efef866f | 21 | int ConfigReady =0; |
| guruimage | 0:43b0efef866f | 22 | int Count = 0; |
| guruimage | 0:43b0efef866f | 23 | int data[5] ={3,3,3,3,3}; |
| guruimage | 0:43b0efef866f | 24 | char input[100]; |
| guruimage | 0:43b0efef866f | 25 | int i = 0; |
| guruimage | 0:43b0efef866f | 26 | int sensor1EN=0; |
| guruimage | 0:43b0efef866f | 27 | int match=0; |
| guruimage | 0:43b0efef866f | 28 | int sensor2EN=0; |
| guruimage | 0:43b0efef866f | 29 | int num=0; |
| guruimage | 0:43b0efef866f | 30 | int off=0; |
| guruimage | 0:43b0efef866f | 31 | int errorON=0; |
| guruimage | 0:43b0efef866f | 32 | char config[100]; |
| guruimage | 0:43b0efef866f | 33 | char temp; |
| guruimage | 0:43b0efef866f | 34 | |
| guruimage | 0:43b0efef866f | 35 | int startIn=1; |
| guruimage | 0:43b0efef866f | 36 | int output=0; |
| guruimage | 0:43b0efef866f | 37 | |
| guruimage | 0:43b0efef866f | 38 | |
| guruimage | 0:43b0efef866f | 39 | int main() { |
| guruimage | 0:43b0efef866f | 40 | for (i=0;i<100;i++) |
| guruimage | 0:43b0efef866f | 41 | { |
| guruimage | 0:43b0efef866f | 42 | input[i]='4'; |
| guruimage | 0:43b0efef866f | 43 | config[i]='5'; |
| guruimage | 0:43b0efef866f | 44 | } |
| guruimage | 0:43b0efef866f | 45 | |
| guruimage | 0:43b0efef866f | 46 | while(1) { |
| guruimage | 0:43b0efef866f | 47 | |
| guruimage | 0:43b0efef866f | 48 | HostConfig(); |
| guruimage | 0:43b0efef866f | 49 | sensorInput(); |
| guruimage | 0:43b0efef866f | 50 | int match=1; |
| guruimage | 0:43b0efef866f | 51 | for(i=0;i<Count;i++){ |
| guruimage | 0:43b0efef866f | 52 | |
| guruimage | 0:43b0efef866f | 53 | if(input[i]==config[i]){ |
| guruimage | 0:43b0efef866f | 54 | match=match*1; |
| guruimage | 0:43b0efef866f | 55 | } |
| guruimage | 0:43b0efef866f | 56 | else{ |
| guruimage | 0:43b0efef866f | 57 | match=match*0; |
| guruimage | 0:43b0efef866f | 58 | } |
| guruimage | 0:43b0efef866f | 59 | } |
| guruimage | 0:43b0efef866f | 60 | if (num>0){ |
| guruimage | 0:43b0efef866f | 61 | output=1; |
| guruimage | 0:43b0efef866f | 62 | }else{ |
| guruimage | 0:43b0efef866f | 63 | output=0; |
| guruimage | 0:43b0efef866f | 64 | } |
| guruimage | 0:43b0efef866f | 65 | if((match==1)&&(output==1)&&(num==Count)){ |
| guruimage | 0:43b0efef866f | 66 | pc.printf("MATCH!!"); |
| guruimage | 0:43b0efef866f | 67 | num=0; |
| guruimage | 0:43b0efef866f | 68 | |
| guruimage | 0:43b0efef866f | 69 | } |
| guruimage | 0:43b0efef866f | 70 | for(i=0;i<num;i++){ |
| guruimage | 0:43b0efef866f | 71 | if(input[i]!=config[i]){ |
| guruimage | 0:43b0efef866f | 72 | pc.printf("Your input does NOT MATCH! Please enter your input again!\r\n"); |
| guruimage | 0:43b0efef866f | 73 | |
| guruimage | 0:43b0efef866f | 74 | num=0; |
| guruimage | 0:43b0efef866f | 75 | } |
| guruimage | 0:43b0efef866f | 76 | } |
| guruimage | 0:43b0efef866f | 77 | wait(0.005); |
| guruimage | 0:43b0efef866f | 78 | } |
| guruimage | 0:43b0efef866f | 79 | } |
| guruimage | 0:43b0efef866f | 80 | |
| guruimage | 0:43b0efef866f | 81 | |
| guruimage | 0:43b0efef866f | 82 | void HostConfig(){ |
| guruimage | 0:43b0efef866f | 83 | while(pc.readable()){ |
| guruimage | 0:43b0efef866f | 84 | |
| guruimage | 0:43b0efef866f | 85 | temp=pc.getc(); |
| guruimage | 0:43b0efef866f | 86 | if (temp == 'S'){ |
| guruimage | 0:43b0efef866f | 87 | ConfigReady=1; |
| guruimage | 0:43b0efef866f | 88 | Count=0; |
| guruimage | 0:43b0efef866f | 89 | } |
| guruimage | 0:43b0efef866f | 90 | if (temp=='E'){ |
| guruimage | 0:43b0efef866f | 91 | ConfigReady=0; |
| guruimage | 0:43b0efef866f | 92 | pc.printf("You have input a string:"); |
| guruimage | 0:43b0efef866f | 93 | for(i=0;i<Count;i++){ |
| guruimage | 0:43b0efef866f | 94 | pc.printf("%c",config[i]); |
| guruimage | 0:43b0efef866f | 95 | } |
| guruimage | 0:43b0efef866f | 96 | pc.printf("! Please enter the %dbit sensor input!\r\n", Count); |
| guruimage | 0:43b0efef866f | 97 | } |
| guruimage | 0:43b0efef866f | 98 | |
| guruimage | 0:43b0efef866f | 99 | if ((ConfigReady==1)&&((temp=='1')||(temp=='0')||(temp==' ')||(temp=='S'))){ |
| guruimage | 0:43b0efef866f | 100 | if((temp=='1')||(temp=='0')){ |
| guruimage | 0:43b0efef866f | 101 | config[Count]=temp; |
| guruimage | 0:43b0efef866f | 102 | Count++; |
| guruimage | 0:43b0efef866f | 103 | } |
| guruimage | 0:43b0efef866f | 104 | }else if(ConfigReady==1){ |
| guruimage | 0:43b0efef866f | 105 | pc.printf("HOST ERROR!\r\n"); |
| guruimage | 0:43b0efef866f | 106 | } |
| guruimage | 0:43b0efef866f | 107 | } |
| guruimage | 0:43b0efef866f | 108 | } |
| guruimage | 0:43b0efef866f | 109 | |
| guruimage | 0:43b0efef866f | 110 | |
| guruimage | 0:43b0efef866f | 111 | void sensorInput(void){ |
| guruimage | 0:43b0efef866f | 112 | |
| guruimage | 0:43b0efef866f | 113 | for (i=0;i<=3;i++){ |
| guruimage | 0:43b0efef866f | 114 | data[i]=data[i+1]; |
| guruimage | 0:43b0efef866f | 115 | } |
| guruimage | 0:43b0efef866f | 116 | data[4]=twoSensor(); |
| guruimage | 0:43b0efef866f | 117 | off=1; |
| guruimage | 0:43b0efef866f | 118 | for (i=0;i<=4;i++){ |
| guruimage | 0:43b0efef866f | 119 | if (data[i]==3){ |
| guruimage | 0:43b0efef866f | 120 | off=off*1; |
| guruimage | 0:43b0efef866f | 121 | }else{ |
| guruimage | 0:43b0efef866f | 122 | off=off*0; |
| guruimage | 0:43b0efef866f | 123 | if(data[i]==2){ |
| guruimage | 0:43b0efef866f | 124 | errorON=1; |
| guruimage | 0:43b0efef866f | 125 | sensor1EN=0; |
| guruimage | 0:43b0efef866f | 126 | sensor2EN=0; |
| guruimage | 0:43b0efef866f | 127 | } |
| guruimage | 0:43b0efef866f | 128 | if(data[i]==0){ |
| guruimage | 0:43b0efef866f | 129 | if(errorON==0){ |
| guruimage | 0:43b0efef866f | 130 | sensor1EN=1; |
| guruimage | 0:43b0efef866f | 131 | } |
| guruimage | 0:43b0efef866f | 132 | } |
| guruimage | 0:43b0efef866f | 133 | if(data[i]==1){ |
| guruimage | 0:43b0efef866f | 134 | if(errorON==0){ |
| guruimage | 0:43b0efef866f | 135 | sensor2EN=1; |
| guruimage | 0:43b0efef866f | 136 | } |
| guruimage | 0:43b0efef866f | 137 | } |
| guruimage | 0:43b0efef866f | 138 | } |
| guruimage | 0:43b0efef866f | 139 | } |
| guruimage | 0:43b0efef866f | 140 | |
| guruimage | 0:43b0efef866f | 141 | if((off==1)&&(sensor1EN==1)){ |
| guruimage | 0:43b0efef866f | 142 | input[num]='0'; |
| guruimage | 0:43b0efef866f | 143 | pc.printf("You have input a 0!\r\n"); |
| guruimage | 0:43b0efef866f | 144 | sensor1EN=0; |
| guruimage | 0:43b0efef866f | 145 | num++; |
| guruimage | 0:43b0efef866f | 146 | } |
| guruimage | 0:43b0efef866f | 147 | if((off==1)&&(sensor2EN==1)){ |
| guruimage | 0:43b0efef866f | 148 | input[num]='1'; |
| guruimage | 0:43b0efef866f | 149 | pc.printf("You have input a 1!\r\n"); |
| guruimage | 0:43b0efef866f | 150 | sensor2EN=0; |
| guruimage | 0:43b0efef866f | 151 | num++; |
| guruimage | 0:43b0efef866f | 152 | } |
| guruimage | 0:43b0efef866f | 153 | if ((off==1)&&(errorON==1)){ |
| guruimage | 0:43b0efef866f | 154 | pc.printf("TOUCH ERROR!\r\n"); |
| guruimage | 0:43b0efef866f | 155 | errorON=0; |
| guruimage | 0:43b0efef866f | 156 | } |
| guruimage | 0:43b0efef866f | 157 | if(num==99){ |
| guruimage | 0:43b0efef866f | 158 | num=0; |
| guruimage | 0:43b0efef866f | 159 | } |
| guruimage | 0:43b0efef866f | 160 | } |
| guruimage | 0:43b0efef866f | 161 | |
| guruimage | 0:43b0efef866f | 162 | int twoSensor (void) |
| guruimage | 0:43b0efef866f | 163 | { |
| guruimage | 0:43b0efef866f | 164 | float sample1; |
| guruimage | 0:43b0efef866f | 165 | float sample2; |
| guruimage | 0:43b0efef866f | 166 | ground=0; |
| guruimage | 0:43b0efef866f | 167 | charger.mode(PullUp); |
| guruimage | 0:43b0efef866f | 168 | charger.mode(PullNone); |
| guruimage | 0:43b0efef866f | 169 | sample1=input1.read(); |
| guruimage | 0:43b0efef866f | 170 | |
| guruimage | 0:43b0efef866f | 171 | ground2=0; |
| guruimage | 0:43b0efef866f | 172 | charger2.mode(PullUp); |
| guruimage | 0:43b0efef866f | 173 | charger2.mode(PullNone); |
| guruimage | 0:43b0efef866f | 174 | sample2=input2.read(); |
| guruimage | 0:43b0efef866f | 175 | |
| guruimage | 0:43b0efef866f | 176 | if ((sample1<0.4)&&(sample2>=0.4)){ |
| guruimage | 0:43b0efef866f | 177 | return 0; |
| guruimage | 0:43b0efef866f | 178 | } |
| guruimage | 0:43b0efef866f | 179 | else if ((sample2<0.4)&&(sample1>=0.4)){ |
| guruimage | 0:43b0efef866f | 180 | return 1; |
| guruimage | 0:43b0efef866f | 181 | } |
| guruimage | 0:43b0efef866f | 182 | else if ((sample2<0.4)&&(sample1<0.4)){ |
| guruimage | 0:43b0efef866f | 183 | return 2; |
| guruimage | 0:43b0efef866f | 184 | } |
| guruimage | 0:43b0efef866f | 185 | else if((sample1>=0.4)&&(sample2>=0.4)){ |
| guruimage | 0:43b0efef866f | 186 | return 3; |
| guruimage | 0:43b0efef866f | 187 | } |
| guruimage | 0:43b0efef866f | 188 | } |