Akifumi Takahashi
/
DistanceSensor_BaseUnit
Sample program for LPC1768. This works with LPC1114 DisatnceSensorUnitProgram.
main.cpp@0:0cbd0489395a, 2016-06-08 (annotated)
- Committer:
- aktk
- Date:
- Wed Jun 08 14:16:58 2016 +0000
- Revision:
- 0:0cbd0489395a
Sample Program for LPC1768. This works with LPC1114 DistanceSensorUnitProgram.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aktk | 0:0cbd0489395a | 1 | #include "mbed.h" |
aktk | 0:0cbd0489395a | 2 | #include <cmath> |
aktk | 0:0cbd0489395a | 3 | |
aktk | 0:0cbd0489395a | 4 | DigitalOut myled(LED1); |
aktk | 0:0cbd0489395a | 5 | Serial pc(USBTX, USBRX); |
aktk | 0:0cbd0489395a | 6 | Serial com_lpc1114(p13, p14); |
aktk | 0:0cbd0489395a | 7 | |
aktk | 0:0cbd0489395a | 8 | LocalFileSystem local("local"); // define Mount Point(which becomes Direcory Path) |
aktk | 0:0cbd0489395a | 9 | |
aktk | 0:0cbd0489395a | 10 | void echoback() |
aktk | 0:0cbd0489395a | 11 | { |
aktk | 0:0cbd0489395a | 12 | char str[6] = "HELLO"; |
aktk | 0:0cbd0489395a | 13 | |
aktk | 0:0cbd0489395a | 14 | com_lpc1114.putc(0x11); //Functional |
aktk | 0:0cbd0489395a | 15 | com_lpc1114.putc(6); //size of echo |
aktk | 0:0cbd0489395a | 16 | pc.printf("echoback: "); |
aktk | 0:0cbd0489395a | 17 | for(char ch = 0; ch < 6; ch++) { |
aktk | 0:0cbd0489395a | 18 | com_lpc1114.putc(str[ch]); |
aktk | 0:0cbd0489395a | 19 | pc.printf("%c",com_lpc1114.getc()); |
aktk | 0:0cbd0489395a | 20 | } |
aktk | 0:0cbd0489395a | 21 | pc.putc('\n'); |
aktk | 0:0cbd0489395a | 22 | |
aktk | 0:0cbd0489395a | 23 | } |
aktk | 0:0cbd0489395a | 24 | |
aktk | 0:0cbd0489395a | 25 | int main() |
aktk | 0:0cbd0489395a | 26 | { |
aktk | 0:0cbd0489395a | 27 | FILE* fp; |
aktk | 0:0cbd0489395a | 28 | char cfp; |
aktk | 0:0cbd0489395a | 29 | unsigned short dtc; |
aktk | 0:0cbd0489395a | 30 | char ctmp; |
aktk | 0:0cbd0489395a | 31 | unsigned short dtmp; |
aktk | 0:0cbd0489395a | 32 | |
aktk | 0:0cbd0489395a | 33 | pc.printf("\nPROGRAM BEGIN\n"); |
aktk | 0:0cbd0489395a | 34 | |
aktk | 0:0cbd0489395a | 35 | pc.printf("\nselect ch.0\n"); |
aktk | 0:0cbd0489395a | 36 | com_lpc1114.putc(0); |
aktk | 0:0cbd0489395a | 37 | |
aktk | 0:0cbd0489395a | 38 | cfp = pc.getc(); |
aktk | 0:0cbd0489395a | 39 | if(cfp == 'l') { |
aktk | 0:0cbd0489395a | 40 | fp = fopen("/local/SENSOR00.SAV", "rb"); |
aktk | 0:0cbd0489395a | 41 | if (fp == NULL) pc.printf("\nfopen failured\n"); |
aktk | 0:0cbd0489395a | 42 | |
aktk | 0:0cbd0489395a | 43 | pc.printf("\nload save data to lpc1114\n"); |
aktk | 0:0cbd0489395a | 44 | com_lpc1114.putc('l'); |
aktk | 0:0cbd0489395a | 45 | pc.printf("ACK recieved :"); |
aktk | 0:0cbd0489395a | 46 | //for(int i = 0; i < 9 * 256 + 3 + 6 * 5; i++) { |
aktk | 0:0cbd0489395a | 47 | int i = 0; |
aktk | 0:0cbd0489395a | 48 | |
aktk | 0:0cbd0489395a | 49 | while(1) { |
aktk | 0:0cbd0489395a | 50 | fread(&cfp, sizeof(char), 1, fp); |
aktk | 0:0cbd0489395a | 51 | com_lpc1114.putc(cfp); |
aktk | 0:0cbd0489395a | 52 | if(i % 3 == 2) { |
aktk | 0:0cbd0489395a | 53 | cfp = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 54 | if (cfp == 0x06) { |
aktk | 0:0cbd0489395a | 55 | for(double j = 0.0; j < log10(static_cast<double>(i / 3 + 1)); j += 1.0) |
aktk | 0:0cbd0489395a | 56 | pc.putc(0x08); |
aktk | 0:0cbd0489395a | 57 | pc.printf("%d", i / 3 + 1); |
aktk | 0:0cbd0489395a | 58 | //pc.getc(); |
aktk | 0:0cbd0489395a | 59 | }// |
aktk | 0:0cbd0489395a | 60 | else if (cfp == 0x04) { |
aktk | 0:0cbd0489395a | 61 | //cfp = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 62 | //if (cfp == 0x04) { |
aktk | 0:0cbd0489395a | 63 | pc.printf("\nSUCCESSED"); |
aktk | 0:0cbd0489395a | 64 | break; |
aktk | 0:0cbd0489395a | 65 | //} |
aktk | 0:0cbd0489395a | 66 | } |
aktk | 0:0cbd0489395a | 67 | } |
aktk | 0:0cbd0489395a | 68 | i++; |
aktk | 0:0cbd0489395a | 69 | } |
aktk | 0:0cbd0489395a | 70 | fclose(fp); |
aktk | 0:0cbd0489395a | 71 | } |
aktk | 0:0cbd0489395a | 72 | |
aktk | 0:0cbd0489395a | 73 | else if (cfp == 'c') { |
aktk | 0:0cbd0489395a | 74 | fp = fopen("/local/SENSOR00.SAV", "wb"); |
aktk | 0:0cbd0489395a | 75 | if (fp == NULL) pc.printf("\nfopen failured\n"); |
aktk | 0:0cbd0489395a | 76 | |
aktk | 0:0cbd0489395a | 77 | com_lpc1114.putc('c'); |
aktk | 0:0cbd0489395a | 78 | pc.printf("sampling:0"); |
aktk | 0:0cbd0489395a | 79 | for(int i = 0; i < 5; i++){ |
aktk | 0:0cbd0489395a | 80 | pc.putc(0x08); |
aktk | 0:0cbd0489395a | 81 | pc.printf("%d", com_lpc1114.getc()); |
aktk | 0:0cbd0489395a | 82 | } |
aktk | 0:0cbd0489395a | 83 | pc.putc('\n'); |
aktk | 0:0cbd0489395a | 84 | pc.printf("\nsave data from lpc1114\n"); |
aktk | 0:0cbd0489395a | 85 | while(1) { |
aktk | 0:0cbd0489395a | 86 | ctmp = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 87 | if(ctmp == 0x04)break; |
aktk | 0:0cbd0489395a | 88 | dtmp = (static_cast<unsigned short>(ctmp) << 8); |
aktk | 0:0cbd0489395a | 89 | ctmp = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 90 | dtmp = dtmp | ctmp; |
aktk | 0:0cbd0489395a | 91 | ctmp = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 92 | com_lpc1114.putc(0x06); |
aktk | 0:0cbd0489395a | 93 | fwrite(&dtmp, sizeof(unsigned short), 1, fp); |
aktk | 0:0cbd0489395a | 94 | fwrite(&ctmp, sizeof(char), 1, fp); |
aktk | 0:0cbd0489395a | 95 | } |
aktk | 0:0cbd0489395a | 96 | pc.printf("\nSUCCESSED"); |
aktk | 0:0cbd0489395a | 97 | |
aktk | 0:0cbd0489395a | 98 | fclose(fp); |
aktk | 0:0cbd0489395a | 99 | } |
aktk | 0:0cbd0489395a | 100 | |
aktk | 0:0cbd0489395a | 101 | |
aktk | 0:0cbd0489395a | 102 | |
aktk | 0:0cbd0489395a | 103 | pc.printf("\nLOOP\n"); |
aktk | 0:0cbd0489395a | 104 | |
aktk | 0:0cbd0489395a | 105 | echoback(); |
aktk | 0:0cbd0489395a | 106 | |
aktk | 0:0cbd0489395a | 107 | printf("dtc: 000"); |
aktk | 0:0cbd0489395a | 108 | while(1) { |
aktk | 0:0cbd0489395a | 109 | myled = 1; |
aktk | 0:0cbd0489395a | 110 | wait(0.2); |
aktk | 0:0cbd0489395a | 111 | com_lpc1114.putc(0x12);//Functional |
aktk | 0:0cbd0489395a | 112 | dtc = com_lpc1114.getc(); |
aktk | 0:0cbd0489395a | 113 | dtc = ((dtc << 8) | com_lpc1114.getc()); |
aktk | 0:0cbd0489395a | 114 | for(int j = 0; j < 3; j++) |
aktk | 0:0cbd0489395a | 115 | pc.putc(0x08); |
aktk | 0:0cbd0489395a | 116 | printf("%3d", dtc); |
aktk | 0:0cbd0489395a | 117 | myled = 0; |
aktk | 0:0cbd0489395a | 118 | wait(0.2); |
aktk | 0:0cbd0489395a | 119 | if(pc.readable()) { |
aktk | 0:0cbd0489395a | 120 | pc.getc(); |
aktk | 0:0cbd0489395a | 121 | pc.putc('\n'); |
aktk | 0:0cbd0489395a | 122 | break; |
aktk | 0:0cbd0489395a | 123 | } |
aktk | 0:0cbd0489395a | 124 | } |
aktk | 0:0cbd0489395a | 125 | |
aktk | 0:0cbd0489395a | 126 | } |