nikos chalikias / Mbed 2 deprecated n-DAP_MODBUS_FEEDER_ADC

Dependencies:   mbed Servo USBDevice n-DAP_MODBUS_FEEDER_ADC

Committer:
chalikias
Date:
Tue May 19 23:49:34 2020 +0000
Revision:
2:bb913072aed2
Parent:
1:d3ba80dea3dc
moved to https://github.com/nikoschalikias/firm_n-DAP_MODBUS_FEEDER_ADC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chalikias 2:bb913072aed2 1
chalikias 2:bb913072aed2 2 // PROJECT MOVED TO https://github.com/nikoschalikias/firm_n-DAP_MODBUS_FEEDER_ADC
chalikias 2:bb913072aed2 3 // USING mbed-cli
chalikias 2:bb913072aed2 4
chalikias 0:fe1478e69a3b 5 #include "mbed.h"
chalikias 0:fe1478e69a3b 6 #include "LPC11Uxx.h"
chalikias 0:fe1478e69a3b 7 #include "USBSerial.h"
chalikias 0:fe1478e69a3b 8 //#include "Servo.h"
chalikias 0:fe1478e69a3b 9
chalikias 0:fe1478e69a3b 10
chalikias 0:fe1478e69a3b 11
chalikias 0:fe1478e69a3b 12 DigitalOut red(P0_20);
chalikias 0:fe1478e69a3b 13 DigitalOut green(P0_21);
chalikias 0:fe1478e69a3b 14 DigitalOut blue(P0_11);
chalikias 1:d3ba80dea3dc 15
chalikias 0:fe1478e69a3b 16 AnalogIn adc1(P0_22); //n-DAP pin 12
chalikias 0:fe1478e69a3b 17 USBSerial serial(0x1f00,0x2012,0x0001,false);// serial over native USB on board (false is non blocking)
chalikias 0:fe1478e69a3b 18 Serial modbus(P0_19, P0_18); // tx, rx
chalikias 0:fe1478e69a3b 19 DigitalOut dir(P0_2);
chalikias 0:fe1478e69a3b 20 PwmOut rcservo(P0_8);
chalikias 1:d3ba80dea3dc 21 DigitalOut Vacuum(P0_7);
chalikias 0:fe1478e69a3b 22
chalikias 0:fe1478e69a3b 23
chalikias 0:fe1478e69a3b 24 int main() {
chalikias 0:fe1478e69a3b 25 modbus.baud(9600);
chalikias 0:fe1478e69a3b 26 uint8_t buf[32];
chalikias 0:fe1478e69a3b 27 uint8_t i = 0;
chalikias 0:fe1478e69a3b 28 uint16_t angle = 0;
chalikias 0:fe1478e69a3b 29
chalikias 0:fe1478e69a3b 30 dir = 1;
chalikias 0:fe1478e69a3b 31 wait(4); // wait the usb to be recognized from the PC
chalikias 0:fe1478e69a3b 32 modbus.printf(" 0x%04u\r", adc1.read_u16());
chalikias 0:fe1478e69a3b 33 serial.printf(" 0x%04u\r", adc1.read_u16()); //adc readout to PC
chalikias 0:fe1478e69a3b 34 dir = 0;
chalikias 0:fe1478e69a3b 35 green = 1;
chalikias 0:fe1478e69a3b 36 blue = 1;
chalikias 0:fe1478e69a3b 37 rcservo.period_ms(20);
chalikias 0:fe1478e69a3b 38 rcservo.pulsewidth_us(1500) ;
chalikias 0:fe1478e69a3b 39
chalikias 0:fe1478e69a3b 40 while(1) {
chalikias 0:fe1478e69a3b 41 red = !red;
chalikias 0:fe1478e69a3b 42 if(modbus.readable()) {
chalikias 0:fe1478e69a3b 43 if (i > 31) {
chalikias 0:fe1478e69a3b 44 i = 0;
chalikias 0:fe1478e69a3b 45 }
chalikias 0:fe1478e69a3b 46 buf[i] = modbus.getc();
chalikias 0:fe1478e69a3b 47 if ( buf[i] == 0x20){
chalikias 0:fe1478e69a3b 48 serial.printf("\n"); //change line and reset index
chalikias 0:fe1478e69a3b 49 i = 0; buf[i] = 0x20;
chalikias 0:fe1478e69a3b 50 }
chalikias 0:fe1478e69a3b 51 modbus.putc(buf[i]); //debug only
chalikias 0:fe1478e69a3b 52 serial.printf("0x%02X ", buf[i]);
chalikias 0:fe1478e69a3b 53 i++;
chalikias 0:fe1478e69a3b 54 }
chalikias 0:fe1478e69a3b 55 if (buf[9] == 0x01) { blue = 0;}
chalikias 0:fe1478e69a3b 56 if (buf[9] == 0x02) { blue = 1;}
chalikias 0:fe1478e69a3b 57 if (buf[9] == 0x03) { green = 0; }
chalikias 0:fe1478e69a3b 58 if (buf[9] == 0x04) { green = 1; }
chalikias 1:d3ba80dea3dc 59 if (buf[9] == 0x04) { Vacuum = 1; }
chalikias 1:d3ba80dea3dc 60 if (buf[9] > 0x05) {
chalikias 0:fe1478e69a3b 61 angle = buf[9]*4;
chalikias 0:fe1478e69a3b 62 angle = 1000 + angle;
chalikias 0:fe1478e69a3b 63 buf[9] =0;
chalikias 0:fe1478e69a3b 64 rcservo.period_ms(20);
chalikias 0:fe1478e69a3b 65 rcservo.pulsewidth_us(angle) ;
chalikias 0:fe1478e69a3b 66 }
chalikias 0:fe1478e69a3b 67
chalikias 0:fe1478e69a3b 68 }
chalikias 0:fe1478e69a3b 69 }