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@1:d3ba80dea3dc, 2020-05-19 (annotated)
- 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?
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 | 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 | } |