test2017-1-13

Dependencies:   AT24C1024 DMX-STM32 mbed

Committer:
tomo370
Date:
Fri Jan 13 03:28:16 2017 +0000
Revision:
0:d94213e24c2e
Child:
1:cf2f5992241c
stepper

Who changed what in which revision?

UserRevisionLine numberNew 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 //}