test2017-1-13
Dependencies: AT24C1024 DMX-STM32 mbed
Diff: main.cpp
- Revision:
- 0:d94213e24c2e
- Child:
- 1:cf2f5992241c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jan 13 03:28:16 2017 +0000 @@ -0,0 +1,204 @@ +//#define + + +#include "mbed.h" +#include "AT24C1024.h" +#include "AccelStepper.h" +#include "DMX.h" + +Timer t; +DigitalOut dmxEnable(D8); +DMX dmx(PA_9, PA_10); + +AccelStepper stepper1(1, D9, D6); // step, direction +AccelStepper stepper2(1, D10, D7); // step, direction + +DigitalOut stepper1Enable(D2); +DigitalOut stepper1MS1(D11); +DigitalOut stepper1MS2(D12); +DigitalIn stepper1MS3(A4); + +DigitalOut stepper2Enable(D3); +DigitalOut stepper2MS1(A5); +DigitalOut stepper2MS2(A6); +DigitalOut stepper2MS3(A7); + +DigitalIn EndSW4(A3); //CN7 +DigitalIn EndSW3(A2); //CN6 +DigitalIn EndSW2(A1); //CN5 +DigitalIn EndSW1(A0); //CN4 +DigitalOut myLED(LED3); //動作確認用LED + +long dt; +unsigned int dmxInHighBit; +unsigned int dmxInLowBit; +int pastPosition; + +//map関数です +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +void checkSW() +{ + if(EndSW4.read() == 0) myLED = 1; + else { + stepper1.stop(); + stepper1.setCurrentPosition(0); + myLED =0; + } +} + +void silence() +{ + DigitalIn stepper1MS1(D11); + DigitalIn stepper1MS2(D12); +} + +void run() +{ + DigitalOut stepper1MS1(D11); + DigitalOut stepper1MS2(D12); + stepper1MS1 = 1; + stepper1MS2 = 1; +} + +void init() +{ + stepper1.setMaxSpeed(2000); + stepper1.setAcceleration(20000); + stepper1.moveTo(-16000); + + while(stepper1.currentPosition() != 0) { + stepper1.run(); + checkSW(); + } + stepper1.moveTo(500); + while(stepper1.distanceToGo() != 0) { + stepper1.run(); + } + silence(); + + +} + + + +int main() +{ + + stepper1MS1 = 1; + stepper1MS2 = 1; + //stepper1MS3 = 0; + stepper1Enable = 0; + + t.start(); + + dmxEnable = 0; //0:receiver 1:sender + + stepper1.setCurrentPosition(-1); + + init(); + + stepper1.setMaxSpeed(25000); + stepper1.setAcceleration(30000); + stepper1.setCurrentPosition(0); + + //run(); + + while(1) { + + + dmxInHighBit = dmx.get(0); + dmxInLowBit = dmx.get(1); + dmxInHighBit = dmxInHighBit << 8; + dt = (long)(dmxInHighBit + dmxInLowBit); + //if(unsigned (stepper1.distanceToGo()) > 0) +// run(); +// else +// silence(); + dt = map(dt, 0, 0xFFFF, 0, 32000); + //dt = dt*100; + + //printf("%d\n", dt); + //wait(1); + stepper1.moveTo(dt);// +// if(unsigned ((stepper1.distanceToGo() - stepper1.currentPosition())) > 100) +// run(); + checkSW(); + + stepper1.run(); + + + +// if (stepper1.distanceToGo() == 0) +// silence(); +// else +// run(); + } +} + + +// printf("\r\n*** AT24C1024 Test ***\r\n"); +// +// // Byte Read/Write +// // +// uint8_t dt = 0x55; +// printf("Byte Write: %02x\r\n", dt); +// at24c1024.write(0, dt); // write addr=0 data=dt +// wait_ms(5); +// dt = at24c1024.read(0); // read addr=0 +// printf("Byte Read: %02x\r\n", dt); +// +// // Page Read/Write +// // +// uint8_t eep_buf[258]; +// for (int i = 0; i < 256; i++) { +// eep_buf[i] = i; +// } +// printf("Page Write: 0..255\r\n"); +// AT24C_STATUS status = at24c1024.write_page(0x1ff00, eep_buf, sizeof(eep_buf)); +// wait_ms(5); +// printf("Status: %d\r\n", status); +// printf("Page Read:\r\n"); +// status = at24c1024.read_page(0x1ff00, eep_buf, sizeof(eep_buf)); +// printf("Status: %d\r\n", status); +// for (int i = 0; i < sizeof(eep_buf); i++) { +// printf("%d ", eep_buf[i]); +// } +// printf("\r\n"); + + +//I2C i2c(D4, D5); // SDA, SCL +//AT24C1024 at24c1024(i2c); // Atmel 1Mbit EE-PROM + +// printf("\r\n*** AT24C1024 Test ***\r\n"); +// +// // Byte Read/Write +// // +// uint8_t dt = 0x22; +// printf("Byte Write: %02x\r\n", dt); +// at24c1024.write(0, dt); // write addr=0 data=dt +// wait_ms(10); +// dt = at24c1024.read(0); // read addr=0 +// printf("Byte Read: %02x\r\n", dt); +// +// // Page Read/Write +// // +// uint8_t eep_buf[258]; +// for (int i = 0; i < 256; i++) { +// eep_buf[i] = i; +// } +// printf("Page Write: 0..255\r\n"); +// AT24C_STATUS status = at24c1024.write_page(0x1ff00, eep_buf, sizeof(eep_buf)); +// wait_ms(5); +// printf("Status: %d\r\n", status); +// printf("Page Read:\r\n"); +// status = at24c1024.read_page(0x00, eep_buf, sizeof(eep_buf)); +// printf("Status: %d\r\n", status); +// for (int i = 0; i < sizeof(eep_buf); i++) { +// printf("%02x ", eep_buf[i]); +// } +// printf("\r\n"); +//} \ No newline at end of file