Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int getSmoothIRSensor(int sensorpin, char character){
- switch (character){
- case 'X':
- digitalWrite(leftSensorIr, HIGH);
- break;
- case 'Y':
- digitalWrite(centerSensorIr, HIGH);
- break;
- case 'Z':
- digitalWrite(rightSensorIr, HIGH);
- break;
- }
- delay(5);
- int returnval = 0;
- returnval = irValueToCm(digitalRead(sensorpin));
- digitalWrite(leftSensorIr, LOW);
- digitalWrite(centerSensorIr, LOW);
- digitalWrite(rightSensorIr, LOW);
- int sortedValues[NB_LECTURE];
- for(int i=0;i<NB_LECTURE;i++){
- int value = irValueToCm(analogRead(sensorpin));
- int j;
- if(value<sortedValues[0] || i==0){
- j=0; //insert at first position
- }else{
- for(j=1;j<i;j++){
- if(sortedValues[j-1]<=value && sortedValues[j]>=value){
- // j is insert position
- break;
- }
- }
- }
- for(int k=i;k>j;k--){
- // move all values higher than current reading up one position
- sortedValues[k]=sortedValues[k-1];
- }
- sortedValues[j]=value; //insert current reading
- }
- //return scaled mode of NB_MEDIAN*2 values
- for(int i=NB_LECTURE/2-NB_MEDIAN;i<(NB_LECTURE/2+NB_MEDIAN);i++){
- returnval +=sortedValues[i];
- }
- returnval = returnval/(NB_MEDIAN*2);
- return returnval;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement