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 16:23:56 2020 +0000
Revision:
1:d3ba80dea3dc
Parent:
0:fe1478e69a3b
Child:
2:bb913072aed2
vacuum GPO added, README.MD and todo.txd also added

Who changed what in which revision?

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