Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Servo USBDevice n-DAP_MODBUS_FEEDER_ADC
main.cpp@0:fe1478e69a3b, 2019-02-22 (annotated)
- 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?
User | Revision | Line number | New 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 | } |