Remote inc coolant nozzle control program
Dependencies: mbed reScale USBDevice
Dependents: Nozzle_inputs Nozzle_display
Diff: main.cpp
- Revision:
- 2:79c03ac27b72
- Parent:
- 0:09419d572e90
- Child:
- 4:fa0af3a8e089
--- a/main.cpp Sun Jan 06 18:28:18 2019 +0000 +++ b/main.cpp Fri Feb 08 20:51:59 2019 +0000 @@ -1,184 +1,191 @@ #include "mbed.h" -#include "Adafruit_ST7735.h" -#include "RotaryEncoder.h" + #include "reScale.h" -#include "Ee24xx08.h" + + +//Serial pc(USBTX, USBRX); -// DISPLAY INIT: +Serial device(P0_14, P0_13, 9600); // RS 485 TX RX? + +reScale servo1Scale(45,0,750,1800); //19850 is 1.0v from voltage divider at 10k. -#define BLACK 0x0000 -#define BLUE 0x001F -#define RED 0xF800 -#define GREEN 0x07E0 -#define CYAN 0x07FF -#define MAGENTA 0xF81F -#define YELLOW 0xFFE0 -#define WHITE 0xFFFF + PwmOut myServo(P1_13); //display board -//const int addrW = 0xA2; //1010 0010 write word block B0 -//const int addrR = 0xA2; //1010 0011 read word block B0 - -long currentSpot = 0; - +//char tens = '0'; +//char ones = '1'; -DigitalOut myled(LED1); -//DigitalOut out(D2); + int Tens = 0; + int Ones = 0; + + int currentNozzle = 0; -//I2C i2c(P0_5, P0_4); -Serial ser(USBTX,USBRX); -I2C iic(P0_5, P0_4); - -Ee24xx08 eeprom(&iic); +int index = 0; // for parsing serial -Adafruit_ST7735 tft(D11, D12, D13, D10, D7, D9); // MOSI, MISO, SCLK, SSEL, TFT_DC, TFT_RST +int n1Pos = 0; - -RotaryEncoder knob1(D2, D3, -50, 0, 0); + int servo1Pos = 0; -reScale servo1Scale(-45,0,750,1800); //19850 is 1.0v from voltage divider at 10k. +DigitalOut dir(P0_15); +DigitalOut servo2(P2_2); -//SDFileSystem sd(P1_20, P1_21, P1_22, P1_23, "sd"); // the pinout on the mbed Cool Components workshop board - - -PwmOut myServo(D4); int main() { - // out =1; - + + - - - - - tft.initR(INITR_GREENTAB); // initialize a ST7735S chip, black tab - - tft.setRotation(3); - - tft.fillScreen(BLACK); - tft.setCursor(30,120); - tft.setTextColor(WHITE); - tft.setTextWrap(true); - tft.printf("AccuBlast v0"); - - int mode=1; // 0= manual, 1=auto - int lastMode=0; // placeholder for changing display. - - int toolNo = 12; - int lastToolNo = 99; - - int n1Pos = 0; - int lastN1Pos = 150; - - int servo1Pos = 0; +//pc.printf("HELLO WORLD\n"); + + + + uint8_t c = 0; // for 485 link - myServo.period_ms(20); - // myServo.pulsewidth_us(MID); //NB in microseconds - - - /* - char data[2]; -data[0] = 0x01; -data[1] = 0x01; - + while(1) { + +while (device.readable()) + { + // c = device.getc(); + // if(c =='1'){ + // servo1=1; + // } + - char cmd[3]; - cmd[0] = 0x01; - cmd[1] = 0x03; - i2c.start(); - i2c.write(addrW, cmd, 2); - cmd[0] = 0x00; - cmd[1] = 0x00; - i2c.write(addrW, cmd, 2); - i2c.stop(); - i2c.start(); - //i2c.write(addrR); - i2c.read(addrR, data, 2); - */ - - char str[4] = "-45"; - char str2[12] = "0"; - char str3[4] = "3"; - - - eeprom.write(01,str,4); - wait(1); - eeprom.write(05,str3,4); - wait(1); - - - eeprom.read(01,str2,4); - // ser.printf("%s\r\n",str); - + + c = device.getc(); + + if (c == 'N'){ + + index = 1; + + } + + if (index == 1){ + c = device.getc(); + if (c == '1'){ // N1 + currentNozzle = 1; + index = 3; + + + } + else if (c == '2'){ //N2 + currentNozzle = 2; + index = 3; + + } + + } + - tft.setCursor(30,110); - tft.setTextColor(WHITE); - tft.setTextWrap(true); - tft.printf("%s\r\n",str2); - -int T1 = int(str2[4]); - - tft.setCursor(30,80); - tft.setTextColor(WHITE); - tft.setTextWrap(true); - tft.printf("%d", T1); - - while(1) { - - n1Pos = knob1.getVal(); - -servo1Pos = servo1Scale.from(knob1.getVal()); - -myServo.pulsewidth_us(servo1Pos); + + if (index == 3){ + + c = device.getc(); + + if (c=='0'){ + Tens = 0; + index = 4; + + } + + else if (c=='1'){ + Tens = 1; + index = 4; + + } + + else if (c=='2'){ + Tens = 2; + index = 4; + + } + + else if (c=='3'){ + Tens = 3; + index = 4; + + } + + else if (c=='4'){ + Tens = 4; + index = 4; + } + + + } + + if (index == 4){ + + c = device.getc(); + + if (c=='0'){ + Ones = 0; + + } + + else if (c=='1'){ + Ones = 1; + + + } + + else if (c=='2'){ + Ones = 2; + + } + + else if (c=='3'){ + Ones = 3; + + } + + else if (c=='4'){ + Ones = 4; + } + + else if (c=='5'){ + Ones = 5; + } + + else if (c=='6'){ + Ones = 6; + } + + else if (c=='7'){ + Ones = 7; + } + + else if (c=='8'){ + Ones = 8; + } + + else if (c=='9'){ + Ones = 9; + } + + else if (c=='0'){ + Ones = 0; + } + + + + n1Pos = ((Tens * 10) + Ones); + + if ((n1Pos == 45) && (currentNozzle==1)){ + servo2=1; + } + + servo1Pos = servo1Scale.from(n1Pos); - if (mode != lastMode) { - if (mode==1){ - tft.fillRect(2, 2, 30, 25, WHITE); - tft.setCursor(8, 4); - tft.setTextColor(BLACK); - tft.setTextSize(3); - tft.printf("A"); - lastMode = mode; - } - - if (mode == 0){ - tft.fillRect(2, 2, 40,25, WHITE); - tft.setCursor(4, 4); - tft.setTextColor(BLACK); - tft.setTextSize(3); - tft.printf("M"); - lastMode=mode; - } - } - - if (toolNo != lastToolNo){ - tft.fillRect(103, 2, 55,25, WHITE); - tft.setCursor(105, 4); - tft.setTextColor(BLACK); - tft.setTextSize(3); - tft.printf("T"); - tft.setCursor(118, 4); - tft.printf("%d", toolNo); - lastToolNo = toolNo; - } - - - if (n1Pos != lastN1Pos){ - tft.setCursor(80, 100); - tft.setTextColor(BLACK); - tft.setTextSize(2); - tft.printf("%d", lastN1Pos); - tft.setCursor(80, 100); - tft.setTextColor(WHITE); - tft.setTextSize(2); - tft.printf("%d", n1Pos); - lastN1Pos = n1Pos; - } - - -} - + myServo.pulsewidth_us(servo1Pos); + + index=0; + + +} } + +} +} \ No newline at end of file