Motor control for robotic arm

Dependencies:   MCP23017 WattBob_TextLCD mbed

Fork of Balanced Arm by Balanced Arm

Committer:
wm70
Date:
Fri Jan 29 16:56:35 2016 +0000
Revision:
9:87558e7cfecb
Parent:
7:40d7d88deba3
Child:
10:d7cce35b7bfd
With new handshake

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ADAMSTRUTT 7:40d7d88deba3 1 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 2 // Author: Adam Strutt
ADAMSTRUTT 7:40d7d88deba3 3 // File: (PS2C.cpp) PlayStation 2 controller
ADAMSTRUTT 7:40d7d88deba3 4 // Version: 1.0v
ADAMSTRUTT 7:40d7d88deba3 5 // Date: 11/12/2015
ADAMSTRUTT 7:40d7d88deba3 6 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 7
ADAMSTRUTT 7:40d7d88deba3 8 #include <string>
ADAMSTRUTT 7:40d7d88deba3 9 #include "HandShake.h"
ADAMSTRUTT 7:40d7d88deba3 10 #include "mbed.h"
ADAMSTRUTT 7:40d7d88deba3 11 #include "MCP23017.h"
ADAMSTRUTT 7:40d7d88deba3 12 #include "WattBob_TextLCD.h"
ADAMSTRUTT 7:40d7d88deba3 13
wm70 9:87558e7cfecb 14 #include "AX12.h"
wm70 9:87558e7cfecb 15
ADAMSTRUTT 7:40d7d88deba3 16
ADAMSTRUTT 7:40d7d88deba3 17
ADAMSTRUTT 7:40d7d88deba3 18 MCP23017 *par_port1;
ADAMSTRUTT 7:40d7d88deba3 19 WattBob_TextLCD *lcd1;
ADAMSTRUTT 7:40d7d88deba3 20
ADAMSTRUTT 7:40d7d88deba3 21 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 22 // Object: PC_HandShake
ADAMSTRUTT 7:40d7d88deba3 23 // Description: To create a HandShake object.
ADAMSTRUTT 7:40d7d88deba3 24 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 25
wm70 9:87558e7cfecb 26 PC_HandShake::PC_HandShake(Serial& PCbus, AX12& ax12)
wm70 9:87558e7cfecb 27 : _PCbus(PCbus), _ax12 (ax12){
ADAMSTRUTT 7:40d7d88deba3 28
ADAMSTRUTT 7:40d7d88deba3 29 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 30 // Description:Setting up the LCD display and turning on LCD display
ADAMSTRUTT 7:40d7d88deba3 31 // Pins: p8, p10
ADAMSTRUTT 7:40d7d88deba3 32 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 33 par_port1 = new MCP23017(p9, p10, 0x40);
ADAMSTRUTT 7:40d7d88deba3 34 par_port1->config(0x0F00, 0x0F00, 0x0F00);
ADAMSTRUTT 7:40d7d88deba3 35 lcd1 = new WattBob_TextLCD(par_port1);
ADAMSTRUTT 7:40d7d88deba3 36 par_port1->write_bit(1,BL_BIT);
ADAMSTRUTT 7:40d7d88deba3 37 }
ADAMSTRUTT 7:40d7d88deba3 38
ADAMSTRUTT 7:40d7d88deba3 39 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 40 // Method: PC_Connect
ADAMSTRUTT 7:40d7d88deba3 41 // Description: This method is used to connect the PC to the mbed.
ADAMSTRUTT 7:40d7d88deba3 42 //*********************************************************************
ADAMSTRUTT 7:40d7d88deba3 43
ADAMSTRUTT 7:40d7d88deba3 44 void PC_HandShake::PC_Connect(void){
ADAMSTRUTT 7:40d7d88deba3 45 lcd1->cls();
ADAMSTRUTT 7:40d7d88deba3 46 lcd1->printf("Connecting");
ADAMSTRUTT 7:40d7d88deba3 47 lcd1->locate(1,0);
ADAMSTRUTT 7:40d7d88deba3 48 lcd1->printf("to PC");
ADAMSTRUTT 7:40d7d88deba3 49 wait(2);
ADAMSTRUTT 7:40d7d88deba3 50 lcd1->cls();
ADAMSTRUTT 7:40d7d88deba3 51 lcd1->printf("Waiting\n");
ADAMSTRUTT 7:40d7d88deba3 52 while('S' != _PCbus.getc()){
ADAMSTRUTT 7:40d7d88deba3 53 }
ADAMSTRUTT 7:40d7d88deba3 54 while('S' != _PCbus.getc()){
ADAMSTRUTT 7:40d7d88deba3 55 }
ADAMSTRUTT 7:40d7d88deba3 56 lcd1->cls();
ADAMSTRUTT 7:40d7d88deba3 57 lcd1->printf("Conneced\n");
ADAMSTRUTT 7:40d7d88deba3 58 wait(2);
wm70 9:87558e7cfecb 59 }
wm70 9:87558e7cfecb 60
wm70 9:87558e7cfecb 61 void PC_HandShake::PC_Read(void){
wm70 9:87558e7cfecb 62 lcd1->cls();
wm70 9:87558e7cfecb 63 lcd1->printf("Reading");
wm70 9:87558e7cfecb 64 lcd1->locate(1,0);
wm70 9:87558e7cfecb 65 lcd1->printf("to PC");
wm70 9:87558e7cfecb 66 wait(2);
wm70 9:87558e7cfecb 67 lcd1->cls();
wm70 9:87558e7cfecb 68 lcd1->printf("Waiting\n");
wm70 9:87558e7cfecb 69 while('s' != _PCbus.getc()){
wm70 9:87558e7cfecb 70 }
wm70 9:87558e7cfecb 71 while(_PCbus.readable()==0){}
wm70 9:87558e7cfecb 72 char _byteOne=_PCbus.getc();
wm70 9:87558e7cfecb 73
wm70 9:87558e7cfecb 74 while(_PCbus.readable()==0){}
wm70 9:87558e7cfecb 75 char _byteTwo=_PCbus.getc();
wm70 9:87558e7cfecb 76
wm70 9:87558e7cfecb 77 if (_byteOne=='s'){
wm70 9:87558e7cfecb 78 }else if (_byteOne=='c'){
wm70 9:87558e7cfecb 79 switch(_byteTwo)
wm70 9:87558e7cfecb 80 {
wm70 9:87558e7cfecb 81 case '0':
wm70 9:87558e7cfecb 82 _ax12.SetGoal(100);
wm70 9:87558e7cfecb 83 break;
wm70 9:87558e7cfecb 84 case '1':
wm70 9:87558e7cfecb 85 _ax12.SetGoal(0);
wm70 9:87558e7cfecb 86 break;
wm70 9:87558e7cfecb 87 }}
wm70 9:87558e7cfecb 88
wm70 9:87558e7cfecb 89
wm70 9:87558e7cfecb 90 lcd1->cls();
wm70 9:87558e7cfecb 91 lcd1->printf("Reading\n");
wm70 9:87558e7cfecb 92 wait(2);
ADAMSTRUTT 7:40d7d88deba3 93 }