software about measure for robotic

Dependencies:   A18_RobotMeasure mbed

Committer:
Chayanon
Date:
Tue Dec 08 19:24:39 2015 +0000
Revision:
0:d12e3b4e3b1a
A18

Who changed what in which revision?

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