test2017-1-13
Dependencies: AT24C1024 DMX-STM32 mbed
main.cpp@0:d94213e24c2e, 2017-01-13 (annotated)
- Committer:
- tomo370
- Date:
- Fri Jan 13 03:28:16 2017 +0000
- Revision:
- 0:d94213e24c2e
- Child:
- 1:cf2f5992241c
stepper
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tomo370 | 0:d94213e24c2e | 1 | //#define |
tomo370 | 0:d94213e24c2e | 2 | |
tomo370 | 0:d94213e24c2e | 3 | |
tomo370 | 0:d94213e24c2e | 4 | #include "mbed.h" |
tomo370 | 0:d94213e24c2e | 5 | #include "AT24C1024.h" |
tomo370 | 0:d94213e24c2e | 6 | #include "AccelStepper.h" |
tomo370 | 0:d94213e24c2e | 7 | #include "DMX.h" |
tomo370 | 0:d94213e24c2e | 8 | |
tomo370 | 0:d94213e24c2e | 9 | Timer t; |
tomo370 | 0:d94213e24c2e | 10 | DigitalOut dmxEnable(D8); |
tomo370 | 0:d94213e24c2e | 11 | DMX dmx(PA_9, PA_10); |
tomo370 | 0:d94213e24c2e | 12 | |
tomo370 | 0:d94213e24c2e | 13 | AccelStepper stepper1(1, D9, D6); // step, direction |
tomo370 | 0:d94213e24c2e | 14 | AccelStepper stepper2(1, D10, D7); // step, direction |
tomo370 | 0:d94213e24c2e | 15 | |
tomo370 | 0:d94213e24c2e | 16 | DigitalOut stepper1Enable(D2); |
tomo370 | 0:d94213e24c2e | 17 | DigitalOut stepper1MS1(D11); |
tomo370 | 0:d94213e24c2e | 18 | DigitalOut stepper1MS2(D12); |
tomo370 | 0:d94213e24c2e | 19 | DigitalIn stepper1MS3(A4); |
tomo370 | 0:d94213e24c2e | 20 | |
tomo370 | 0:d94213e24c2e | 21 | DigitalOut stepper2Enable(D3); |
tomo370 | 0:d94213e24c2e | 22 | DigitalOut stepper2MS1(A5); |
tomo370 | 0:d94213e24c2e | 23 | DigitalOut stepper2MS2(A6); |
tomo370 | 0:d94213e24c2e | 24 | DigitalOut stepper2MS3(A7); |
tomo370 | 0:d94213e24c2e | 25 | |
tomo370 | 0:d94213e24c2e | 26 | DigitalIn EndSW4(A3); //CN7 |
tomo370 | 0:d94213e24c2e | 27 | DigitalIn EndSW3(A2); //CN6 |
tomo370 | 0:d94213e24c2e | 28 | DigitalIn EndSW2(A1); //CN5 |
tomo370 | 0:d94213e24c2e | 29 | DigitalIn EndSW1(A0); //CN4 |
tomo370 | 0:d94213e24c2e | 30 | DigitalOut myLED(LED3); //動作確認用LED |
tomo370 | 0:d94213e24c2e | 31 | |
tomo370 | 0:d94213e24c2e | 32 | long dt; |
tomo370 | 0:d94213e24c2e | 33 | unsigned int dmxInHighBit; |
tomo370 | 0:d94213e24c2e | 34 | unsigned int dmxInLowBit; |
tomo370 | 0:d94213e24c2e | 35 | int pastPosition; |
tomo370 | 0:d94213e24c2e | 36 | |
tomo370 | 0:d94213e24c2e | 37 | //map関数です |
tomo370 | 0:d94213e24c2e | 38 | long map(long x, long in_min, long in_max, long out_min, long out_max) |
tomo370 | 0:d94213e24c2e | 39 | { |
tomo370 | 0:d94213e24c2e | 40 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; |
tomo370 | 0:d94213e24c2e | 41 | } |
tomo370 | 0:d94213e24c2e | 42 | |
tomo370 | 0:d94213e24c2e | 43 | void checkSW() |
tomo370 | 0:d94213e24c2e | 44 | { |
tomo370 | 0:d94213e24c2e | 45 | if(EndSW4.read() == 0) myLED = 1; |
tomo370 | 0:d94213e24c2e | 46 | else { |
tomo370 | 0:d94213e24c2e | 47 | stepper1.stop(); |
tomo370 | 0:d94213e24c2e | 48 | stepper1.setCurrentPosition(0); |
tomo370 | 0:d94213e24c2e | 49 | myLED =0; |
tomo370 | 0:d94213e24c2e | 50 | } |
tomo370 | 0:d94213e24c2e | 51 | } |
tomo370 | 0:d94213e24c2e | 52 | |
tomo370 | 0:d94213e24c2e | 53 | void silence() |
tomo370 | 0:d94213e24c2e | 54 | { |
tomo370 | 0:d94213e24c2e | 55 | DigitalIn stepper1MS1(D11); |
tomo370 | 0:d94213e24c2e | 56 | DigitalIn stepper1MS2(D12); |
tomo370 | 0:d94213e24c2e | 57 | } |
tomo370 | 0:d94213e24c2e | 58 | |
tomo370 | 0:d94213e24c2e | 59 | void run() |
tomo370 | 0:d94213e24c2e | 60 | { |
tomo370 | 0:d94213e24c2e | 61 | DigitalOut stepper1MS1(D11); |
tomo370 | 0:d94213e24c2e | 62 | DigitalOut stepper1MS2(D12); |
tomo370 | 0:d94213e24c2e | 63 | stepper1MS1 = 1; |
tomo370 | 0:d94213e24c2e | 64 | stepper1MS2 = 1; |
tomo370 | 0:d94213e24c2e | 65 | } |
tomo370 | 0:d94213e24c2e | 66 | |
tomo370 | 0:d94213e24c2e | 67 | void init() |
tomo370 | 0:d94213e24c2e | 68 | { |
tomo370 | 0:d94213e24c2e | 69 | stepper1.setMaxSpeed(2000); |
tomo370 | 0:d94213e24c2e | 70 | stepper1.setAcceleration(20000); |
tomo370 | 0:d94213e24c2e | 71 | stepper1.moveTo(-16000); |
tomo370 | 0:d94213e24c2e | 72 | |
tomo370 | 0:d94213e24c2e | 73 | while(stepper1.currentPosition() != 0) { |
tomo370 | 0:d94213e24c2e | 74 | stepper1.run(); |
tomo370 | 0:d94213e24c2e | 75 | checkSW(); |
tomo370 | 0:d94213e24c2e | 76 | } |
tomo370 | 0:d94213e24c2e | 77 | stepper1.moveTo(500); |
tomo370 | 0:d94213e24c2e | 78 | while(stepper1.distanceToGo() != 0) { |
tomo370 | 0:d94213e24c2e | 79 | stepper1.run(); |
tomo370 | 0:d94213e24c2e | 80 | } |
tomo370 | 0:d94213e24c2e | 81 | silence(); |
tomo370 | 0:d94213e24c2e | 82 | |
tomo370 | 0:d94213e24c2e | 83 | |
tomo370 | 0:d94213e24c2e | 84 | } |
tomo370 | 0:d94213e24c2e | 85 | |
tomo370 | 0:d94213e24c2e | 86 | |
tomo370 | 0:d94213e24c2e | 87 | |
tomo370 | 0:d94213e24c2e | 88 | int main() |
tomo370 | 0:d94213e24c2e | 89 | { |
tomo370 | 0:d94213e24c2e | 90 | |
tomo370 | 0:d94213e24c2e | 91 | stepper1MS1 = 1; |
tomo370 | 0:d94213e24c2e | 92 | stepper1MS2 = 1; |
tomo370 | 0:d94213e24c2e | 93 | //stepper1MS3 = 0; |
tomo370 | 0:d94213e24c2e | 94 | stepper1Enable = 0; |
tomo370 | 0:d94213e24c2e | 95 | |
tomo370 | 0:d94213e24c2e | 96 | t.start(); |
tomo370 | 0:d94213e24c2e | 97 | |
tomo370 | 0:d94213e24c2e | 98 | dmxEnable = 0; //0:receiver 1:sender |
tomo370 | 0:d94213e24c2e | 99 | |
tomo370 | 0:d94213e24c2e | 100 | stepper1.setCurrentPosition(-1); |
tomo370 | 0:d94213e24c2e | 101 | |
tomo370 | 0:d94213e24c2e | 102 | init(); |
tomo370 | 0:d94213e24c2e | 103 | |
tomo370 | 0:d94213e24c2e | 104 | stepper1.setMaxSpeed(25000); |
tomo370 | 0:d94213e24c2e | 105 | stepper1.setAcceleration(30000); |
tomo370 | 0:d94213e24c2e | 106 | stepper1.setCurrentPosition(0); |
tomo370 | 0:d94213e24c2e | 107 | |
tomo370 | 0:d94213e24c2e | 108 | //run(); |
tomo370 | 0:d94213e24c2e | 109 | |
tomo370 | 0:d94213e24c2e | 110 | while(1) { |
tomo370 | 0:d94213e24c2e | 111 | |
tomo370 | 0:d94213e24c2e | 112 | |
tomo370 | 0:d94213e24c2e | 113 | dmxInHighBit = dmx.get(0); |
tomo370 | 0:d94213e24c2e | 114 | dmxInLowBit = dmx.get(1); |
tomo370 | 0:d94213e24c2e | 115 | dmxInHighBit = dmxInHighBit << 8; |
tomo370 | 0:d94213e24c2e | 116 | dt = (long)(dmxInHighBit + dmxInLowBit); |
tomo370 | 0:d94213e24c2e | 117 | //if(unsigned (stepper1.distanceToGo()) > 0) |
tomo370 | 0:d94213e24c2e | 118 | // run(); |
tomo370 | 0:d94213e24c2e | 119 | // else |
tomo370 | 0:d94213e24c2e | 120 | // silence(); |
tomo370 | 0:d94213e24c2e | 121 | dt = map(dt, 0, 0xFFFF, 0, 32000); |
tomo370 | 0:d94213e24c2e | 122 | //dt = dt*100; |
tomo370 | 0:d94213e24c2e | 123 | |
tomo370 | 0:d94213e24c2e | 124 | //printf("%d\n", dt); |
tomo370 | 0:d94213e24c2e | 125 | //wait(1); |
tomo370 | 0:d94213e24c2e | 126 | stepper1.moveTo(dt);// |
tomo370 | 0:d94213e24c2e | 127 | // if(unsigned ((stepper1.distanceToGo() - stepper1.currentPosition())) > 100) |
tomo370 | 0:d94213e24c2e | 128 | // run(); |
tomo370 | 0:d94213e24c2e | 129 | checkSW(); |
tomo370 | 0:d94213e24c2e | 130 | |
tomo370 | 0:d94213e24c2e | 131 | stepper1.run(); |
tomo370 | 0:d94213e24c2e | 132 | |
tomo370 | 0:d94213e24c2e | 133 | |
tomo370 | 0:d94213e24c2e | 134 | |
tomo370 | 0:d94213e24c2e | 135 | // if (stepper1.distanceToGo() == 0) |
tomo370 | 0:d94213e24c2e | 136 | // silence(); |
tomo370 | 0:d94213e24c2e | 137 | // else |
tomo370 | 0:d94213e24c2e | 138 | // run(); |
tomo370 | 0:d94213e24c2e | 139 | } |
tomo370 | 0:d94213e24c2e | 140 | } |
tomo370 | 0:d94213e24c2e | 141 | |
tomo370 | 0:d94213e24c2e | 142 | |
tomo370 | 0:d94213e24c2e | 143 | // printf("\r\n*** AT24C1024 Test ***\r\n"); |
tomo370 | 0:d94213e24c2e | 144 | // |
tomo370 | 0:d94213e24c2e | 145 | // // Byte Read/Write |
tomo370 | 0:d94213e24c2e | 146 | // // |
tomo370 | 0:d94213e24c2e | 147 | // uint8_t dt = 0x55; |
tomo370 | 0:d94213e24c2e | 148 | // printf("Byte Write: %02x\r\n", dt); |
tomo370 | 0:d94213e24c2e | 149 | // at24c1024.write(0, dt); // write addr=0 data=dt |
tomo370 | 0:d94213e24c2e | 150 | // wait_ms(5); |
tomo370 | 0:d94213e24c2e | 151 | // dt = at24c1024.read(0); // read addr=0 |
tomo370 | 0:d94213e24c2e | 152 | // printf("Byte Read: %02x\r\n", dt); |
tomo370 | 0:d94213e24c2e | 153 | // |
tomo370 | 0:d94213e24c2e | 154 | // // Page Read/Write |
tomo370 | 0:d94213e24c2e | 155 | // // |
tomo370 | 0:d94213e24c2e | 156 | // uint8_t eep_buf[258]; |
tomo370 | 0:d94213e24c2e | 157 | // for (int i = 0; i < 256; i++) { |
tomo370 | 0:d94213e24c2e | 158 | // eep_buf[i] = i; |
tomo370 | 0:d94213e24c2e | 159 | // } |
tomo370 | 0:d94213e24c2e | 160 | // printf("Page Write: 0..255\r\n"); |
tomo370 | 0:d94213e24c2e | 161 | // AT24C_STATUS status = at24c1024.write_page(0x1ff00, eep_buf, sizeof(eep_buf)); |
tomo370 | 0:d94213e24c2e | 162 | // wait_ms(5); |
tomo370 | 0:d94213e24c2e | 163 | // printf("Status: %d\r\n", status); |
tomo370 | 0:d94213e24c2e | 164 | // printf("Page Read:\r\n"); |
tomo370 | 0:d94213e24c2e | 165 | // status = at24c1024.read_page(0x1ff00, eep_buf, sizeof(eep_buf)); |
tomo370 | 0:d94213e24c2e | 166 | // printf("Status: %d\r\n", status); |
tomo370 | 0:d94213e24c2e | 167 | // for (int i = 0; i < sizeof(eep_buf); i++) { |
tomo370 | 0:d94213e24c2e | 168 | // printf("%d ", eep_buf[i]); |
tomo370 | 0:d94213e24c2e | 169 | // } |
tomo370 | 0:d94213e24c2e | 170 | // printf("\r\n"); |
tomo370 | 0:d94213e24c2e | 171 | |
tomo370 | 0:d94213e24c2e | 172 | |
tomo370 | 0:d94213e24c2e | 173 | //I2C i2c(D4, D5); // SDA, SCL |
tomo370 | 0:d94213e24c2e | 174 | //AT24C1024 at24c1024(i2c); // Atmel 1Mbit EE-PROM |
tomo370 | 0:d94213e24c2e | 175 | |
tomo370 | 0:d94213e24c2e | 176 | // printf("\r\n*** AT24C1024 Test ***\r\n"); |
tomo370 | 0:d94213e24c2e | 177 | // |
tomo370 | 0:d94213e24c2e | 178 | // // Byte Read/Write |
tomo370 | 0:d94213e24c2e | 179 | // // |
tomo370 | 0:d94213e24c2e | 180 | // uint8_t dt = 0x22; |
tomo370 | 0:d94213e24c2e | 181 | // printf("Byte Write: %02x\r\n", dt); |
tomo370 | 0:d94213e24c2e | 182 | // at24c1024.write(0, dt); // write addr=0 data=dt |
tomo370 | 0:d94213e24c2e | 183 | // wait_ms(10); |
tomo370 | 0:d94213e24c2e | 184 | // dt = at24c1024.read(0); // read addr=0 |
tomo370 | 0:d94213e24c2e | 185 | // printf("Byte Read: %02x\r\n", dt); |
tomo370 | 0:d94213e24c2e | 186 | // |
tomo370 | 0:d94213e24c2e | 187 | // // Page Read/Write |
tomo370 | 0:d94213e24c2e | 188 | // // |
tomo370 | 0:d94213e24c2e | 189 | // uint8_t eep_buf[258]; |
tomo370 | 0:d94213e24c2e | 190 | // for (int i = 0; i < 256; i++) { |
tomo370 | 0:d94213e24c2e | 191 | // eep_buf[i] = i; |
tomo370 | 0:d94213e24c2e | 192 | // } |
tomo370 | 0:d94213e24c2e | 193 | // printf("Page Write: 0..255\r\n"); |
tomo370 | 0:d94213e24c2e | 194 | // AT24C_STATUS status = at24c1024.write_page(0x1ff00, eep_buf, sizeof(eep_buf)); |
tomo370 | 0:d94213e24c2e | 195 | // wait_ms(5); |
tomo370 | 0:d94213e24c2e | 196 | // printf("Status: %d\r\n", status); |
tomo370 | 0:d94213e24c2e | 197 | // printf("Page Read:\r\n"); |
tomo370 | 0:d94213e24c2e | 198 | // status = at24c1024.read_page(0x00, eep_buf, sizeof(eep_buf)); |
tomo370 | 0:d94213e24c2e | 199 | // printf("Status: %d\r\n", status); |
tomo370 | 0:d94213e24c2e | 200 | // for (int i = 0; i < sizeof(eep_buf); i++) { |
tomo370 | 0:d94213e24c2e | 201 | // printf("%02x ", eep_buf[i]); |
tomo370 | 0:d94213e24c2e | 202 | // } |
tomo370 | 0:d94213e24c2e | 203 | // printf("\r\n"); |
tomo370 | 0:d94213e24c2e | 204 | //} |