Code:
int8_t Blik[14]={80,80,80,80,80,80,80,80,80,80,80,80,80,80,}; //meetwaarden Sharp IR onder
int8_t BlikMax=80; //hoogst gemeten waarde Blik sensor
uint8_t imaxR=0; //positie hoogste gemeten waarde Blik
int8_t Wand[14]={80,80,80,80,80,80,80,80,80,80,80,80,80,80,}; //meetwaarden Sharp IR boven
int8_t WandMax=80; //hoogst gemeten waarde Wand sensor
uint8_t imaxL=0; //positie hoogste gemeten waarde Wand
int16_t SharpVoor=0 ; //ADC2 ingang van M32
int16_t SharpAchter=0; //ADC3 ingang van M32
uint8_t up=1;
uint8_t i=0;
uint8_t state=0; //toestand blik zoeken
uint8_t refresh=2; //Data volledige scan beschikbaar : refresh==2
void ScanR(uint8_t min,uint8_t max,uint8_t time)
{
if (getStopwatch3()>time)
{
getAllSensors(); //ADC ingangen via I2C van basis halen
SharpVoor = readADC(ADC_3);//ADC3 ingang van M32 lezen
SharpAchter = readADC(ADC_2);//ADC2 ingang van M32 lezen
//if(((adc0-adc1)>25)&((adc0-adc1)<500)) Blik[i]=adc0;else Blik[i]=0; //Blik detectie
if (adc0<100)adc0=100;
if (adc1<100)adc1=100;
Blik[i]=7500/adc0;
Wand[i]=7500/adc1; //Wand detectie
statusLEDs.byte=0b000000;
if (Blik[i]<70) statusLEDs.LED1=1;
if (Blik[i]<50) statusLEDs.LED2=1;
if (Blik[i]<40) statusLEDs.LED3=1;
if (Wand[i]<70) statusLEDs.LED4=1;
if (Wand[i]<50) statusLEDs.LED5=1;
if (Wand[i]<40) statusLEDs.LED6=1;
updateStatusLEDs();
clearLCD();
writeStringLCD("Blik Wand");
setCursorPosLCD(1,0);
writeIntegerLengthLCD(BlikMax,DEC,2);
setCursorPosLCD(1,5);
writeIntegerLengthLCD(imaxR,DEC,2);
setCursorPosLCD(1,9);
writeIntegerLengthLCD(WandMax,DEC,2);
setCursorPosLCD(1,14);
writeIntegerLengthLCD(imaxR,DEC,2);
if (min==max) i=min;
else
{
if (up)i++ ;
else i--;
}
servo(2,(10+i));//Servo 2 = stekker 4
setStopwatch3(0);
if(i<=min) up=1;
if(i>=max)up=0;
Wand[max+1]=Wand[max]; //waarde invoeren uiterste stand +1
if((i==min)|(i==max))//Alleen update van Max waarden indien einde scanbereik
{
if (refresh<2) refresh++;
BlikMax=100;
imaxR=0;
WandMax=100;
imaxL=0;
writeString_P("Blik RAW :");
for(uint8_t j=min;j<=max;j++)
{
writeInteger(Blik[j],DEC);
writeChar(',');
}
writeChar('\n');
for(uint8_t j=0;j<=12;j++)
{
if((j<min)|(j>max)){Blik[j]=100;Wand[j]=100;}
if ((abs(Blik[j]-Wand[j+1])<18)) Blik[j]=90;
if (Blik[j]<BlikMax) {BlikMax=Blik[j];imaxR=j;}
if (Wand[j]<WandMax) {WandMax=Wand[j];imaxL=j;}
}
writeString_P("Blik DET :");
for(uint8_t j=min;j<=max;j++)
{
writeInteger(Blik[j],DEC);
writeChar(',');
}
writeChar('\n');
writeString_P("Wand RAW:");
for(uint8_t j=min;j<=max;j++)
{
writeInteger(Wand[j],DEC);
writeChar(',');
}
writeChar('\n');
//writeInteger(BlikMax,DEC);
//writeChar(',');
//writeInteger(imaxR,DEC);
//writeChar(',');
//writeInteger(state,DEC);
//writeChar(',');
//writeInteger(WandMax,DEC);
//writeChar(',');
//writeInteger(imaxL,DEC);
}
}
}
Lesezeichen