nikos chalikias / Mbed 2 deprecated n-DAP_MODBUS_FEEDER_ADC

Dependencies:   mbed Servo USBDevice n-DAP_MODBUS_FEEDER_ADC

Committer:
chalikias
Date:
Fri Feb 22 16:28:19 2019 +0000
Revision:
0:fe1478e69a3b
Child:
1:d3ba80dea3dc
reads the adc, sens to pc, responce to M889 S0xXX with PWM for RCservo

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