aboutsummaryrefslogtreecommitdiff
path: root/libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp
diff options
context:
space:
mode:
authorFede85 <f.vanzati@gmail.com>2013-07-03 22:00:02 +0200
committerFede85 <f.vanzati@gmail.com>2013-07-03 22:00:02 +0200
commitfd8c367304fe62a107332db19880c88f9ac0d082 (patch)
treea6a2713b1e788a2eb6f95ef701a0a01e0d258c67 /libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp
parentcb3003082e7e140850071eba914c0b4347bc3bf1 (diff)
SPI library to the new format and moved Robot_Motor and Robot_Control libraries
Diffstat (limited to 'libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp')
-rw-r--r--libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp265
1 files changed, 0 insertions, 265 deletions
diff --git a/libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp b/libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp
deleted file mode 100644
index 7740a06..0000000
--- a/libraries/Robot_Motor/ArduinoRobotMotorBoard.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-#include "ArduinoRobotMotorBoard.h"
-#include "EasyTransfer2.h"
-#include "Multiplexer.h"
-#include "LineFollow.h"
-
-RobotMotorBoard::RobotMotorBoard(){
- //LineFollow::LineFollow();
-}
-/*void RobotMotorBoard::beginIRReceiver(){
- IRrecv::enableIRIn();
-}*/
-void RobotMotorBoard::begin(){
- //initialze communication
- Serial1.begin(9600);
- messageIn.begin(&Serial1);
- messageOut.begin(&Serial1);
-
- //init MUX
- uint8_t MuxPins[]={MUXA,MUXB,MUXC};
- this->IRs.begin(MuxPins,MUX_IN,3);
- pinMode(MUXI,INPUT);
- digitalWrite(MUXI,LOW);
-
- isPaused=false;
-}
-
-void RobotMotorBoard::process(){
- if(isPaused)return;//skip process if the mode is paused
-
- if(mode==MODE_SIMPLE){
- //Serial.println("s");
- //do nothing? Simple mode is just about getting commands
- }else if(mode==MODE_LINE_FOLLOW){
- //do line following stuff here.
- LineFollow::runLineFollow();
- }else if(mode==MODE_ADJUST_MOTOR){
- //Serial.println('a');
- //motorAdjustment=analogRead(POT);
- //setSpeed(255,255);
- //delay(100);
- }
-}
-void RobotMotorBoard::pauseMode(bool onOff){
- if(onOff){
- isPaused=true;
- }else{
- isPaused=false;
- }
- stopCurrentActions();
-
-}
-void RobotMotorBoard::parseCommand(){
- uint8_t modeName;
- uint8_t codename;
- int value;
- int speedL;
- int speedR;
- if(this->messageIn.receiveData()){
- //Serial.println("data received");
- uint8_t command=messageIn.readByte();
- //Serial.println(command);
- switch(command){
- case COMMAND_SWITCH_MODE:
- modeName=messageIn.readByte();
- setMode(modeName);
- break;
- case COMMAND_RUN:
- if(mode==MODE_LINE_FOLLOW)break;//in follow line mode, the motor does not follow commands
- speedL=messageIn.readInt();
- speedR=messageIn.readInt();
- motorsWrite(speedL,speedR);
- break;
- case COMMAND_MOTORS_STOP:
- motorsStop();
- break;
- case COMMAND_ANALOG_WRITE:
- codename=messageIn.readByte();
- value=messageIn.readInt();
- _analogWrite(codename,value);
- break;
- case COMMAND_DIGITAL_WRITE:
- codename=messageIn.readByte();
- value=messageIn.readByte();
- _digitalWrite(codename,value);
- break;
- case COMMAND_ANALOG_READ:
- codename=messageIn.readByte();
- _analogRead(codename);
- break;
- case COMMAND_DIGITAL_READ:
- codename=messageIn.readByte();
- _digitalRead(codename);
- break;
- case COMMAND_READ_IR:
- _readIR();
- break;
- case COMMAND_READ_TRIM:
- _readTrim();
- break;
- case COMMAND_PAUSE_MODE:
- pauseMode(messageIn.readByte());//onOff state
- break;
- case COMMAND_LINE_FOLLOW_CONFIG:
- LineFollow::config(
- messageIn.readByte(), //KP
- messageIn.readByte(), //KD
- messageIn.readByte(), //robotSpeed
- messageIn.readByte() //IntegrationTime
- );
- break;
- }
- }
- //delay(5);
-}
-uint8_t RobotMotorBoard::parseCodename(uint8_t codename){
- switch(codename){
- case B_TK1:
- return TK1;
- case B_TK2:
- return TK2;
- case B_TK3:
- return TK3;
- case B_TK4:
- return TK4;
- }
-}
-uint8_t RobotMotorBoard::codenameToAPin(uint8_t codename){
- switch(codename){
- case B_TK1:
- return A0;
- case B_TK2:
- return A1;
- case B_TK3:
- return A6;
- case B_TK4:
- return A11;
- }
-}
-
-void RobotMotorBoard::setMode(uint8_t mode){
- if(mode==MODE_LINE_FOLLOW){
- LineFollow::calibIRs();
- }
- /*if(mode==SET_MOTOR_ADJUSTMENT){
- save_motor_adjustment_to_EEPROM();
- }
- */
- /*if(mode==MODE_IR_CONTROL){
- beginIRReceiver();
- }*/
- this->mode=mode;
- //stopCurrentActions();//If line following, this should stop the motors
-}
-
-void RobotMotorBoard::stopCurrentActions(){
- motorsStop();
- //motorsWrite(0,0);
-}
-
-void RobotMotorBoard::motorsWrite(int speedL, int speedR){
- /*Serial.print(speedL);
- Serial.print(" ");
- Serial.println(speedR);*/
- //motor adjustment, using percentage
- _refreshMotorAdjustment();
-
- if(motorAdjustment<0){
- speedR*=(1+motorAdjustment);
- }else{
- speedL*=(1-motorAdjustment);
- }
-
- if(speedL>0){
- analogWrite(IN_A1,speedL);
- analogWrite(IN_A2,0);
- }else{
- analogWrite(IN_A1,0);
- analogWrite(IN_A2,-speedL);
- }
-
- if(speedR>0){
- analogWrite(IN_B1,speedR);
- analogWrite(IN_B2,0);
- }else{
- analogWrite(IN_B1,0);
- analogWrite(IN_B2,-speedR);
- }
-}
-void RobotMotorBoard::motorsWritePct(int speedLpct, int speedRpct){
- //speedLpct, speedRpct ranges from -100 to 100
- motorsWrite(speedLpct*2.55,speedRpct*2.55);
-}
-void RobotMotorBoard::motorsStop(){
- analogWrite(IN_A1,255);
- analogWrite(IN_A2,255);
-
- analogWrite(IN_B1,255);
- analogWrite(IN_B2,255);
-}
-
-
-/*
-*
-*
-* Input and Output ports
-*
-*
-*/
-void RobotMotorBoard::_digitalWrite(uint8_t codename,bool value){
- uint8_t pin=parseCodename(codename);
- digitalWrite(pin,value);
-}
-void RobotMotorBoard::_analogWrite(uint8_t codename,int value){
- //There's no PWM available on motor board
-}
-void RobotMotorBoard::_digitalRead(uint8_t codename){
- uint8_t pin=parseCodename(codename);
- bool value=digitalRead(pin);
- messageOut.writeByte(COMMAND_DIGITAL_READ_RE);
- messageOut.writeByte(codename);
- messageOut.writeByte(value);
- messageOut.sendData();
-}
-void RobotMotorBoard::_analogRead(uint8_t codename){
- uint8_t pin=codenameToAPin(codename);
- int value=analogRead(pin);
- messageOut.writeByte(COMMAND_ANALOG_READ_RE);
- messageOut.writeByte(codename);
- messageOut.writeInt(value);
- messageOut.sendData();
-}
-int RobotMotorBoard::IRread(uint8_t num){
- IRs.selectPin(num-1); //To make consistant with the pins labeled on the board
- return IRs.getAnalogValue();
-}
-
-void RobotMotorBoard::_readIR(){
- //Serial.println("readIR");
- int value;
- messageOut.writeByte(COMMAND_READ_IR_RE);
- for(int i=1;i<6;i++){
- value=IRread(i);
- messageOut.writeInt(value);
- }
- messageOut.sendData();
-}
-
-void RobotMotorBoard::_readTrim(){
- int value=analogRead(TRIM);
- messageOut.writeByte(COMMAND_READ_TRIM_RE);
- messageOut.writeInt(value);
- messageOut.sendData();
-}
-
-void RobotMotorBoard::_refreshMotorAdjustment(){
- motorAdjustment=map(analogRead(TRIM),0,1023,-30,30)/100.0;
-}
-
-void RobotMotorBoard::reportActionDone(){
- setMode(MODE_SIMPLE);
- messageOut.writeByte(COMMAND_ACTION_DONE);
- messageOut.sendData();
-}
-
-RobotMotorBoard RobotMotor=RobotMotorBoard(); \ No newline at end of file