int Mower::readSensor(char type){ switch (type) { // motors------------------------------------------------------------------------------------------------ case SEN_MOTOR_MOW: return ADCMan.read(pinMotorMowSense); break; case SEN_MOTOR_RIGHT: /*checkMotorFault();*/ return ADCMan.read(pinMotorRightSense); break; case SEN_MOTOR_LEFT: /*checkMotorFault();*/ return ADCMan.read(pinMotorLeftSense); break; //case SEN_MOTOR_MOW_RPM: break; // not used - rpm is upated via interrupt // perimeter---------------------------------------------------------------------------------------------- case SEN_PERIM_LEFT: return perimeter.getMagnitude(0); break; //case SEN_PERIM_RIGHT: return Perimeter.getMagnitude(1); break; // battery------------------------------------------------------------------------------------------------ case SEN_BAT_VOLTAGE: ADCMan.read(pinVoltageMeasurement); return ADCMan.read(pinBatteryVoltage); break; case SEN_CHG_VOLTAGE: /*return ADCMan.read(pinChargeVoltage);*/ break; //case SEN_CHG_VOLTAGE: return((int)(((double)analogRead(pinChargeVoltage)) * batFactor)); break; case SEN_CHG_CURRENT: return ADCMan.read(pinChargeCurrent); break; // buttons------------------------------------------------------------------------------------------------ case SEN_BUTTON: return(digitalRead(pinButton)); break; //bumper---------------------------------------------------------------------------------------------------- case SEN_BUMPER_RIGHT: return(digitalRead(pinBumperRight)); break; case SEN_BUMPER_LEFT: return(digitalRead(pinBumperLeft)); break; //drop---------------------------------------------------------------------------------------------------- case SEN_DROP_RIGHT: return(digitalRead(pinDropRight)); break; // Dropsensor - Absturzsensor case SEN_DROP_LEFT: return(digitalRead(pinDropLeft)); break; // Dropsensor - Absturzsensor // sonar--------------------------------------------------------------------------------------------------- //case SEN_SONAR_CENTER: return(readURM37(pinSonarCenterTrigger, pinSonarCenterEcho)); break; case SEN_SONAR_CENTER: return(readHCSR04(pinSonarCenterTrigger, pinSonarCenterEcho)); break; case SEN_SONAR_LEFT: return(readHCSR04(pinSonarLeftTrigger, pinSonarLeftEcho)); break; case SEN_SONAR_RIGHT: return(readHCSR04(pinSonarRightTrigger, pinSonarRightEcho)); break; // case SEN_LAWN_FRONT: return(measureLawnCapacity(pinLawnFrontSend, pinLawnFrontRecv)); break; //case SEN_LAWN_BACK: return(measureLawnCapacity(pinLawnBackSend, pinLawnBackRecv)); break; // imu------------------------------------------------------------------------------------------------------- //case SEN_IMU: imuYaw=imu.ypr.yaw; imuPitch=imu.ypr.pitch; imuRoll=imu.ypr.roll; break; // rtc-------------------------------------------------------------------------------------------------------- case SEN_RTC: //if (!readDS1307(datetime)) { // Console.println("RTC data error!"); //addErrorCounter(ERR_RTC_DATA); //setNextState(STATE_ERROR, 0); //} break; // rain-------------------------------------------------------------------------------------------------------- case SEN_RAIN: if (digitalRead(pinRain)==LOW) return 1; break; } return 0; }
// call this in main loop void SonarControl::run(){ if (millis() < nextSonarTime) return; nextSonarTime = millis() + 1000; if (sonarRightUse) sonarDistRight = readHCSR04(pinSonarRightTrigger, pinSonarRightEcho); if (sonarLeftUse) sonarDistLeft = readHCSR04(pinSonarLeftTrigger, pinSonarLeftEcho); if (sonarCenterUse) sonarDistCenter = readHCSR04(pinSonarCenterTrigger, pinSonarCenterEcho); if ((sonarDistCenter != NO_ECHO) && (sonarDistCenter < sonarTriggerBelow)) sonarDistCounter++; if ((sonarDistRight != NO_ECHO) && (sonarDistRight < sonarTriggerBelow)) sonarDistCounter++; if ((sonarDistLeft != NO_ECHO) && (sonarDistLeft < sonarTriggerBelow)) sonarDistCounter++; }