Motor control for robotic arm
Dependencies: MCP23017 WattBob_TextLCD mbed
Fork of Balanced Arm by
HandShake/HandShake.cpp
- Committer:
- ADAMSTRUTT
- Date:
- 2016-02-01
- Revision:
- 11:7f74fb17c328
- Parent:
- 10:d7cce35b7bfd
File content as of revision 11:7f74fb17c328:
//********************************************************************* // Author: Adam Strutt // File: (PS2C.cpp) PlayStation 2 controller // Version: 1.0v // Date: 11/12/2015 //********************************************************************* #include <string> #include "HandShake.h" #include "mbed.h" #include "MCP23017.h" #include "WattBob_TextLCD.h" #include "AX12.h" MCP23017 *par_port; WattBob_TextLCD *lcd; Serial ax12_bus(p28, p27); AX12 my_AX12(ax12_bus, p29, 1); //********************************************************************* // Object: PC_HandShake // Description: To create a HandShake object. //********************************************************************* PC_HandShake::PC_HandShake(Serial& PCbus) : _PCbus(PCbus){ par_port = new MCP23017(p9, p10, 0x40); par_port->config(0x0F00, 0x0F00, 0x0F00); lcd = new WattBob_TextLCD(par_port); par_port->write_bit(1, BL_BIT); } //********************************************************************* // Method: PC_Connect // Description: This method is used to connect the PC to the mbed. //********************************************************************* void PC_HandShake::PC_Connect(void){ lcd->cls(); lcd->printf("Connecting"); lcd->locate(1,0); lcd->printf("to PC"); while('s' != _PCbus.getc()){ } while('s' != _PCbus.getc()){ } lcd->cls(); lcd->printf("Conneced\n"); wait(2); } void PC_HandShake::PC_Read(void){ char Command[8]; lcd->cls(); lcd->printf("Reading PC"); while(_PCbus.readable()==0){} Command[0] = _PCbus.getc(); if(Command[0]=='s') { while(_PCbus.readable()==0){} Command[1] = _PCbus.getc(); if(Command[1]=='c') { for(int x=2;x<=7;x++) { while(_PCbus.readable()==0){} Command[x] = _PCbus.getc(); } lcd->cls(); lcd->printf("%s", Command); wait(1); switch(Command[2]){ case '0': char angle[3]; angle[0] = Command[4]; angle[1] = Command[5]; angle[2] = Command[6]; int angle2 = atoi(angle); lcd->cls(); lcd->printf("%i", angle2); my_AX12.SetGoal(angle2); break; default: break; } } wait(1); } } void PC_HandShake::PC_WriteLoad(char _servo){ char _data[3]; char _returnToPC[8]; lcd->cls(); lcd->printf("Writing to PC"); my_AX12.GetLoad(_data); //lcd->cls(); // lcd->printf("%s", _data); _returnToPC[0] = 'S'; _returnToPC[1] = 'D'; _returnToPC[2] = '0'; _returnToPC[3] = _servo; _returnToPC[4] = _data[0]; _returnToPC[5] = _data[1]; _returnToPC[6] = _data[2]; _returnToPC[7] = '0'; _PCbus.printf(_returnToPC); wait(1); }