test

Dependencies:   MINI8I8O5A000 mbed EEPROM_P4 IICLCD_LOWCOST

Committer:
tsuparit
Date:
Tue Sep 01 09:43:24 2020 +0000
Revision:
13:1ed44b18943a
Parent:
12:d97af85a47f9
note

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsuparit 6:96d89c2f4bf9 1 float firmware_version = 1.20;
tsuparit 12:d97af85a47f9 2 //OMRON
tsuparit 12:d97af85a47f9 3 //#define TRIGGER_0 1
tsuparit 12:d97af85a47f9 4 //#define TRIGGER_1 0
tsuparit 0:5e60f85d6c26 5
tsuparit 12:d97af85a47f9 6 //KEYENCE
tsuparit 12:d97af85a47f9 7 #define TRIGGER_0 0
tsuparit 12:d97af85a47f9 8 #define TRIGGER_1 1
tsuparit 12:d97af85a47f9 9
tsuparit 10:c58ec47d206c 10
tsuparit 0:5e60f85d6c26 11 #include "mbed.h"
tsuparit 2:82dbbbff7518 12
tsuparit 11:c3151cd10c88 13 #define BUZZVSP7 // Enable P7 for Buzzer..
tsuparit 11:c3151cd10c88 14
tsuparit 11:c3151cd10c88 15
tsuparit 2:82dbbbff7518 16 //#include "USBSerial.h"
tsuparit 11:c3151cd10c88 17
tsuparit 2:82dbbbff7518 18
tsuparit 2:82dbbbff7518 19
tsuparit 2:82dbbbff7518 20
tsuparit 2:82dbbbff7518 21 //#define USBSerialOption
tsuparit 2:82dbbbff7518 22
tsuparit 2:82dbbbff7518 23 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 24 #include "USBSerial.h"
tsuparit 2:82dbbbff7518 25 USBSerial pc;
tsuparit 7:3cb877cb7393 26
tsuparit 2:82dbbbff7518 27 #else
tsuparit 2:82dbbbff7518 28
tsuparit 4:c08d713f8cfc 29 //Serial pc(USBTX, USBRX); // SDA serail port
tsuparit 4:c08d713f8cfc 30 Serial pc(PTE0, PTE1); // tx, rx
tsuparit 12:d97af85a47f9 31
tsuparit 12:d97af85a47f9 32
tsuparit 2:82dbbbff7518 33 #endif
tsuparit 2:82dbbbff7518 34
tsuparit 2:82dbbbff7518 35
tsuparit 2:82dbbbff7518 36
tsuparit 0:5e60f85d6c26 37 #include "LiquidCrystal_I2C.h"
tsuparit 0:5e60f85d6c26 38 #include "mini8i8o5a.h"
tsuparit 0:5e60f85d6c26 39 #define EEPROMBUFFERSIZE 16
tsuparit 0:5e60f85d6c26 40 #include "eepromlib.h"
tsuparit 0:5e60f85d6c26 41
tsuparit 0:5e60f85d6c26 42
tsuparit 0:5e60f85d6c26 43 DigitalOut myled(LED1);
tsuparit 0:5e60f85d6c26 44
tsuparit 5:a693866be4b3 45 int loopinilcd=0;
tsuparit 0:5e60f85d6c26 46
tsuparit 0:5e60f85d6c26 47 char str[50];
tsuparit 0:5e60f85d6c26 48 char strbuf[50];
tsuparit 0:5e60f85d6c26 49
tsuparit 0:5e60f85d6c26 50
tsuparit 0:5e60f85d6c26 51 int rxchar_count=0;
tsuparit 0:5e60f85d6c26 52 #define RXBUFFERSIZE 100
tsuparit 0:5e60f85d6c26 53 char rx_buffer[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 54 char rx_buffer_CMD[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 55 char rx_buffer_ARG[RXBUFFERSIZE];
tsuparit 0:5e60f85d6c26 56 char rx_pointer=0;
tsuparit 0:5e60f85d6c26 57 char inchar=0;
tsuparit 0:5e60f85d6c26 58
tsuparit 0:5e60f85d6c26 59 char remote_control=0;
tsuparit 0:5e60f85d6c26 60
tsuparit 0:5e60f85d6c26 61 float ser_para_reset=0;
tsuparit 0:5e60f85d6c26 62 //float ser_para_stab=3.25;
tsuparit 0:5e60f85d6c26 63 float ser_para_time=1.19;
tsuparit 0:5e60f85d6c26 64 float ser_para_result=0.0;
tsuparit 0:5e60f85d6c26 65
tsuparit 0:5e60f85d6c26 66 char ser_para_state=0;
tsuparit 0:5e60f85d6c26 67 char ser_para_err=0;
tsuparit 0:5e60f85d6c26 68 char ser_para_range=0;
tsuparit 0:5e60f85d6c26 69
tsuparit 0:5e60f85d6c26 70 char ser_trigger=0;
tsuparit 0:5e60f85d6c26 71 char ser_para_cont_mode=1; //serial continue print out
tsuparit 0:5e60f85d6c26 72
tsuparit 0:5e60f85d6c26 73 Timer com_timer;
tsuparit 0:5e60f85d6c26 74
tsuparit 0:5e60f85d6c26 75
tsuparit 0:5e60f85d6c26 76 char boardaddress =1;
tsuparit 0:5e60f85d6c26 77
tsuparit 7:3cb877cb7393 78
tsuparit 7:3cb877cb7393 79
tsuparit 7:3cb877cb7393 80
tsuparit 7:3cb877cb7393 81 int CAMERROR =0;
tsuparit 7:3cb877cb7393 82 int CAMTOTAL =0;
tsuparit 7:3cb877cb7393 83 #define CAMTRIGGER OUT0
tsuparit 11:c3151cd10c88 84
tsuparit 11:c3151cd10c88 85 #define SCENE_PULSE OUT1
tsuparit 11:c3151cd10c88 86
tsuparit 7:3cb877cb7393 87 #define CAMBUSY IN1
tsuparit 7:3cb877cb7393 88
tsuparit 7:3cb877cb7393 89
tsuparit 0:5e60f85d6c26 90 void serial_pc_rx_services()
tsuparit 0:5e60f85d6c26 91 {
tsuparit 7:3cb877cb7393 92 int i,j;
tsuparit 2:82dbbbff7518 93 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 94 while (pc.available())
tsuparit 2:82dbbbff7518 95 #else
tsuparit 2:82dbbbff7518 96 while(pc.readable())
tsuparit 2:82dbbbff7518 97 #endif
tsuparit 3:e658376f6e27 98 {
tsuparit 3:e658376f6e27 99 inchar =pc.getc();
tsuparit 2:82dbbbff7518 100 if ( rx_pointer==0) //first incoming character clear old buffer
tsuparit 0:5e60f85d6c26 101 {
tsuparit 0:5e60f85d6c26 102 for (i=0;i<RXBUFFERSIZE;i++) rx_buffer[i]=0; //clear old buffer
tsuparit 3:e658376f6e27 103 com_timer.reset();
tsuparit 3:e658376f6e27 104 com_timer.start();
tsuparit 0:5e60f85d6c26 105 }
tsuparit 0:5e60f85d6c26 106
tsuparit 5:a693866be4b3 107 loopinilcd=0;
tsuparit 2:82dbbbff7518 108
tsuparit 3:e658376f6e27 109 rx_buffer[rx_pointer]=inchar; //keep char in buffer...
tsuparit 0:5e60f85d6c26 110 rx_pointer++;
tsuparit 7:3cb877cb7393 111
tsuparit 0:5e60f85d6c26 112 if (rx_pointer>=(RXBUFFERSIZE-10))
tsuparit 0:5e60f85d6c26 113 {
tsuparit 0:5e60f85d6c26 114 rx_pointer=0;//Error buffer overflow
tsuparit 2:82dbbbff7518 115 pc.printf("ERR:buffer overflow\n");
tsuparit 0:5e60f85d6c26 116 }
tsuparit 7:3cb877cb7393 117
tsuparit 0:5e60f85d6c26 118 if ((inchar=='\r')|(inchar=='\n'))
tsuparit 0:5e60f85d6c26 119 {
tsuparit 2:82dbbbff7518 120
tsuparit 0:5e60f85d6c26 121 rx_buffer[rx_pointer-1]=0;//mark end of string, remove terminate char
tsuparit 0:5e60f85d6c26 122
tsuparit 0:5e60f85d6c26 123 i=0;
tsuparit 0:5e60f85d6c26 124 j=0;
tsuparit 0:5e60f85d6c26 125 char cmd_done=0;
tsuparit 0:5e60f85d6c26 126 while (rx_buffer[i]!=0)
tsuparit 0:5e60f85d6c26 127 {
tsuparit 0:5e60f85d6c26 128 if (cmd_done==0)
tsuparit 0:5e60f85d6c26 129 {
tsuparit 0:5e60f85d6c26 130 rx_buffer_CMD[i]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 131 if (rx_buffer_CMD[i]==' ')
tsuparit 0:5e60f85d6c26 132 {
tsuparit 0:5e60f85d6c26 133 cmd_done=1;
tsuparit 0:5e60f85d6c26 134 rx_buffer_CMD[i+1]=0;
tsuparit 0:5e60f85d6c26 135 }
tsuparit 0:5e60f85d6c26 136 }
tsuparit 0:5e60f85d6c26 137 else
tsuparit 0:5e60f85d6c26 138 {
tsuparit 0:5e60f85d6c26 139 rx_buffer_ARG[j]=rx_buffer[i];//copy cmd part
tsuparit 0:5e60f85d6c26 140 j++;
tsuparit 0:5e60f85d6c26 141 }
tsuparit 0:5e60f85d6c26 142 i++;
tsuparit 0:5e60f85d6c26 143
tsuparit 0:5e60f85d6c26 144 }
tsuparit 7:3cb877cb7393 145
tsuparit 1:d9ab13cdf377 146 rx_buffer_ARG[j]=0; //end of string ++++
tsuparit 0:5e60f85d6c26 147
tsuparit 10:c58ec47d206c 148
tsuparit 7:3cb877cb7393 149
tsuparit 7:3cb877cb7393 150 #define IDELBUSYLOOP 10000
tsuparit 7:3cb877cb7393 151 BUZZER=1;
tsuparit 7:3cb877cb7393 152
tsuparit 7:3cb877cb7393 153
tsuparit 7:3cb877cb7393 154 if (rx_buffer[0]=='t')
tsuparit 7:3cb877cb7393 155 {
tsuparit 10:c58ec47d206c 156 //pulse trigger
tsuparit 10:c58ec47d206c 157
tsuparit 10:c58ec47d206c 158
tsuparit 11:c3151cd10c88 159 SCENE_PULSE=0;
tsuparit 11:c3151cd10c88 160 wait(0.050);
tsuparit 11:c3151cd10c88 161 SCENE_PULSE=1;
tsuparit 11:c3151cd10c88 162 wait(0.050);
tsuparit 11:c3151cd10c88 163
tsuparit 10:c58ec47d206c 164
tsuparit 10:c58ec47d206c 165 CAMTRIGGER=TRIGGER_0; //edge trigger
tsuparit 10:c58ec47d206c 166
tsuparit 7:3cb877cb7393 167 i=0;
tsuparit 7:3cb877cb7393 168 while(1) //wait camera run busy
tsuparit 7:3cb877cb7393 169 {
tsuparit 7:3cb877cb7393 170 Input_sampling(8);
tsuparit 7:3cb877cb7393 171 if(CAMBUSY!=0) break;
tsuparit 7:3cb877cb7393 172 if (i++>IDELBUSYLOOP)
tsuparit 7:3cb877cb7393 173 {
tsuparit 7:3cb877cb7393 174 CAMERROR=1;
tsuparit 7:3cb877cb7393 175 break;
tsuparit 7:3cb877cb7393 176 }
tsuparit 7:3cb877cb7393 177 }
tsuparit 7:3cb877cb7393 178 //cmaera process run
tsuparit 10:c58ec47d206c 179 CAMTRIGGER=TRIGGER_1; //edge trigger
tsuparit 7:3cb877cb7393 180 i=0;
tsuparit 7:3cb877cb7393 181 while(1) //wait camera complete run
tsuparit 7:3cb877cb7393 182 {
tsuparit 7:3cb877cb7393 183 Input_sampling(8);
tsuparit 7:3cb877cb7393 184 if(CAMBUSY==0) break;
tsuparit 7:3cb877cb7393 185 if (i++>IDELBUSYLOOP)
tsuparit 7:3cb877cb7393 186 {
tsuparit 8:055a85e600dd 187 CAMERROR=1;
tsuparit 8:055a85e600dd 188 break;
tsuparit 7:3cb877cb7393 189 }
tsuparit 7:3cb877cb7393 190 }
tsuparit 7:3cb877cb7393 191
tsuparit 7:3cb877cb7393 192 }
tsuparit 7:3cb877cb7393 193 else if (rx_buffer[0]=='j')
tsuparit 7:3cb877cb7393 194 {
tsuparit 8:055a85e600dd 195 // wait(0.1);
tsuparit 7:3cb877cb7393 196 }
tsuparit 7:3cb877cb7393 197 else if (rx_buffer[0]=='r')
tsuparit 7:3cb877cb7393 198 {
tsuparit 8:055a85e600dd 199 //wait(0.1);
tsuparit 7:3cb877cb7393 200 }
tsuparit 7:3cb877cb7393 201 else if (rx_buffer[0]=='p')
tsuparit 7:3cb877cb7393 202 {
tsuparit 8:055a85e600dd 203 //wait(0.1);
tsuparit 8:055a85e600dd 204 #define PRGLINE0 OUT4
tsuparit 8:055a85e600dd 205 #define PRGLINE1 OUT5
tsuparit 8:055a85e600dd 206 #define PRGLINE2 OUT6
tsuparit 8:055a85e600dd 207 #define PRGLINE3 OUT7
tsuparit 11:c3151cd10c88 208 #define PRG_ON 0
tsuparit 8:055a85e600dd 209 #define PRG_OFF 1
tsuparit 8:055a85e600dd 210
tsuparit 8:055a85e600dd 211 switch( rx_buffer[1])
tsuparit 8:055a85e600dd 212 {
tsuparit 8:055a85e600dd 213 case '0': PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_OFF; break;
tsuparit 8:055a85e600dd 214 case '1': PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_ON ; break;
tsuparit 8:055a85e600dd 215 case '2': PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_ON ; PRGLINE0=PRG_OFF; break;
tsuparit 8:055a85e600dd 216 case '3': PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_ON ; PRGLINE0=PRG_ON ; break;
tsuparit 8:055a85e600dd 217 case '4': PRGLINE3=PRG_OFF;PRGLINE2=PRG_ON ; PRGLINE1=PRG_OFF; PRGLINE0=PRG_OFF; break;
tsuparit 8:055a85e600dd 218 case '5': PRGLINE3=PRG_OFF;PRGLINE2=PRG_ON ; PRGLINE1=PRG_OFF; PRGLINE0=PRG_ON; break;
tsuparit 12:d97af85a47f9 219 case '6': PRGLINE3=PRG_OFF;PRGLINE2=PRG_ON ; PRGLINE1=PRG_ON; PRGLINE0=PRG_OFF ; break;
tsuparit 8:055a85e600dd 220 case '7': PRGLINE3=PRG_OFF;PRGLINE2=PRG_ON ; PRGLINE1=PRG_ON ; PRGLINE0=PRG_ON ; break;
tsuparit 8:055a85e600dd 221 case '8': PRGLINE3=PRG_ON ;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_OFF; break;
tsuparit 8:055a85e600dd 222 case '9': PRGLINE3=PRG_ON ;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_ON ; break;
tsuparit 7:3cb877cb7393 223
tsuparit 8:055a85e600dd 224 default: PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_OFF; break;
tsuparit 8:055a85e600dd 225 }
tsuparit 7:3cb877cb7393 226 }
tsuparit 7:3cb877cb7393 227
tsuparit 7:3cb877cb7393 228 BUZZER=0;
tsuparit 7:3cb877cb7393 229 Input_sampling(8);
tsuparit 7:3cb877cb7393 230 if (IN0) // Total result
tsuparit 7:3cb877cb7393 231 {
tsuparit 7:3cb877cb7393 232 CAMTOTAL=1;
tsuparit 7:3cb877cb7393 233 OUT1=0;
tsuparit 7:3cb877cb7393 234 }
tsuparit 7:3cb877cb7393 235 else
tsuparit 7:3cb877cb7393 236 {
tsuparit 7:3cb877cb7393 237 CAMTOTAL=0;
tsuparit 7:3cb877cb7393 238 OUT1=1;
tsuparit 7:3cb877cb7393 239 }
tsuparit 7:3cb877cb7393 240
tsuparit 7:3cb877cb7393 241
tsuparit 7:3cb877cb7393 242
tsuparit 7:3cb877cb7393 243
tsuparit 7:3cb877cb7393 244 //+++++
tsuparit 7:3cb877cb7393 245 pc.printf("%dOK\n",CAMTOTAL+4*CAMERROR);
tsuparit 7:3cb877cb7393 246 //pc.printf("123OK");
tsuparit 7:3cb877cb7393 247 //pc.printf("rxbuffer: %s",rx_buffer); //test direct echo
tsuparit 7:3cb877cb7393 248 //++++
tsuparit 7:3cb877cb7393 249
tsuparit 2:82dbbbff7518 250 //pc.printf("rxbuffer: %s",rx_buffer); //test direct echo
tsuparit 7:3cb877cb7393 251 /*
tsuparit 0:5e60f85d6c26 252 if (strcmp(rx_buffer,"*IDN?")==0)
tsuparit 0:5e60f85d6c26 253 {
tsuparit 0:5e60f85d6c26 254 pc.printf("Schaffner SerIO, ver %.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 255 }
tsuparit 0:5e60f85d6c26 256 else if (strcmp(rx_buffer,"*RST")==0)
tsuparit 0:5e60f85d6c26 257 {
tsuparit 0:5e60f85d6c26 258 pc.printf("Instrumnet Reset\n");
tsuparit 0:5e60f85d6c26 259 ser_para_reset=1; //pass flag stop all operation
tsuparit 0:5e60f85d6c26 260 //LCDI2C4Bit_init();
tsuparit 0:5e60f85d6c26 261 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 262 LCDI2C4Bit_clear();
tsuparit 0:5e60f85d6c26 263 //LCDI2C4Bit_backLight(true);
tsuparit 0:5e60f85d6c26 264 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 265
tsuparit 0:5e60f85d6c26 266 LCDI2C4Bit_cursorTo(0,0);
tsuparit 0:5e60f85d6c26 267 sprintf (str," --- RESET ----");
tsuparit 0:5e60f85d6c26 268 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 269 wait(0.25);
tsuparit 3:e658376f6e27 270 NVIC_SystemReset();//softreser
tsuparit 0:5e60f85d6c26 271 }
tsuparit 0:5e60f85d6c26 272 else if (strcmp(rx_buffer,":SYS:VER")==0)
tsuparit 0:5e60f85d6c26 273 {
tsuparit 0:5e60f85d6c26 274 pc.printf("%.1f\n",firmware_version);
tsuparit 0:5e60f85d6c26 275 }
tsuparit 0:5e60f85d6c26 276 else if (strcmp(rx_buffer,":SYST:ERR")==0)
tsuparit 0:5e60f85d6c26 277 {
tsuparit 0:5e60f85d6c26 278 pc.printf("0\n");
tsuparit 0:5e60f85d6c26 279 }
tsuparit 0:5e60f85d6c26 280 //else if (strcmp(rx_buffer,"a11000")==0) //Read Input "aX1"
tsuparit 0:5e60f85d6c26 281 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='1')) // Write Output "aX1"
tsuparit 0:5e60f85d6c26 282 {
tsuparit 3:e658376f6e27 283 pc.printf("%dOK\n",INPUT);
tsuparit 0:5e60f85d6c26 284 }
tsuparit 0:5e60f85d6c26 285 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='2')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 286 {
tsuparit 2:82dbbbff7518 287 //writer
tsuparit 2:82dbbbff7518 288 unsigned char b3,b2,b1;
tsuparit 2:82dbbbff7518 289 unsigned int outdata=0;
tsuparit 2:82dbbbff7518 290
tsuparit 2:82dbbbff7518 291 if (rx_buffer[3]!=0)
tsuparit 2:82dbbbff7518 292 {
tsuparit 2:82dbbbff7518 293 outdata=rx_buffer[3]-'0';
tsuparit 2:82dbbbff7518 294 }
tsuparit 2:82dbbbff7518 295 if (rx_buffer[4]!=0)
tsuparit 2:82dbbbff7518 296 {
tsuparit 2:82dbbbff7518 297 outdata=outdata*10+rx_buffer[4]-'0';
tsuparit 2:82dbbbff7518 298 }
tsuparit 2:82dbbbff7518 299 if (rx_buffer[5]!=0)
tsuparit 2:82dbbbff7518 300 {
tsuparit 2:82dbbbff7518 301 outdata=outdata*10+rx_buffer[5]-'0';
tsuparit 2:82dbbbff7518 302 }
tsuparit 3:e658376f6e27 303 int OUTBUF=0;
tsuparit 3:e658376f6e27 304 if bitchk(outdata,0) {OUT0=ON;OUTBUF=OUTBUF+1;} else OUT0=OFF;
tsuparit 3:e658376f6e27 305 if bitchk(outdata,1) {OUT1=ON;OUTBUF=OUTBUF+2;} else OUT1=OFF;
tsuparit 3:e658376f6e27 306 if bitchk(outdata,2) {OUT2=ON;OUTBUF=OUTBUF+4;} else OUT2=OFF;
tsuparit 3:e658376f6e27 307 if bitchk(outdata,3) {OUT3=ON;OUTBUF=OUTBUF+8;} else OUT3=OFF;
tsuparit 2:82dbbbff7518 308
tsuparit 3:e658376f6e27 309 if bitchk(outdata,4) {OUT4=ON;OUTBUF=OUTBUF+16;} else OUT4=OFF;
tsuparit 3:e658376f6e27 310 if bitchk(outdata,5) {OUT5=ON;OUTBUF=OUTBUF+32;} else OUT5=OFF;
tsuparit 3:e658376f6e27 311 if bitchk(outdata,6) {OUT6=ON;OUTBUF=OUTBUF+64;} else OUT6=OFF;
tsuparit 6:96d89c2f4bf9 312 if bitchk(outdata,7)
tsuparit 6:96d89c2f4bf9 313 {OUT7=ON;OUTBUF=OUTBUF+128;
tsuparit 6:96d89c2f4bf9 314 #ifdef BUZZVSP7
tsuparit 6:96d89c2f4bf9 315 BUZZER=1;
tsuparit 6:96d89c2f4bf9 316 #endif
tsuparit 6:96d89c2f4bf9 317
tsuparit 6:96d89c2f4bf9 318 }
tsuparit 6:96d89c2f4bf9 319 else
tsuparit 6:96d89c2f4bf9 320 {
tsuparit 6:96d89c2f4bf9 321 #ifdef BUZZVSP7
tsuparit 6:96d89c2f4bf9 322 BUZZER=1;
tsuparit 6:96d89c2f4bf9 323 #endif
tsuparit 6:96d89c2f4bf9 324
tsuparit 6:96d89c2f4bf9 325
tsuparit 6:96d89c2f4bf9 326 OUT7=OFF;
tsuparit 6:96d89c2f4bf9 327 }
tsuparit 3:e658376f6e27 328 OUTPUT=OUTBUF;
tsuparit 3:e658376f6e27 329 pc.printf("%dOK\n",outdata);
tsuparit 0:5e60f85d6c26 330 }
tsuparit 0:5e60f85d6c26 331 else if ( (rx_buffer[0]=='a') & (rx_buffer[1]==('0'+boardaddress)) & (rx_buffer[2]=='3')) // Write Output "aX2"
tsuparit 0:5e60f85d6c26 332 {
tsuparit 3:e658376f6e27 333 pc.printf("%dOK\n",OUTPUT);
tsuparit 0:5e60f85d6c26 334 }
tsuparit 0:5e60f85d6c26 335 else
tsuparit 0:5e60f85d6c26 336 {//unknow / handle comand
tsuparit 2:82dbbbff7518 337 //pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer,rx_buffer_CMD,rx_buffer_ARG);
tsuparit 2:82dbbbff7518 338 pc.printf( "UNKNOWN %s=>%s,%s\n",rx_buffer);
tsuparit 7:3cb877cb7393 339 }
tsuparit 7:3cb877cb7393 340
tsuparit 7:3cb877cb7393 341
tsuparit 7:3cb877cb7393 342 */
tsuparit 7:3cb877cb7393 343
tsuparit 7:3cb877cb7393 344
tsuparit 7:3cb877cb7393 345
tsuparit 7:3cb877cb7393 346
tsuparit 0:5e60f85d6c26 347 rx_pointer=0;//Reset at the end
tsuparit 0:5e60f85d6c26 348 com_timer.stop();
tsuparit 2:82dbbbff7518 349 break;//exit while
tsuparit 2:82dbbbff7518 350 } //end foud "terminal of command//
tsuparit 2:82dbbbff7518 351
tsuparit 0:5e60f85d6c26 352
tsuparit 2:82dbbbff7518 353
tsuparit 2:82dbbbff7518 354 } //end while data read aviable
tsuparit 3:e658376f6e27 355
tsuparit 2:82dbbbff7518 356
tsuparit 0:5e60f85d6c26 357
tsuparit 0:5e60f85d6c26 358 }
tsuparit 0:5e60f85d6c26 359
tsuparit 0:5e60f85d6c26 360
tsuparit 0:5e60f85d6c26 361 int main()
tsuparit 0:5e60f85d6c26 362 {
tsuparit 9:dfb7951e8532 363 int i=0;
tsuparit 0:5e60f85d6c26 364
tsuparit 9:dfb7951e8532 365 OUT1=0;
tsuparit 0:5e60f85d6c26 366
tsuparit 5:a693866be4b3 367 LiquidCrystal_I2C_SETUP(0x27,20,4);
tsuparit 0:5e60f85d6c26 368 LiquidCrystal_I2Cinit();
tsuparit 0:5e60f85d6c26 369 LiquidCrystal_I2Cbacklight();
tsuparit 0:5e60f85d6c26 370
tsuparit 0:5e60f85d6c26 371 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 0:5e60f85d6c26 372 sprintf (str, " SCHAFFNER ");
tsuparit 0:5e60f85d6c26 373 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 374 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 9:dfb7951e8532 375 sprintf (str, "SerailVIS v:%.2f ",1.01) ;
tsuparit 0:5e60f85d6c26 376 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 377
tsuparit 2:82dbbbff7518 378 #ifdef USBSerialOption
tsuparit 2:82dbbbff7518 379
tsuparit 2:82dbbbff7518 380 #else
tsuparit 2:82dbbbff7518 381 pc.baud(9600); // set what you want here depending on your terminal program speed
tsuparit 2:82dbbbff7518 382 #endif
tsuparit 2:82dbbbff7518 383
tsuparit 0:5e60f85d6c26 384
tsuparit 0:5e60f85d6c26 385 com_timer.start();
tsuparit 0:5e60f85d6c26 386 com_timer.stop();
tsuparit 0:5e60f85d6c26 387 com_timer.reset();
tsuparit 0:5e60f85d6c26 388
tsuparit 3:e658376f6e27 389 wait(0.1);
tsuparit 3:e658376f6e27 390
tsuparit 3:e658376f6e27 391 pc.attach(&serial_pc_rx_services); // Use interrupt services !!
tsuparit 5:a693866be4b3 392
tsuparit 7:3cb877cb7393 393 OUT1=0;
tsuparit 11:c3151cd10c88 394 SCENE_PULSE=1;
tsuparit 7:3cb877cb7393 395
tsuparit 7:3cb877cb7393 396 #define BUZZER_EN 0
tsuparit 7:3cb877cb7393 397
tsuparit 9:dfb7951e8532 398 // while(1);
tsuparit 9:dfb7951e8532 399
tsuparit 9:dfb7951e8532 400 #define MANUAL_RUNEANABLE
tsuparit 9:dfb7951e8532 401
tsuparit 9:dfb7951e8532 402 #ifdef MANUAL_RUNEANABLE
tsuparit 10:c58ec47d206c 403 CAMTRIGGER=TRIGGER_0; // set signal ready for cam trigger
tsuparit 9:dfb7951e8532 404 float analog= 0;
tsuparit 9:dfb7951e8532 405 float analogPG=0;
tsuparit 7:3cb877cb7393 406
tsuparit 7:3cb877cb7393 407
tsuparit 9:dfb7951e8532 408 load_eeprom();
tsuparit 10:c58ec47d206c 409 while(1); //++++++++++++++++++++++++++
tsuparit 10:c58ec47d206c 410
tsuparit 9:dfb7951e8532 411 while(1)
tsuparit 9:dfb7951e8532 412 {
tsuparit 9:dfb7951e8532 413 analog=ain0; //read trigger switch ( analog key )
tsuparit 9:dfb7951e8532 414 analogPG=ain1; //read program number by analog switch
tsuparit 9:dfb7951e8532 415
tsuparit 9:dfb7951e8532 416 if (eedata[0]==0)
tsuparit 9:dfb7951e8532 417 {
tsuparit 9:dfb7951e8532 418 PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_OFF;
tsuparit 9:dfb7951e8532 419 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 9:dfb7951e8532 420 //sprintf (str, "an:%f ",analog);
tsuparit 9:dfb7951e8532 421 sprintf (str, "PG0 ");
tsuparit 9:dfb7951e8532 422 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 423
tsuparit 9:dfb7951e8532 424 //save_eeprom();
tsuparit 9:dfb7951e8532 425 }
tsuparit 9:dfb7951e8532 426 else
tsuparit 9:dfb7951e8532 427 {
tsuparit 9:dfb7951e8532 428 PRGLINE3=PRG_OFF;PRGLINE2=PRG_OFF; PRGLINE1=PRG_OFF; PRGLINE0=PRG_ON;
tsuparit 9:dfb7951e8532 429 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 9:dfb7951e8532 430 // sprintf (str, "an:%f ",analog);
tsuparit 9:dfb7951e8532 431 sprintf (str, "PG1 ");
tsuparit 9:dfb7951e8532 432 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 433 }
tsuparit 9:dfb7951e8532 434
tsuparit 9:dfb7951e8532 435 if (IN4==0)
tsuparit 9:dfb7951e8532 436 {
tsuparit 9:dfb7951e8532 437 if (eedata[0]==0)
tsuparit 9:dfb7951e8532 438 {
tsuparit 9:dfb7951e8532 439 eedata[0]=1;
tsuparit 9:dfb7951e8532 440 }
tsuparit 9:dfb7951e8532 441 else
tsuparit 9:dfb7951e8532 442 {
tsuparit 9:dfb7951e8532 443 eedata[0]=0;
tsuparit 9:dfb7951e8532 444 }
tsuparit 9:dfb7951e8532 445 save_eeprom();
tsuparit 9:dfb7951e8532 446 while(IN4==0);
tsuparit 9:dfb7951e8532 447 wait(0.5);
tsuparit 9:dfb7951e8532 448
tsuparit 9:dfb7951e8532 449 }
tsuparit 9:dfb7951e8532 450
tsuparit 9:dfb7951e8532 451 if (analog<0.6)
tsuparit 9:dfb7951e8532 452 {
tsuparit 9:dfb7951e8532 453 //++++++++++++++++++++++++++++++++++++++++
tsuparit 9:dfb7951e8532 454 //pulse trigger
tsuparit 10:c58ec47d206c 455 CAMTRIGGER=TRIGGER_0; //edge trigger
tsuparit 9:dfb7951e8532 456 i=0;
tsuparit 9:dfb7951e8532 457 while(1) //wait camera run busy
tsuparit 9:dfb7951e8532 458 {
tsuparit 9:dfb7951e8532 459 Input_sampling(8);
tsuparit 9:dfb7951e8532 460 if(CAMBUSY!=0) break;
tsuparit 9:dfb7951e8532 461 if (i++>IDELBUSYLOOP)
tsuparit 9:dfb7951e8532 462 {
tsuparit 9:dfb7951e8532 463 CAMERROR=1;
tsuparit 9:dfb7951e8532 464 break;
tsuparit 9:dfb7951e8532 465 }
tsuparit 9:dfb7951e8532 466 }
tsuparit 9:dfb7951e8532 467 //cmaera process run
tsuparit 10:c58ec47d206c 468 CAMTRIGGER=TRIGGER_1; //edge trigger
tsuparit 9:dfb7951e8532 469 i=0;
tsuparit 9:dfb7951e8532 470 while(1) //wait camera complete run
tsuparit 9:dfb7951e8532 471 {
tsuparit 9:dfb7951e8532 472 Input_sampling(8);
tsuparit 9:dfb7951e8532 473 if(CAMBUSY==0) break;
tsuparit 9:dfb7951e8532 474 if (i++>IDELBUSYLOOP)
tsuparit 9:dfb7951e8532 475 {
tsuparit 9:dfb7951e8532 476 CAMERROR=1;
tsuparit 9:dfb7951e8532 477 break;
tsuparit 9:dfb7951e8532 478 }
tsuparit 9:dfb7951e8532 479 }
tsuparit 9:dfb7951e8532 480 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 9:dfb7951e8532 481 sprintf (str, "Trig.. ") ;
tsuparit 9:dfb7951e8532 482 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 483
tsuparit 9:dfb7951e8532 484 wait(1.0); //wait cam finish process
tsuparit 9:dfb7951e8532 485 Input_sampling(8);
tsuparit 9:dfb7951e8532 486 if (IN0) // Total result
tsuparit 9:dfb7951e8532 487 {
tsuparit 9:dfb7951e8532 488 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 9:dfb7951e8532 489 sprintf (str, "FAIL.. ") ;
tsuparit 9:dfb7951e8532 490 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 491
tsuparit 9:dfb7951e8532 492 CAMTOTAL=1;
tsuparit 9:dfb7951e8532 493 OUT1=0;
tsuparit 9:dfb7951e8532 494 }
tsuparit 9:dfb7951e8532 495 else
tsuparit 9:dfb7951e8532 496 {
tsuparit 9:dfb7951e8532 497 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 9:dfb7951e8532 498 sprintf (str, "PASS.. ") ;
tsuparit 9:dfb7951e8532 499 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 500
tsuparit 9:dfb7951e8532 501 CAMTOTAL=0;
tsuparit 9:dfb7951e8532 502 OUT1=1;
tsuparit 9:dfb7951e8532 503 wait(1.0);
tsuparit 9:dfb7951e8532 504 OUT1=0;
tsuparit 9:dfb7951e8532 505 }
tsuparit 9:dfb7951e8532 506
tsuparit 9:dfb7951e8532 507 LiquidCrystal_I2Cinit();
tsuparit 9:dfb7951e8532 508 LiquidCrystal_I2Cbacklight();
tsuparit 9:dfb7951e8532 509 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 9:dfb7951e8532 510 sprintf (str, "Ready..") ;
tsuparit 9:dfb7951e8532 511 LCDI2C4Bit_printIn(str);
tsuparit 9:dfb7951e8532 512
tsuparit 9:dfb7951e8532 513 //++++++++++++++++++++++++++++++++
tsuparit 9:dfb7951e8532 514 }
tsuparit 9:dfb7951e8532 515 }
tsuparit 9:dfb7951e8532 516 #endif
tsuparit 9:dfb7951e8532 517
tsuparit 9:dfb7951e8532 518
tsuparit 7:3cb877cb7393 519
tsuparit 7:3cb877cb7393 520 while(0)
tsuparit 7:3cb877cb7393 521 {
tsuparit 7:3cb877cb7393 522 if (BUZZER_EN!=0) BUZZER=1;
tsuparit 7:3cb877cb7393 523 OUT0=0;
tsuparit 7:3cb877cb7393 524 wait(0.1);
tsuparit 7:3cb877cb7393 525 if (BUZZER_EN!=0) BUZZER=0;
tsuparit 7:3cb877cb7393 526 wait(0.1);
tsuparit 7:3cb877cb7393 527 OUT0=1;
tsuparit 7:3cb877cb7393 528
tsuparit 7:3cb877cb7393 529
tsuparit 7:3cb877cb7393 530 wait(1.0);
tsuparit 7:3cb877cb7393 531
tsuparit 7:3cb877cb7393 532
tsuparit 7:3cb877cb7393 533 }
tsuparit 7:3cb877cb7393 534
tsuparit 7:3cb877cb7393 535
tsuparit 0:5e60f85d6c26 536 while(1)
tsuparit 0:5e60f85d6c26 537 {
tsuparit 5:a693866be4b3 538
tsuparit 5:a693866be4b3 539 if (loopinilcd++>100)
tsuparit 5:a693866be4b3 540 {
tsuparit 5:a693866be4b3 541 loopinilcd=0;
tsuparit 5:a693866be4b3 542 LiquidCrystal_I2Cinit();
tsuparit 5:a693866be4b3 543 LiquidCrystal_I2Cbacklight();
tsuparit 5:a693866be4b3 544 }
tsuparit 5:a693866be4b3 545
tsuparit 3:e658376f6e27 546 Input_sampling(512);
tsuparit 0:5e60f85d6c26 547 LiquidCrystal_I2CsetCursor(0,0);
tsuparit 5:a693866be4b3 548 sprintf (str, "IN:%d OUT:%d ",INPUT,OUTPUT);
tsuparit 3:e658376f6e27 549 LCDI2C4Bit_printIn(str);
tsuparit 0:5e60f85d6c26 550 LiquidCrystal_I2CsetCursor(0,1);
tsuparit 5:a693866be4b3 551
tsuparit 5:a693866be4b3 552
tsuparit 3:e658376f6e27 553 float processtime=1000.0*com_timer.read();
tsuparit 3:e658376f6e27 554 if (processtime<10.0)
tsuparit 3:e658376f6e27 555 {
tsuparit 3:e658376f6e27 556 sprintf (str, "%.1f ms:%s ",processtime,rx_buffer);
tsuparit 3:e658376f6e27 557 }
tsuparit 3:e658376f6e27 558 else
tsuparit 3:e658376f6e27 559 {
tsuparit 3:e658376f6e27 560 sprintf (str, " %.1f ms:%s ",processtime,rx_buffer);
tsuparit 5:a693866be4b3 561 }
tsuparit 5:a693866be4b3 562
tsuparit 0:5e60f85d6c26 563 LCDI2C4Bit_printIn(str);
tsuparit 5:a693866be4b3 564
tsuparit 5:a693866be4b3 565
tsuparit 5:a693866be4b3 566
tsuparit 5:a693866be4b3 567 char strbuf[50];
tsuparit 5:a693866be4b3 568
tsuparit 5:a693866be4b3 569
tsuparit 5:a693866be4b3 570 LiquidCrystal_I2CsetCursor(0,3);
tsuparit 5:a693866be4b3 571 sprintf (str, "#");
tsuparit 5:a693866be4b3 572 sprintf (strbuf, " ");
tsuparit 5:a693866be4b3 573
tsuparit 5:a693866be4b3 574 if (OUT0)
tsuparit 5:a693866be4b3 575 {
tsuparit 5:a693866be4b3 576 sprintf (strbuf, "K1 ");
tsuparit 5:a693866be4b3 577 strcat(str,strbuf);
tsuparit 5:a693866be4b3 578 }
tsuparit 5:a693866be4b3 579
tsuparit 5:a693866be4b3 580 if (OUT1)
tsuparit 5:a693866be4b3 581 {
tsuparit 5:a693866be4b3 582 sprintf (strbuf, "K2 ");
tsuparit 5:a693866be4b3 583 strcat(str,strbuf);
tsuparit 5:a693866be4b3 584 }
tsuparit 5:a693866be4b3 585
tsuparit 5:a693866be4b3 586 if (OUT2)
tsuparit 5:a693866be4b3 587 {
tsuparit 5:a693866be4b3 588 sprintf (strbuf, "K3 ");
tsuparit 5:a693866be4b3 589 strcat(str,strbuf);
tsuparit 5:a693866be4b3 590 }
tsuparit 5:a693866be4b3 591
tsuparit 5:a693866be4b3 592 if (OUT3)
tsuparit 5:a693866be4b3 593 {
tsuparit 5:a693866be4b3 594 sprintf (strbuf, "K4 ");
tsuparit 5:a693866be4b3 595 strcat(str,strbuf);
tsuparit 5:a693866be4b3 596 }
tsuparit 5:a693866be4b3 597
tsuparit 5:a693866be4b3 598
tsuparit 5:a693866be4b3 599
tsuparit 5:a693866be4b3 600
tsuparit 5:a693866be4b3 601
tsuparit 5:a693866be4b3 602 if (OUT4)
tsuparit 5:a693866be4b3 603 {
tsuparit 5:a693866be4b3 604 sprintf (strbuf, "RE ");
tsuparit 5:a693866be4b3 605 }
tsuparit 5:a693866be4b3 606 else
tsuparit 5:a693866be4b3 607 {
tsuparit 5:a693866be4b3 608 sprintf (strbuf, "V.");
tsuparit 5:a693866be4b3 609 }
tsuparit 5:a693866be4b3 610 strcat(str,strbuf);
tsuparit 5:a693866be4b3 611
tsuparit 5:a693866be4b3 612 if (OUT5)
tsuparit 5:a693866be4b3 613 {
tsuparit 5:a693866be4b3 614 sprintf (strbuf, "AC ");
tsuparit 5:a693866be4b3 615 }
tsuparit 5:a693866be4b3 616 else
tsuparit 5:a693866be4b3 617 {
tsuparit 5:a693866be4b3 618 sprintf (strbuf, "DC ");
tsuparit 5:a693866be4b3 619 }
tsuparit 5:a693866be4b3 620 strcat(str,strbuf);
tsuparit 5:a693866be4b3 621
tsuparit 5:a693866be4b3 622 if (OUT6)
tsuparit 5:a693866be4b3 623 {
tsuparit 5:a693866be4b3 624 sprintf (strbuf, "Di ");
tsuparit 5:a693866be4b3 625 strcat(str,strbuf);
tsuparit 5:a693866be4b3 626 }
tsuparit 5:a693866be4b3 627
tsuparit 5:a693866be4b3 628 if (OUT7)
tsuparit 5:a693866be4b3 629 {
tsuparit 5:a693866be4b3 630 sprintf (strbuf, "POW ");
tsuparit 5:a693866be4b3 631 strcat(str,strbuf);
tsuparit 5:a693866be4b3 632 }
tsuparit 5:a693866be4b3 633 sprintf (strbuf, " ");
tsuparit 5:a693866be4b3 634 strcat(str,strbuf);
tsuparit 5:a693866be4b3 635
tsuparit 5:a693866be4b3 636
tsuparit 5:a693866be4b3 637 LCDI2C4Bit_printIn(str);
tsuparit 5:a693866be4b3 638
tsuparit 5:a693866be4b3 639
tsuparit 5:a693866be4b3 640
tsuparit 5:a693866be4b3 641
tsuparit 0:5e60f85d6c26 642 if (com_timer.read()>5.0)
tsuparit 0:5e60f85d6c26 643 {
tsuparit 5:a693866be4b3 644 rx_pointer=0;//Reset at the end
tsuparit 5:a693866be4b3 645 com_timer.stop();
tsuparit 0:5e60f85d6c26 646 }
tsuparit 0:5e60f85d6c26 647
tsuparit 0:5e60f85d6c26 648 }
tsuparit 0:5e60f85d6c26 649
tsuparit 0:5e60f85d6c26 650
tsuparit 0:5e60f85d6c26 651 }