/* void* serial_interface(void* mParam) // serial port used for arduino connections & GPS. { LoadCell_SerialInterface* mFoot = (LoadCell_SerialInterface*) mParam; static char app_name[12]; static char read_r[4]; static char no_write_w[4]; static char device_p[4]; static char read_[20]; static char no_write_[20]; static char device_[20]; sprintf(app_name, "./avisual"); sprintf(read_r, "-R"); sprintf(no_write_w, "-w"); sprintf(device_p, "-p"); sprintf(read_, "ascii"); sprintf(no_write_, "0"); //printf("mFoot=%p; left_foot=%p\n", mFoot, &left_foot); if (mFoot == &left_foot) { sprintf(device_, "/dev/ttyACM0"); mFoot->_cl_rx_dump = 1; mFoot->_cl_rx_dump_ascii = 1; mFoot->_cl_port = strdup("/dev/ttyACM0"); mFoot->_cl_tx_bytes = 0; mFoot->left_foot = false; } else { mFoot->_cl_port = strdup("/dev/ttyACM1"); mFoot->_cl_rx_dump = 1; mFoot->_cl_rx_dump_ascii = 1; mFoot->_cl_tx_bytes = 0; mFoot->left_foot = true; //sprintf(device_, "/dev/ttyACM1"); } char * argv[] = { app_name, read_r, read_, no_write_w, no_write_, device_p, device_ }; mFoot->serial_loadcell_main( 7, argv ); return NULL; } */ void read_main_battery() { // mot.SetMainVoltages ( address, 100, 250 ); // mot.SetLogicVoltages( address, 100, 250 ); uint16_t volts1 = mot.ReadMainBatteryVoltage( 0x80 ); float volt = ((float)volts1)/10.; printf("\nMain Battery board #1 = %6.1f volts\n", volt ); volts1 = mot.ReadLogicBatteryVoltage( 0x80 ); volt = ((float)volts1)/10.; printf("\nLogic Battery board #1 = %6.1f volts\n", volts1 ); //mot.SetM1MaxCurrent(0x80, 20.0); //mot.SetM2MaxCurrent(0x80, 20.0); }
void CheckVoltages(void) { #ifdef AVS_PIN uint16_t wVS = analogRead(AVS_PIN); #ifdef DEBUG if (g_fDebugOutput && (wVS != g_wVSPrev)) { Serial.print("VS: "); Serial.println(wVS, DEC); g_wVSPrev = wVS; } #endif if ((wVS < (uint16_t)AVAL_MIN) && g_fServosInit) { // detach any servos we may have... MSound( 3, 100, 2500, 100, 2500, 100, 2500); } #elif defined(PACKET_MODE) // Using Roboclaw in packet mode, so we can ask it for the // motor voltages... Note: This requires us to send and receive // stuff serially, so probably only do this every so often. if ((millis()-g_ulCVTimeLast) > 1000) { // more than a second since we last tested uint16_t wVS = RClaw.ReadMainBatteryVoltage(PACKETS_ADDRESS); #ifdef DEBUG if (g_fDebugOutput && (wVS != g_wVSPrev)) { Serial.print("VS: "); Serial.println(wVS, DEC); g_wVSPrev = wVS; } #endif if ((wVS < (uint16_t)VOLTAGE_MIN1) && g_fServosInit) { // detach any servos we may have... MSound( 3, 100, 2500, 100, 2500, 100, 2500); } g_ulCVTimeLast = millis(); // remember last we did it. } #endif }