test2017-1-13

Dependencies:   AT24C1024 DMX-STM32 mbed

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