CODIGO PICOLO

Dependencies:   mbed

/media/uploads/nicolas_guerrero/definimos_variables_globales.pdf

Committer:
nicolas_guerrero
Date:
Tue Apr 24 18:26:09 2018 +0000
Revision:
1:629f060522ce
Child:
2:2e94085cdc90
segundo corte

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nicolas_guerrero 1:629f060522ce 1
nicolas_guerrero 1:629f060522ce 2 /******************************************************************************
nicolas_guerrero 1:629f060522ce 3 Desarrollado por ferney beltran fbeltran@ecci.edu.co
nicolas_guerrero 1:629f060522ce 4
nicolas_guerrero 1:629f060522ce 5 libreria ejemplo para el motor paso a paso unipolar de 4 fases
nicolas_guerrero 1:629f060522ce 6
nicolas_guerrero 1:629f060522ce 7 ******************************************************************************/
nicolas_guerrero 1:629f060522ce 8
nicolas_guerrero 1:629f060522ce 9 //*****************************************************************************
nicolas_guerrero 1:629f060522ce 10
nicolas_guerrero 1:629f060522ce 11 #include "stepmotor.h"
nicolas_guerrero 1:629f060522ce 12 #include "mbed.h"
nicolas_guerrero 1:629f060522ce 13
nicolas_guerrero 1:629f060522ce 14
nicolas_guerrero 1:629f060522ce 15
nicolas_guerrero 1:629f060522ce 16
nicolas_guerrero 1:629f060522ce 17
nicolas_guerrero 1:629f060522ce 18
nicolas_guerrero 1:629f060522ce 19 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4) : motor_out(in1,in2,in3,in4) {
nicolas_guerrero 1:629f060522ce 20
nicolas_guerrero 1:629f060522ce 21
nicolas_guerrero 1:629f060522ce 22 motor_out=0x0;
nicolas_guerrero 1:629f060522ce 23 nstep=0;
nicolas_guerrero 1:629f060522ce 24 motorSpeed=1100;
nicolas_guerrero 1:629f060522ce 25
nicolas_guerrero 1:629f060522ce 26 }
nicolas_guerrero 1:629f060522ce 27
nicolas_guerrero 1:629f060522ce 28
nicolas_guerrero 1:629f060522ce 29 void stepmotor::move() {
nicolas_guerrero 1:629f060522ce 30
nicolas_guerrero 1:629f060522ce 31 switch(nstep)
nicolas_guerrero 1:629f060522ce 32 {
nicolas_guerrero 1:629f060522ce 33 case 0: motor_out = 0x1; break; // 0001
nicolas_guerrero 1:629f060522ce 34 case 1: motor_out = 0x3; break; // 0011
nicolas_guerrero 1:629f060522ce 35 case 2: motor_out = 0x2; break; // 0010
nicolas_guerrero 1:629f060522ce 36 case 3: motor_out = 0x6; break; // 0110
nicolas_guerrero 1:629f060522ce 37 case 4: motor_out = 0x4; break; // 0100
nicolas_guerrero 1:629f060522ce 38 case 5: motor_out = 0xC; break; // 1100
nicolas_guerrero 1:629f060522ce 39 case 6: motor_out = 0x8; break; // 1000
nicolas_guerrero 1:629f060522ce 40 case 7: motor_out = 0x9; break; // 1001
nicolas_guerrero 1:629f060522ce 41
nicolas_guerrero 1:629f060522ce 42 default: motor_out = 0x0; break; // 0000
nicolas_guerrero 1:629f060522ce 43 }
nicolas_guerrero 1:629f060522ce 44 wait_us(motorSpeed);
nicolas_guerrero 1:629f060522ce 45
nicolas_guerrero 1:629f060522ce 46 }
nicolas_guerrero 1:629f060522ce 47
nicolas_guerrero 1:629f060522ce 48 void stepmotor::set_speed(int speed){
nicolas_guerrero 1:629f060522ce 49 motorSpeed=speed; //set motor speed us
nicolas_guerrero 1:629f060522ce 50 }
nicolas_guerrero 1:629f060522ce 51 uint32_t stepmotor::get_speed(){
nicolas_guerrero 1:629f060522ce 52 return motorSpeed; //
nicolas_guerrero 1:629f060522ce 53 }
nicolas_guerrero 1:629f060522ce 54
nicolas_guerrero 1:629f060522ce 55 void stepmotor::step(uint32_t cuadrante, bool cw) {
nicolas_guerrero 1:629f060522ce 56 // funcion para mover el motor N pasos CW o CCW
nicolas_guerrero 1:629f060522ce 57 // num_steps número de paso que da el motor
nicolas_guerrero 1:629f060522ce 58 // cw =True para dirección en sentido del reloj
nicolas_guerrero 1:629f060522ce 59 // cw =False para dirección contraria de las manecillas del reloj
nicolas_guerrero 1:629f060522ce 60 //cuadrante=cuadrante*0.199;
nicolas_guerrero 1:629f060522ce 61 float num_steps=cuadrante*814.87;
nicolas_guerrero 1:629f060522ce 62 uint32_t count=num_steps;
nicolas_guerrero 1:629f060522ce 63 while(count){
nicolas_guerrero 1:629f060522ce 64 if (cw) nstep++;
nicolas_guerrero 1:629f060522ce 65 else nstep--;
nicolas_guerrero 1:629f060522ce 66 if (nstep>7) nstep=0;
nicolas_guerrero 1:629f060522ce 67 if (nstep<0) nstep=7;
nicolas_guerrero 1:629f060522ce 68 move();
nicolas_guerrero 1:629f060522ce 69 count--;
nicolas_guerrero 1:629f060522ce 70
nicolas_guerrero 1:629f060522ce 71 }
nicolas_guerrero 1:629f060522ce 72
nicolas_guerrero 1:629f060522ce 73 }