control the laser with the MBED

Dependencies:   mbed

Committer:
bwang
Date:
Mon Nov 11 03:38:40 2019 +0000
Revision:
1:d42ef49f54df
Parent:
0:5d2320fc9350
added command line

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 0:5d2320fc9350 1 #include "mbed.h"
bwang 1:d42ef49f54df 2 #include "CommandProcessor.h"
bwang 1:d42ef49f54df 3 #include "prefs.h"
bwang 1:d42ef49f54df 4
bwang 1:d42ef49f54df 5 float __float_reg[64];
bwang 1:d42ef49f54df 6 int __int_reg[64];
bwang 0:5d2320fc9350 7
bwang 0:5d2320fc9350 8 DigitalOut led(LED1);
bwang 0:5d2320fc9350 9 InterruptIn in(PA_10);
bwang 0:5d2320fc9350 10 PwmOut out(PA_8);
bwang 0:5d2320fc9350 11
bwang 0:5d2320fc9350 12 Serial pc(USBTX, USBRX);
bwang 0:5d2320fc9350 13
bwang 1:d42ef49f54df 14 char linebuf[128];
bwang 1:d42ef49f54df 15 int index = 0;
bwang 1:d42ef49f54df 16 void rxCallback() {
bwang 1:d42ef49f54df 17 while (pc.readable()) {
bwang 1:d42ef49f54df 18 char c = pc.getc();
bwang 1:d42ef49f54df 19 if (c != 127 && c != 8 && c != '\r' && c != '\t') {
bwang 1:d42ef49f54df 20 linebuf[index] = c;
bwang 1:d42ef49f54df 21 if (index < 127) index++;
bwang 1:d42ef49f54df 22 if (c < 128) pc.putc(c);
bwang 1:d42ef49f54df 23 } else if (c == 127 || c == 8) {
bwang 1:d42ef49f54df 24 if (index > 0) {
bwang 1:d42ef49f54df 25 index--;
bwang 1:d42ef49f54df 26 //BS (8) should delete previous char
bwang 1:d42ef49f54df 27 pc.putc(127);
bwang 1:d42ef49f54df 28 }
bwang 1:d42ef49f54df 29 } else if (c == '\r') {
bwang 1:d42ef49f54df 30 linebuf[index] = 0;
bwang 1:d42ef49f54df 31 if (index > 0) {
bwang 1:d42ef49f54df 32 pc.putc(c);
bwang 1:d42ef49f54df 33 processCmd(&pc, linebuf);
bwang 1:d42ef49f54df 34 pc.putc('>');
bwang 1:d42ef49f54df 35 } else {
bwang 1:d42ef49f54df 36 pc.putc(c);
bwang 1:d42ef49f54df 37 pc.putc('>');
bwang 1:d42ef49f54df 38 }
bwang 1:d42ef49f54df 39 index = 0;
bwang 1:d42ef49f54df 40 }
bwang 1:d42ef49f54df 41 }
bwang 1:d42ef49f54df 42 }
bwang 1:d42ef49f54df 43
bwang 0:5d2320fc9350 44 void turn_on() {
bwang 1:d42ef49f54df 45 out.pulsewidth_us(_PULSE_WIDTH);
bwang 0:5d2320fc9350 46 led = 1;
bwang 0:5d2320fc9350 47 }
bwang 0:5d2320fc9350 48
bwang 0:5d2320fc9350 49 void turn_off() {
bwang 0:5d2320fc9350 50 out.pulsewidth_us(0);
bwang 0:5d2320fc9350 51 led = 0;
bwang 0:5d2320fc9350 52 }
bwang 0:5d2320fc9350 53
bwang 0:5d2320fc9350 54 int main() {
bwang 1:d42ef49f54df 55 pc.baud(115200);
bwang 1:d42ef49f54df 56 pc.attach(rxCallback);
bwang 0:5d2320fc9350 57 pc.printf("PYROFLEX\n");
bwang 1:d42ef49f54df 58 cmd_clear(&pc);
bwang 1:d42ef49f54df 59 cmd_defaults(&pc);
bwang 1:d42ef49f54df 60 pc.printf(">");
bwang 1:d42ef49f54df 61
bwang 0:5d2320fc9350 62 out.period_us(10);
bwang 1:d42ef49f54df 63 out.pulsewidth_us(_PULSE_WIDTH);
bwang 0:5d2320fc9350 64
bwang 0:5d2320fc9350 65 in.rise(turn_on);
bwang 0:5d2320fc9350 66 in.fall(turn_off);
bwang 0:5d2320fc9350 67
bwang 0:5d2320fc9350 68 for (;;) {}
bwang 0:5d2320fc9350 69 }