software about measure for robotic
Dependencies: A18_RobotMeasure mbed
main.cpp@0:d12e3b4e3b1a, 2015-12-08 (annotated)
- Committer:
- Chayanon
- Date:
- Tue Dec 08 19:24:39 2015 +0000
- Revision:
- 0:d12e3b4e3b1a
A18
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Chayanon | 0:d12e3b4e3b1a | 1 | #include "mbed.h" |
Chayanon | 0:d12e3b4e3b1a | 2 | #include "TextLCD.h" |
Chayanon | 0:d12e3b4e3b1a | 3 | |
Chayanon | 0:d12e3b4e3b1a | 4 | Serial pc(USBTX, USBRX); |
Chayanon | 0:d12e3b4e3b1a | 5 | //AnalogIn analog_value(A1); |
Chayanon | 0:d12e3b4e3b1a | 6 | DigitalOut colO[4]={D5,D4,D3,D2}; |
Chayanon | 0:d12e3b4e3b1a | 7 | DigitalIn roll1(D6,PullDown); |
Chayanon | 0:d12e3b4e3b1a | 8 | DigitalIn roll2(D7,PullDown); |
Chayanon | 0:d12e3b4e3b1a | 9 | DigitalIn roll3(D8,PullDown); |
Chayanon | 0:d12e3b4e3b1a | 10 | DigitalIn roll4(D9,PullDown); |
Chayanon | 0:d12e3b4e3b1a | 11 | I2C i2c_lcd(I2C_SDA,I2C_SCL); // SDA, SCL |
Chayanon | 0:d12e3b4e3b1a | 12 | TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2); |
Chayanon | 0:d12e3b4e3b1a | 13 | Timer t1;//TIme keypad |
Chayanon | 0:d12e3b4e3b1a | 14 | Timer t2;//Time Lcd |
Chayanon | 0:d12e3b4e3b1a | 15 | Timer sampling;//Sampling timer |
Chayanon | 0:d12e3b4e3b1a | 16 | volatile int Hz = 196000;//defult sampling |
Chayanon | 0:d12e3b4e3b1a | 17 | volatile int rate_sampling_us = (1000000/Hz);//convert to microsecond |
Chayanon | 0:d12e3b4e3b1a | 18 | volatile int begin; |
Chayanon | 0:d12e3b4e3b1a | 19 | |
Chayanon | 0:d12e3b4e3b1a | 20 | |
Chayanon | 0:d12e3b4e3b1a | 21 | AnalogIn RawValue(A1); |
Chayanon | 0:d12e3b4e3b1a | 22 | SPI device(SPI_MOSI, SPI_MISO, SPI_SCK); |
Chayanon | 0:d12e3b4e3b1a | 23 | DigitalOut cs(D10); |
Chayanon | 0:d12e3b4e3b1a | 24 | |
Chayanon | 0:d12e3b4e3b1a | 25 | int count; |
Chayanon | 0:d12e3b4e3b1a | 26 | int cleck=1; |
Chayanon | 0:d12e3b4e3b1a | 27 | int screen = 1; |
Chayanon | 0:d12e3b4e3b1a | 28 | int test = 1; |
Chayanon | 0:d12e3b4e3b1a | 29 | void getKeypad(); |
Chayanon | 0:d12e3b4e3b1a | 30 | double getvolt(); // get Voltage value ;unit(VOLT) |
Chayanon | 0:d12e3b4e3b1a | 31 | double getAmp(); //get Amp value unit(AMP) |
Chayanon | 0:d12e3b4e3b1a | 32 | void read(); |
Chayanon | 0:d12e3b4e3b1a | 33 | |
Chayanon | 0:d12e3b4e3b1a | 34 | |
Chayanon | 0:d12e3b4e3b1a | 35 | volatile double current=0; |
Chayanon | 0:d12e3b4e3b1a | 36 | double I_peak=0; |
Chayanon | 0:d12e3b4e3b1a | 37 | volatile double volt=0; |
Chayanon | 0:d12e3b4e3b1a | 38 | double V_peak=0; |
Chayanon | 0:d12e3b4e3b1a | 39 | double power=0; |
Chayanon | 0:d12e3b4e3b1a | 40 | //float meas; |
Chayanon | 0:d12e3b4e3b1a | 41 | int enter1 = 0; |
Chayanon | 0:d12e3b4e3b1a | 42 | int data[7] = {0} ; |
Chayanon | 0:d12e3b4e3b1a | 43 | int dLength = 0;//data length |
Chayanon | 0:d12e3b4e3b1a | 44 | int dataHz = 100000; |
Chayanon | 0:d12e3b4e3b1a | 45 | int main() |
Chayanon | 0:d12e3b4e3b1a | 46 | { |
Chayanon | 0:d12e3b4e3b1a | 47 | pc.baud(9600);//1104000 |
Chayanon | 0:d12e3b4e3b1a | 48 | //pc.printf("Start\n"); |
Chayanon | 0:d12e3b4e3b1a | 49 | |
Chayanon | 0:d12e3b4e3b1a | 50 | t1.start(); |
Chayanon | 0:d12e3b4e3b1a | 51 | t2.start(); |
Chayanon | 0:d12e3b4e3b1a | 52 | count=0; |
Chayanon | 0:d12e3b4e3b1a | 53 | lcd.printf("Welcome !!!"); |
Chayanon | 0:d12e3b4e3b1a | 54 | sampling.start(); |
Chayanon | 0:d12e3b4e3b1a | 55 | |
Chayanon | 0:d12e3b4e3b1a | 56 | for(count=0;count<4;count++) |
Chayanon | 0:d12e3b4e3b1a | 57 | { |
Chayanon | 0:d12e3b4e3b1a | 58 | colO[count]=0; |
Chayanon | 0:d12e3b4e3b1a | 59 | } |
Chayanon | 0:d12e3b4e3b1a | 60 | count=0; |
Chayanon | 0:d12e3b4e3b1a | 61 | while(1) |
Chayanon | 0:d12e3b4e3b1a | 62 | { |
Chayanon | 0:d12e3b4e3b1a | 63 | //meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0) |
Chayanon | 0:d12e3b4e3b1a | 64 | //meas = meas * 3300; |
Chayanon | 0:d12e3b4e3b1a | 65 | // pc.printf("%f\n",meas); |
Chayanon | 0:d12e3b4e3b1a | 66 | begin = sampling.read_us(); |
Chayanon | 0:d12e3b4e3b1a | 67 | if(begin >= rate_sampling_us) //read sensor |
Chayanon | 0:d12e3b4e3b1a | 68 | { |
Chayanon | 0:d12e3b4e3b1a | 69 | read(); |
Chayanon | 0:d12e3b4e3b1a | 70 | sampling.reset(); |
Chayanon | 0:d12e3b4e3b1a | 71 | } |
Chayanon | 0:d12e3b4e3b1a | 72 | if(current<0) |
Chayanon | 0:d12e3b4e3b1a | 73 | {current=0;} |
Chayanon | 0:d12e3b4e3b1a | 74 | power=current*volt; |
Chayanon | 0:d12e3b4e3b1a | 75 | if(current>=I_peak) |
Chayanon | 0:d12e3b4e3b1a | 76 | { |
Chayanon | 0:d12e3b4e3b1a | 77 | I_peak=current; |
Chayanon | 0:d12e3b4e3b1a | 78 | } |
Chayanon | 0:d12e3b4e3b1a | 79 | if(volt>=V_peak) |
Chayanon | 0:d12e3b4e3b1a | 80 | { |
Chayanon | 0:d12e3b4e3b1a | 81 | V_peak=volt; |
Chayanon | 0:d12e3b4e3b1a | 82 | } |
Chayanon | 0:d12e3b4e3b1a | 83 | pc.printf("#%.3f,%.3f,%.3f*\n",power,current,volt); |
Chayanon | 0:d12e3b4e3b1a | 84 | |
Chayanon | 0:d12e3b4e3b1a | 85 | getKeypad(); |
Chayanon | 0:d12e3b4e3b1a | 86 | enter1=0; |
Chayanon | 0:d12e3b4e3b1a | 87 | if(t2.read_ms() > 500) |
Chayanon | 0:d12e3b4e3b1a | 88 | { |
Chayanon | 0:d12e3b4e3b1a | 89 | |
Chayanon | 0:d12e3b4e3b1a | 90 | if(screen==6) |
Chayanon | 0:d12e3b4e3b1a | 91 | { |
Chayanon | 0:d12e3b4e3b1a | 92 | screen=1; |
Chayanon | 0:d12e3b4e3b1a | 93 | } |
Chayanon | 0:d12e3b4e3b1a | 94 | else if(screen==0) |
Chayanon | 0:d12e3b4e3b1a | 95 | { |
Chayanon | 0:d12e3b4e3b1a | 96 | screen=5; |
Chayanon | 0:d12e3b4e3b1a | 97 | } |
Chayanon | 0:d12e3b4e3b1a | 98 | |
Chayanon | 0:d12e3b4e3b1a | 99 | if(screen==1) |
Chayanon | 0:d12e3b4e3b1a | 100 | {//enter1=0; |
Chayanon | 0:d12e3b4e3b1a | 101 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 102 | lcd.printf("Power %3.3f W",power); |
Chayanon | 0:d12e3b4e3b1a | 103 | } |
Chayanon | 0:d12e3b4e3b1a | 104 | else if(screen==2) |
Chayanon | 0:d12e3b4e3b1a | 105 | {//enter1=0; |
Chayanon | 0:d12e3b4e3b1a | 106 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 107 | lcd.printf("Current %.3f AI_Peak %.3f A",current,I_peak); |
Chayanon | 0:d12e3b4e3b1a | 108 | } |
Chayanon | 0:d12e3b4e3b1a | 109 | else if(screen==3) |
Chayanon | 0:d12e3b4e3b1a | 110 | {//enter1=0; |
Chayanon | 0:d12e3b4e3b1a | 111 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 112 | lcd.printf("Volt %.3f VV_Peak %.3f V",volt,V_peak); |
Chayanon | 0:d12e3b4e3b1a | 113 | } |
Chayanon | 0:d12e3b4e3b1a | 114 | else if(screen==4) |
Chayanon | 0:d12e3b4e3b1a | 115 | { |
Chayanon | 0:d12e3b4e3b1a | 116 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 117 | lcd.printf("Sampling\n%d Hz",Hz); |
Chayanon | 0:d12e3b4e3b1a | 118 | |
Chayanon | 0:d12e3b4e3b1a | 119 | } |
Chayanon | 0:d12e3b4e3b1a | 120 | else if(screen==5) |
Chayanon | 0:d12e3b4e3b1a | 121 | { |
Chayanon | 0:d12e3b4e3b1a | 122 | dLength=0; |
Chayanon | 0:d12e3b4e3b1a | 123 | enter1=1; |
Chayanon | 0:d12e3b4e3b1a | 124 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 125 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 126 | while(screen==5) |
Chayanon | 0:d12e3b4e3b1a | 127 | { |
Chayanon | 0:d12e3b4e3b1a | 128 | |
Chayanon | 0:d12e3b4e3b1a | 129 | if(dLength>7) |
Chayanon | 0:d12e3b4e3b1a | 130 | { |
Chayanon | 0:d12e3b4e3b1a | 131 | int i = 0; |
Chayanon | 0:d12e3b4e3b1a | 132 | for(i=0;i<8;i++) |
Chayanon | 0:d12e3b4e3b1a | 133 | { |
Chayanon | 0:d12e3b4e3b1a | 134 | data[i]=0; |
Chayanon | 0:d12e3b4e3b1a | 135 | } |
Chayanon | 0:d12e3b4e3b1a | 136 | dLength=0; |
Chayanon | 0:d12e3b4e3b1a | 137 | |
Chayanon | 0:d12e3b4e3b1a | 138 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 139 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 140 | lcd.printf("Please 0-1m"); |
Chayanon | 0:d12e3b4e3b1a | 141 | wait(1); |
Chayanon | 0:d12e3b4e3b1a | 142 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 143 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 144 | } |
Chayanon | 0:d12e3b4e3b1a | 145 | getKeypad(); |
Chayanon | 0:d12e3b4e3b1a | 146 | } |
Chayanon | 0:d12e3b4e3b1a | 147 | |
Chayanon | 0:d12e3b4e3b1a | 148 | } |
Chayanon | 0:d12e3b4e3b1a | 149 | t2.reset(); |
Chayanon | 0:d12e3b4e3b1a | 150 | } |
Chayanon | 0:d12e3b4e3b1a | 151 | if(t1.read_ms() > (1000*1000)) |
Chayanon | 0:d12e3b4e3b1a | 152 | { |
Chayanon | 0:d12e3b4e3b1a | 153 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 154 | } |
Chayanon | 0:d12e3b4e3b1a | 155 | } |
Chayanon | 0:d12e3b4e3b1a | 156 | |
Chayanon | 0:d12e3b4e3b1a | 157 | } |
Chayanon | 0:d12e3b4e3b1a | 158 | |
Chayanon | 0:d12e3b4e3b1a | 159 | |
Chayanon | 0:d12e3b4e3b1a | 160 | //D2, D3, D4, D5, D6, D7, D8, D9 |
Chayanon | 0:d12e3b4e3b1a | 161 | /* |
Chayanon | 0:d12e3b4e3b1a | 162 | |1 2 3 up | |
Chayanon | 0:d12e3b4e3b1a | 163 | |4 5 6 down | |
Chayanon | 0:d12e3b4e3b1a | 164 | |7 8 9 enter| |
Chayanon | 0:d12e3b4e3b1a | 165 | |0 0 0 clear| |
Chayanon | 0:d12e3b4e3b1a | 166 | */ |
Chayanon | 0:d12e3b4e3b1a | 167 | |
Chayanon | 0:d12e3b4e3b1a | 168 | void getKeypad(){ |
Chayanon | 0:d12e3b4e3b1a | 169 | |
Chayanon | 0:d12e3b4e3b1a | 170 | if(count==0) |
Chayanon | 0:d12e3b4e3b1a | 171 | { |
Chayanon | 0:d12e3b4e3b1a | 172 | colO[3]=0; |
Chayanon | 0:d12e3b4e3b1a | 173 | colO[count]=1; |
Chayanon | 0:d12e3b4e3b1a | 174 | } |
Chayanon | 0:d12e3b4e3b1a | 175 | else |
Chayanon | 0:d12e3b4e3b1a | 176 | { |
Chayanon | 0:d12e3b4e3b1a | 177 | colO[count-1]=0; |
Chayanon | 0:d12e3b4e3b1a | 178 | colO[count]=1; |
Chayanon | 0:d12e3b4e3b1a | 179 | } |
Chayanon | 0:d12e3b4e3b1a | 180 | if(t1.read_ms() >300) |
Chayanon | 0:d12e3b4e3b1a | 181 | { |
Chayanon | 0:d12e3b4e3b1a | 182 | cleck=1; |
Chayanon | 0:d12e3b4e3b1a | 183 | } |
Chayanon | 0:d12e3b4e3b1a | 184 | //pc.printf("%d\n",i); |
Chayanon | 0:d12e3b4e3b1a | 185 | if(roll1==1&&colO[0]==1&&cleck==1)//s1 up |
Chayanon | 0:d12e3b4e3b1a | 186 | { |
Chayanon | 0:d12e3b4e3b1a | 187 | screen--; |
Chayanon | 0:d12e3b4e3b1a | 188 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 189 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 190 | } |
Chayanon | 0:d12e3b4e3b1a | 191 | else if(roll1==1&&colO[1]==1&&cleck==1)//s2 down |
Chayanon | 0:d12e3b4e3b1a | 192 | { |
Chayanon | 0:d12e3b4e3b1a | 193 | screen++; |
Chayanon | 0:d12e3b4e3b1a | 194 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 195 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 196 | } |
Chayanon | 0:d12e3b4e3b1a | 197 | else if(roll1==1&&colO[2]==1&&cleck==1)//s3 enter |
Chayanon | 0:d12e3b4e3b1a | 198 | { |
Chayanon | 0:d12e3b4e3b1a | 199 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 200 | { |
Chayanon | 0:d12e3b4e3b1a | 201 | if(dLength>0) |
Chayanon | 0:d12e3b4e3b1a | 202 | { int j = dLength-1;//loop |
Chayanon | 0:d12e3b4e3b1a | 203 | int k = data[j];//data*something |
Chayanon | 0:d12e3b4e3b1a | 204 | int l = 1; |
Chayanon | 0:d12e3b4e3b1a | 205 | dataHz=0; |
Chayanon | 0:d12e3b4e3b1a | 206 | //lcd.printf("%d",k); |
Chayanon | 0:d12e3b4e3b1a | 207 | for(j = dLength-1;j>=0;j--) |
Chayanon | 0:d12e3b4e3b1a | 208 | { |
Chayanon | 0:d12e3b4e3b1a | 209 | data[j]=k; |
Chayanon | 0:d12e3b4e3b1a | 210 | l=(l*10); |
Chayanon | 0:d12e3b4e3b1a | 211 | if(j>=0) |
Chayanon | 0:d12e3b4e3b1a | 212 | { |
Chayanon | 0:d12e3b4e3b1a | 213 | k=(data[j-1]*l); |
Chayanon | 0:d12e3b4e3b1a | 214 | } |
Chayanon | 0:d12e3b4e3b1a | 215 | |
Chayanon | 0:d12e3b4e3b1a | 216 | dataHz=dataHz+data[j]; |
Chayanon | 0:d12e3b4e3b1a | 217 | } |
Chayanon | 0:d12e3b4e3b1a | 218 | for(l=0;l<8;l++) |
Chayanon | 0:d12e3b4e3b1a | 219 | { |
Chayanon | 0:d12e3b4e3b1a | 220 | data[l]=0; |
Chayanon | 0:d12e3b4e3b1a | 221 | } |
Chayanon | 0:d12e3b4e3b1a | 222 | dLength=0; |
Chayanon | 0:d12e3b4e3b1a | 223 | if(dataHz==0||dataHz>1000000) |
Chayanon | 0:d12e3b4e3b1a | 224 | { |
Chayanon | 0:d12e3b4e3b1a | 225 | dataHz=100000; |
Chayanon | 0:d12e3b4e3b1a | 226 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 227 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 228 | lcd.printf("Please 0-1m"); |
Chayanon | 0:d12e3b4e3b1a | 229 | wait(1); |
Chayanon | 0:d12e3b4e3b1a | 230 | } |
Chayanon | 0:d12e3b4e3b1a | 231 | |
Chayanon | 0:d12e3b4e3b1a | 232 | Hz=dataHz; |
Chayanon | 0:d12e3b4e3b1a | 233 | rate_sampling_us = (1000000/Hz); |
Chayanon | 0:d12e3b4e3b1a | 234 | |
Chayanon | 0:d12e3b4e3b1a | 235 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 236 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 237 | lcd.printf("OK !!!"); |
Chayanon | 0:d12e3b4e3b1a | 238 | wait(1); |
Chayanon | 0:d12e3b4e3b1a | 239 | |
Chayanon | 0:d12e3b4e3b1a | 240 | |
Chayanon | 0:d12e3b4e3b1a | 241 | } |
Chayanon | 0:d12e3b4e3b1a | 242 | //lcd.printf(" "); |
Chayanon | 0:d12e3b4e3b1a | 243 | |
Chayanon | 0:d12e3b4e3b1a | 244 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 245 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 246 | } |
Chayanon | 0:d12e3b4e3b1a | 247 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 248 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 249 | } |
Chayanon | 0:d12e3b4e3b1a | 250 | else if(roll1==1&&colO[3]==1&&cleck==1)//s4 clear |
Chayanon | 0:d12e3b4e3b1a | 251 | { |
Chayanon | 0:d12e3b4e3b1a | 252 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 253 | { |
Chayanon | 0:d12e3b4e3b1a | 254 | int m; |
Chayanon | 0:d12e3b4e3b1a | 255 | for(m=0;m<8;m++) |
Chayanon | 0:d12e3b4e3b1a | 256 | { |
Chayanon | 0:d12e3b4e3b1a | 257 | data[m]=0; |
Chayanon | 0:d12e3b4e3b1a | 258 | } |
Chayanon | 0:d12e3b4e3b1a | 259 | lcd.cls(); |
Chayanon | 0:d12e3b4e3b1a | 260 | lcd.printf("Gen Sampling(Hz)"); |
Chayanon | 0:d12e3b4e3b1a | 261 | dLength=0; |
Chayanon | 0:d12e3b4e3b1a | 262 | } |
Chayanon | 0:d12e3b4e3b1a | 263 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 264 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 265 | } |
Chayanon | 0:d12e3b4e3b1a | 266 | else if(roll2==1&&colO[0]==1&&cleck==1)//s5 3 |
Chayanon | 0:d12e3b4e3b1a | 267 | { |
Chayanon | 0:d12e3b4e3b1a | 268 | |
Chayanon | 0:d12e3b4e3b1a | 269 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 270 | { |
Chayanon | 0:d12e3b4e3b1a | 271 | lcd.printf("3"); |
Chayanon | 0:d12e3b4e3b1a | 272 | data[dLength]=3; |
Chayanon | 0:d12e3b4e3b1a | 273 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 274 | } |
Chayanon | 0:d12e3b4e3b1a | 275 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 276 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 277 | } |
Chayanon | 0:d12e3b4e3b1a | 278 | else if(roll2==1&&colO[1]==1&&cleck==1)//s6 6 |
Chayanon | 0:d12e3b4e3b1a | 279 | { |
Chayanon | 0:d12e3b4e3b1a | 280 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 281 | { |
Chayanon | 0:d12e3b4e3b1a | 282 | lcd.printf("6"); |
Chayanon | 0:d12e3b4e3b1a | 283 | data[dLength]=6; |
Chayanon | 0:d12e3b4e3b1a | 284 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 285 | } |
Chayanon | 0:d12e3b4e3b1a | 286 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 287 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 288 | } |
Chayanon | 0:d12e3b4e3b1a | 289 | else if(roll2==1&&colO[2]==1&&cleck==1)//s7 9 |
Chayanon | 0:d12e3b4e3b1a | 290 | { |
Chayanon | 0:d12e3b4e3b1a | 291 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 292 | { |
Chayanon | 0:d12e3b4e3b1a | 293 | lcd.printf("9"); |
Chayanon | 0:d12e3b4e3b1a | 294 | data[dLength]=9; |
Chayanon | 0:d12e3b4e3b1a | 295 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 296 | } |
Chayanon | 0:d12e3b4e3b1a | 297 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 298 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 299 | } |
Chayanon | 0:d12e3b4e3b1a | 300 | else if(roll2==1&&colO[3]==1&&cleck==1)//s8 |
Chayanon | 0:d12e3b4e3b1a | 301 | { |
Chayanon | 0:d12e3b4e3b1a | 302 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 303 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 304 | } |
Chayanon | 0:d12e3b4e3b1a | 305 | else if(roll3==1&&colO[0]==1&&cleck==1)//s9 2 |
Chayanon | 0:d12e3b4e3b1a | 306 | { |
Chayanon | 0:d12e3b4e3b1a | 307 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 308 | { |
Chayanon | 0:d12e3b4e3b1a | 309 | lcd.printf("2"); |
Chayanon | 0:d12e3b4e3b1a | 310 | data[dLength]=2; |
Chayanon | 0:d12e3b4e3b1a | 311 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 312 | } |
Chayanon | 0:d12e3b4e3b1a | 313 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 314 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 315 | } |
Chayanon | 0:d12e3b4e3b1a | 316 | else if(roll3==1&&colO[1]==1&&cleck==1)//s10 5 |
Chayanon | 0:d12e3b4e3b1a | 317 | { |
Chayanon | 0:d12e3b4e3b1a | 318 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 319 | { |
Chayanon | 0:d12e3b4e3b1a | 320 | lcd.printf("5"); |
Chayanon | 0:d12e3b4e3b1a | 321 | data[dLength]=5; |
Chayanon | 0:d12e3b4e3b1a | 322 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 323 | } |
Chayanon | 0:d12e3b4e3b1a | 324 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 325 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 326 | } |
Chayanon | 0:d12e3b4e3b1a | 327 | else if(roll3==1&&colO[2]==1&&cleck==1)//s11 8 |
Chayanon | 0:d12e3b4e3b1a | 328 | { |
Chayanon | 0:d12e3b4e3b1a | 329 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 330 | { |
Chayanon | 0:d12e3b4e3b1a | 331 | lcd.printf("8"); |
Chayanon | 0:d12e3b4e3b1a | 332 | data[dLength]=8; |
Chayanon | 0:d12e3b4e3b1a | 333 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 334 | } |
Chayanon | 0:d12e3b4e3b1a | 335 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 336 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 337 | } |
Chayanon | 0:d12e3b4e3b1a | 338 | else if(roll3==1&&colO[3]==1&&cleck==1)//s12 0 |
Chayanon | 0:d12e3b4e3b1a | 339 | { |
Chayanon | 0:d12e3b4e3b1a | 340 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 341 | { |
Chayanon | 0:d12e3b4e3b1a | 342 | lcd.printf("0"); |
Chayanon | 0:d12e3b4e3b1a | 343 | data[dLength]=0; |
Chayanon | 0:d12e3b4e3b1a | 344 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 345 | } |
Chayanon | 0:d12e3b4e3b1a | 346 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 347 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 348 | } |
Chayanon | 0:d12e3b4e3b1a | 349 | else if(roll4==1&&colO[0]==1&&cleck==1)//s13 1 |
Chayanon | 0:d12e3b4e3b1a | 350 | { |
Chayanon | 0:d12e3b4e3b1a | 351 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 352 | { |
Chayanon | 0:d12e3b4e3b1a | 353 | lcd.printf("1"); |
Chayanon | 0:d12e3b4e3b1a | 354 | data[dLength]=1; |
Chayanon | 0:d12e3b4e3b1a | 355 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 356 | } |
Chayanon | 0:d12e3b4e3b1a | 357 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 358 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 359 | } |
Chayanon | 0:d12e3b4e3b1a | 360 | else if(roll4==1&&colO[1]==1&&cleck==1)//s14 4 |
Chayanon | 0:d12e3b4e3b1a | 361 | { |
Chayanon | 0:d12e3b4e3b1a | 362 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 363 | { |
Chayanon | 0:d12e3b4e3b1a | 364 | lcd.printf("4"); |
Chayanon | 0:d12e3b4e3b1a | 365 | data[dLength]=4; |
Chayanon | 0:d12e3b4e3b1a | 366 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 367 | } |
Chayanon | 0:d12e3b4e3b1a | 368 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 369 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 370 | } |
Chayanon | 0:d12e3b4e3b1a | 371 | else if(roll4==1&&colO[2]==1&&cleck==1)//s15 7 |
Chayanon | 0:d12e3b4e3b1a | 372 | { |
Chayanon | 0:d12e3b4e3b1a | 373 | if(enter1==1) |
Chayanon | 0:d12e3b4e3b1a | 374 | { |
Chayanon | 0:d12e3b4e3b1a | 375 | lcd.printf("7"); |
Chayanon | 0:d12e3b4e3b1a | 376 | data[dLength]=7; |
Chayanon | 0:d12e3b4e3b1a | 377 | dLength++; |
Chayanon | 0:d12e3b4e3b1a | 378 | } |
Chayanon | 0:d12e3b4e3b1a | 379 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 380 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 381 | } |
Chayanon | 0:d12e3b4e3b1a | 382 | else if(roll4==1&&colO[3]==1&&cleck==1)//s16 |
Chayanon | 0:d12e3b4e3b1a | 383 | { |
Chayanon | 0:d12e3b4e3b1a | 384 | cleck=0; |
Chayanon | 0:d12e3b4e3b1a | 385 | t1.reset(); |
Chayanon | 0:d12e3b4e3b1a | 386 | } |
Chayanon | 0:d12e3b4e3b1a | 387 | |
Chayanon | 0:d12e3b4e3b1a | 388 | count++; |
Chayanon | 0:d12e3b4e3b1a | 389 | if(count==4) |
Chayanon | 0:d12e3b4e3b1a | 390 | { |
Chayanon | 0:d12e3b4e3b1a | 391 | count=0; |
Chayanon | 0:d12e3b4e3b1a | 392 | } |
Chayanon | 0:d12e3b4e3b1a | 393 | } |
Chayanon | 0:d12e3b4e3b1a | 394 | |
Chayanon | 0:d12e3b4e3b1a | 395 | double getvolt() // get Voltage value ;unit(VOLT) |
Chayanon | 0:d12e3b4e3b1a | 396 | { |
Chayanon | 0:d12e3b4e3b1a | 397 | uint16_t value0[3]; |
Chayanon | 0:d12e3b4e3b1a | 398 | float volt,sval0; |
Chayanon | 0:d12e3b4e3b1a | 399 | cs=1; //slave select |
Chayanon | 0:d12e3b4e3b1a | 400 | |
Chayanon | 0:d12e3b4e3b1a | 401 | cs=0; |
Chayanon | 0:d12e3b4e3b1a | 402 | value0[0] = device.write(0xD0); //read CH0 |
Chayanon | 0:d12e3b4e3b1a | 403 | value0[1] = device.write(0x00); |
Chayanon | 0:d12e3b4e3b1a | 404 | value0[2] = device.write(0x00); |
Chayanon | 0:d12e3b4e3b1a | 405 | cs=1; |
Chayanon | 0:d12e3b4e3b1a | 406 | |
Chayanon | 0:d12e3b4e3b1a | 407 | value0[0] = (value0[0] & 0x07)<<9;//convert to 12bit |
Chayanon | 0:d12e3b4e3b1a | 408 | value0[1] = (value0[1] & 0xFF)<<1; |
Chayanon | 0:d12e3b4e3b1a | 409 | value0[2] = (value0[2] & 0x80)>>7; |
Chayanon | 0:d12e3b4e3b1a | 410 | |
Chayanon | 0:d12e3b4e3b1a | 411 | sval0 = value0[0]|value0[1]|value0[2];//sum bit |
Chayanon | 0:d12e3b4e3b1a | 412 | |
Chayanon | 0:d12e3b4e3b1a | 413 | |
Chayanon | 0:d12e3b4e3b1a | 414 | volt = (sval0/4095)*5; //calculate ;volt |
Chayanon | 0:d12e3b4e3b1a | 415 | return volt; |
Chayanon | 0:d12e3b4e3b1a | 416 | } |
Chayanon | 0:d12e3b4e3b1a | 417 | |
Chayanon | 0:d12e3b4e3b1a | 418 | double getAmp() //get current ;unit(AMP) |
Chayanon | 0:d12e3b4e3b1a | 419 | { |
Chayanon | 0:d12e3b4e3b1a | 420 | char buffer[50] = "/0"; |
Chayanon | 0:d12e3b4e3b1a | 421 | float Ampoffset = 2.5;//use positive current |
Chayanon | 0:d12e3b4e3b1a | 422 | float mVperAmp = 0.1; //typical set |
Chayanon | 0:d12e3b4e3b1a | 423 | float Voltage; |
Chayanon | 0:d12e3b4e3b1a | 424 | float Amp,val; |
Chayanon | 0:d12e3b4e3b1a | 425 | |
Chayanon | 0:d12e3b4e3b1a | 426 | val = ((RawValue.read()*((3.3/5)* 1023))+17);//read anaog value |
Chayanon | 0:d12e3b4e3b1a | 427 | sprintf(buffer,"%.0f",val); //convert to integer |
Chayanon | 0:d12e3b4e3b1a | 428 | val = (float)atof(buffer); |
Chayanon | 0:d12e3b4e3b1a | 429 | //pc.printf("%f\n",val); |
Chayanon | 0:d12e3b4e3b1a | 430 | Voltage = (5*val)/1023;//calculate to Vin |
Chayanon | 0:d12e3b4e3b1a | 431 | sprintf(buffer,"%.3f",Voltage);//convert to integer |
Chayanon | 0:d12e3b4e3b1a | 432 | Voltage = (float)atof(buffer); |
Chayanon | 0:d12e3b4e3b1a | 433 | |
Chayanon | 0:d12e3b4e3b1a | 434 | Amp = (Voltage-2.5)/0.1; //calculate to Amp |
Chayanon | 0:d12e3b4e3b1a | 435 | |
Chayanon | 0:d12e3b4e3b1a | 436 | return Amp; |
Chayanon | 0:d12e3b4e3b1a | 437 | } |
Chayanon | 0:d12e3b4e3b1a | 438 | |
Chayanon | 0:d12e3b4e3b1a | 439 | void read() |
Chayanon | 0:d12e3b4e3b1a | 440 | { |
Chayanon | 0:d12e3b4e3b1a | 441 | current = getAmp(); |
Chayanon | 0:d12e3b4e3b1a | 442 | volt = getvolt(); |
Chayanon | 0:d12e3b4e3b1a | 443 | } |