Jingyuan Dong / Mbed 2 deprecated LoopFinal
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?

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