#include <16F873A.h> #fuses HS,NOWDT,NOLVP,NOPROTECT #use delay(CLOCK=20000000) //クロック20MHz #use RS232(BAUD=9600,xmit=PIN_C6,rcv=PIN_C7) int i,j; long a,b,c,vd; int send; char ch;int send2; void p1(){ for(i=0;i<23;i++){ output_c(0); delay_us(12); output_c(7); delay_us(11); } } void p0(){ output_c(7); delay_us(600); } #int_rda void rda_isr(){//受信したよ ch=getchar(); putchar(ch); } void main(){ i=0;j=0;send=8;ch='a'; a=0;b=0;c=0;vd=0; port_b_pullups(true); enable_interrupts(INT_RDA);//割り込み enable_interrupts(GLOBAL);//割り込み許可 setup_adc_ports(AN0);//AD変換のportセット setup_adc(ADC_clock_div_32); set_adc_channel(0);//ADをa0で delay_ms(200); while(1){ vd=0;a=0;b=0;c=0; set_adc_channel(0); for(i=0;i<5;i++){ vd=read_adc(); delay_ms(1); a+=vd; send2+=input(PIN_B0); } a=a/5; vd=0; set_adc_channel(1); for(i=0;i<5;i++){ vd=read_adc(); delay_ms(1); b+=vd; send2+=input(PIN_B0); } b=b/5; vd=0; set_adc_channel(2); for(i=0;i<5;i++){ vd=read_adc(); delay_ms(1); c+=vd; send2+=input(PIN_B0); } c=c/5; if(send2>12)send2=1; else send2=0; // printf("a%4ld:%4ld;%4ld\r\n",a,b,c); // delay_ms(200); if(c>110){//90以上回転していない if(159c){ if(a<110){ if(b<110) send=7; else if(b>148) send=5; else send=6; } else if(a>130){ if(b<110) send=1; else if(b>130) send=3; else send=2; } else{ if(b<110) send=0; else if(b>130) send=4; else send=9;//縦に加速度がかかった } } } // a○○\r\n ↓ /*if(ch=='a') printf("%3ld:%3ld:%3ld\r\n",a,b,c); else printf("8:%1d\:%1d\r\n",send,send2); delay_ms(100); */ switch(send){ case 0: if(send2==0){ p1();p0();p1(); p1();p1();p1();p1(); p0(); p1(); } else{ p1();p0();p1(); p1();p1();p1();p1(); p1(); p1(); } break; case 1: if(send2==0){ p1();p0();p1(); p1();p0();p0();p0(); p0(); p1(); } else{ p1();p0();p1(); p1();p0();p0();p0(); p1(); p1(); } break; case 2: if(send2==0){ p1();p0();p1(); p0();p1();p0();p0(); p0(); p1(); } else{ p1();p0();p1(); p0();p1();p0();p0(); p1(); p1(); } break; case 3: if(send2==0){ p1();p0();p1(); p1();p1();p0();p0(); p0(); p1(); } else{ p1();p0();p1(); p1();p1();p0();p0(); p1(); p1(); } break; case 4: if(send2==0){ p1();p0();p1(); p0();p0();p1();p0(); p0(); p1(); } else{ p1();p0();p1(); p0();p0();p1();p0(); p1(); p1(); } break; case 5: if(send2==0){ p1();p0();p1(); p1();p0();p1();p0(); p0(); p1(); } else{ p1();p0();p1(); p1();p0();p1();p0(); p1(); p1(); } break; case 6: if(send2==0){ p1();p0();p1(); p0();p1();p1();p0(); p0(); p1(); } else{ p1();p0();p1(); p0();p1();p1();p0(); p1();p1(); } break; case 7: if(send2==0){ p1();p0();p1(); p1();p1();p1();p0(); p0(); } else{ p1();p0();p1(); p1();p1();p1();p0(); p1();p1(); } break; case 8: if(send2==0){ p1();p0();p1(); p0();p0();p0();p1(); p0(); p1(); } else{ p1();p0();p1(); p0();p0();p0();p1(); p1(); p1(); } break; case 9: if(send2==0){ p1();p0();p1(); p1();p0();p0();p1(); p0(); p1(); } else{ p1();p0();p1(); p1();p0();p0();p1(); p1();p1(); } break; default: break; } delay_ms(10); } }