SE AGREGÓ EL MOVIMIENTO EN LA MATRIZ DE TRIQUI SE AGREGO INTERRUPCION EN EL PROGRAMA

Dependencies:   mbed

Committer:
Camilokingxd
Date:
Thu May 31 20:50:18 2018 +0000
Revision:
1:6fe876825b57
Parent:
0:1b7dd931c028
ULTIMO PROGRAMA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Camilokingxd 0:1b7dd931c028 1 #include "Step_Motor.h"
Camilokingxd 0:1b7dd931c028 2 #include "mbed.h"
Camilokingxd 0:1b7dd931c028 3 #include "def.h"
Camilokingxd 0:1b7dd931c028 4
Camilokingxd 0:1b7dd931c028 5 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4, PinName in5,PinName in6, PinName in7, PinName in8) : motor_out(in1,in2,in3,in4,in5,in6,in7,in8) {
Camilokingxd 0:1b7dd931c028 6
Camilokingxd 0:1b7dd931c028 7 motor_out=0x0;
Camilokingxd 0:1b7dd931c028 8 nstep=0;
Camilokingxd 0:1b7dd931c028 9 nstep2=0;
Camilokingxd 0:1b7dd931c028 10 motorSpeed=1100;
Camilokingxd 0:1b7dd931c028 11 mot2=0;
Camilokingxd 0:1b7dd931c028 12 }
Camilokingxd 1:6fe876825b57 13 Serial pc1(USBTX,USBRX);
Camilokingxd 0:1b7dd931c028 14
Camilokingxd 0:1b7dd931c028 15 void stepmotor::move() {
Camilokingxd 0:1b7dd931c028 16 switch(nstep2)
Camilokingxd 0:1b7dd931c028 17 {
Camilokingxd 0:1b7dd931c028 18 case 0: mot2 = 0x1; break; // 0001
Camilokingxd 0:1b7dd931c028 19 case 1: mot2 = 0x3; break; // 0011
Camilokingxd 0:1b7dd931c028 20 case 2: mot2 = 0x2; break; // 0010
Camilokingxd 0:1b7dd931c028 21 case 3: mot2 = 0x6; break; // 0110
Camilokingxd 0:1b7dd931c028 22 case 4: mot2 = 0x4; break; // 0100
Camilokingxd 0:1b7dd931c028 23 case 5: mot2 = 0xC; break; // 1100
Camilokingxd 0:1b7dd931c028 24 case 6: mot2 = 0x8; break; // 1000
Camilokingxd 0:1b7dd931c028 25 case 7: mot2 = 0x9; break; // 1001
Camilokingxd 0:1b7dd931c028 26
Camilokingxd 0:1b7dd931c028 27 default: mot2 = 0x0; break; // 0000
Camilokingxd 0:1b7dd931c028 28 }
Camilokingxd 0:1b7dd931c028 29
Camilokingxd 0:1b7dd931c028 30 switch(nstep)
Camilokingxd 0:1b7dd931c028 31 {
Camilokingxd 0:1b7dd931c028 32 case 0: motor_out = 0x10 + mot2; break; // 0001 xxxx
Camilokingxd 0:1b7dd931c028 33 case 1: motor_out = 0x30 + mot2; break; // 0011 xxxx
Camilokingxd 0:1b7dd931c028 34 case 2: motor_out = 0x20 + mot2; break; // 0010 xxxx
Camilokingxd 0:1b7dd931c028 35 case 3: motor_out = 0x60 + mot2; break; // 0110 xxxx
Camilokingxd 0:1b7dd931c028 36 case 4: motor_out = 0x40 + mot2; break; // 0100 xxxx
Camilokingxd 0:1b7dd931c028 37 case 5: motor_out = 0xC0 + mot2; break; // 1100 xxxx
Camilokingxd 0:1b7dd931c028 38 case 6: motor_out = 0x80 + mot2; break; // 1000 xxxx
Camilokingxd 0:1b7dd931c028 39 case 7: motor_out = 0x90 + mot2; break; // 1001 xxxx
Camilokingxd 0:1b7dd931c028 40
Camilokingxd 0:1b7dd931c028 41 default: motor_out = 0x00 + mot2; break; // 0000 xxxx
Camilokingxd 0:1b7dd931c028 42 }
Camilokingxd 0:1b7dd931c028 43
Camilokingxd 0:1b7dd931c028 44 wait_us(motorSpeed);
Camilokingxd 0:1b7dd931c028 45
Camilokingxd 0:1b7dd931c028 46 }
Camilokingxd 0:1b7dd931c028 47
Camilokingxd 0:1b7dd931c028 48 void stepmotor::set_speed(int speed){
Camilokingxd 0:1b7dd931c028 49 motorSpeed=speed; //set motor speed us
Camilokingxd 0:1b7dd931c028 50 }
Camilokingxd 0:1b7dd931c028 51 uint32_t stepmotor::get_speed(){
Camilokingxd 0:1b7dd931c028 52 return motorSpeed; //
Camilokingxd 0:1b7dd931c028 53 }
Camilokingxd 0:1b7dd931c028 54
Camilokingxd 0:1b7dd931c028 55 void stepmotor::step(uint32_t num_steps, uint8_t cw) {
Camilokingxd 0:1b7dd931c028 56 //cw 0 si va a girar a la izquierda, 1 si gira a la derecha, 2 si sigue derecho, 3 retrocede
Camilokingxd 0:1b7dd931c028 57 uint32_t count=num_steps ;
Camilokingxd 1:6fe876825b57 58 pc1.baud(9600);
Camilokingxd 1:6fe876825b57 59 pc1.format(8,SerialBase::None,1);
Camilokingxd 0:1b7dd931c028 60 while(count){
Camilokingxd 1:6fe876825b57 61 if (cw==LEFT) {nstep++; nstep2++;}
Camilokingxd 1:6fe876825b57 62 if (cw==RIGHT) {nstep--; nstep2--;}
Camilokingxd 0:1b7dd931c028 63 if (cw==FORWARD) {nstep++; nstep2--;}
Camilokingxd 0:1b7dd931c028 64 if (cw==BEHIND) {nstep--; nstep2++;}
Camilokingxd 0:1b7dd931c028 65 if (nstep>7) nstep=0;
Camilokingxd 0:1b7dd931c028 66 if (nstep<0) nstep=7;
Camilokingxd 0:1b7dd931c028 67 if (nstep2>7) nstep2=0;
Camilokingxd 0:1b7dd931c028 68 if (nstep2<0) nstep2=7;
Camilokingxd 0:1b7dd931c028 69 move();
Camilokingxd 0:1b7dd931c028 70 count--;
Camilokingxd 1:6fe876825b57 71
Camilokingxd 0:1b7dd931c028 72 }
Camilokingxd 1:6fe876825b57 73 if (cw==LEFT) {pc1.printf("LEFT \n");}
Camilokingxd 1:6fe876825b57 74 if (cw==RIGHT) {pc1.printf("RIGHT \n");}
Camilokingxd 1:6fe876825b57 75 if (cw==FORWARD) {pc1.printf("DERE \n");}
Camilokingxd 1:6fe876825b57 76 if (cw==BEHIND) {pc1.printf("ATRAS \n");}
Camilokingxd 0:1b7dd931c028 77 }