#define OPD 250 // 250us #define SHIKIH 204 // A/D 1.0V #define SHIKIL 716 // A/D 3.5V #define LEDY1 5 //GPIO5 #define LEDR 16 //GPIO16 #define LEDY0 12 //GPIO12 #define LEDG 13 //GPIO13 #define IRD 4 //GPIO4 //#define OP1 TOUT //system_adc_read(); #define SGNMAX 170 // SIGNAL CUNT MAX extern "C" { #include "user_interface.h" } uint signalcu = SGNMAX; uint signal_step1 = SGNMAX/4; uint signal_step2 = signal_step1*2; uint signal_step3 = signal_step1*3; void setup() { pinMode(LEDY1, OUTPUT); pinMode(LEDR, OUTPUT); pinMode(LEDY0, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(IRD, OUTPUT); digitalWrite(LEDY1, LOW); digitalWrite(LEDR, LOW); digitalWrite(LEDY0, LOW); digitalWrite(LEDG, HIGH); } void loop() { //unsigned int 型の入れ物を用意 uint ad = 0; uint fg = 0; for(unsigned int i=0; i<25; i++){ digitalWrite(IRD, LOW); //bit7 delayMicroseconds(OPD); ad = analogRead(A0); //value = analogRead(A0); if(ad > SHIKIL){fg++; } digitalWrite(IRD, HIGH); //bit6 delayMicroseconds(OPD); ad = analogRead(A0); if(ad < SHIKIH){fg++; } digitalWrite(IRD, LOW); //bit5 delayMicroseconds(OPD); ad = analogRead(A0); if(ad > SHIKIL){fg++; } digitalWrite(IRD, LOW); //bit4 delayMicroseconds(OPD); ad = analogRead(A0); if(ad > SHIKIL){fg++; } digitalWrite(IRD, HIGH); //bit3 delayMicroseconds(OPD); ad = analogRead(A0); if(ad < SHIKIH){fg++; } digitalWrite(IRD, LOW); //bit2 delayMicroseconds(OPD); ad = analogRead(A0); if(ad > SHIKIL){fg++; } digitalWrite(IRD, HIGH); //bit1 delayMicroseconds(OPD); ad = analogRead(A0); if(ad < SHIKIH){fg++; } digitalWrite(IRD, HIGH); //bit0 delayMicroseconds(OPD); ad = analogRead(A0); if(ad < SHIKIH){fg++; } } // if(fg > 190){digitalWrite(LED1, HIGH);}else{digitalWrite(LED1, LOW);} // fg = 0; if(fg > 190 ){signalcu = 0;} fg = 0; if(signalcu >= SGNMAX){signalcu = SGNMAX;} if(signalcu < signal_step1){digitalWrite(LEDY1, LOW); digitalWrite(LEDR, HIGH); digitalWrite(LEDY0, LOW); digitalWrite(LEDG, LOW);} //赤信号 else{ if(signalcu < signal_step2){digitalWrite(LEDY1, LOW); digitalWrite(LEDR, LOW); digitalWrite(LEDY0, HIGH); digitalWrite(LEDG, LOW);} //黄信号 else{ if(signalcu < signal_step3){digitalWrite(LEDY1, HIGH); digitalWrite(LEDR, LOW); digitalWrite(LEDY0, LOW); digitalWrite(LEDG, HIGH);} //減速 else{ digitalWrite(LEDY1, LOW); digitalWrite(LEDR, LOW); digitalWrite(LEDY0, LOW); digitalWrite(LEDG, HIGH); //青信号 }}} signalcu++; }