CODIGO PICOLO

Dependencies:   mbed

/media/uploads/nicolas_guerrero/definimos_variables_globales.pdf

Committer:
nicolas_guerrero
Date:
Wed May 30 14:29:52 2018 +0000
Revision:
2:2e94085cdc90
Parent:
1:629f060522ce
Programa Piccolo

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 2:2e94085cdc90 14 stepmotor::stepmotor(PinName in1, PinName in2, PinName in3, PinName in4) : motor_out(in1,in2,in3,in4)
nicolas_guerrero 2:2e94085cdc90 15 {
nicolas_guerrero 1:629f060522ce 16 motor_out=0x0;
nicolas_guerrero 1:629f060522ce 17 nstep=0;
nicolas_guerrero 1:629f060522ce 18 motorSpeed=1100;
nicolas_guerrero 1:629f060522ce 19
nicolas_guerrero 1:629f060522ce 20 }
nicolas_guerrero 2:2e94085cdc90 21 void stepmotor::move()
nicolas_guerrero 2:2e94085cdc90 22 {
nicolas_guerrero 1:629f060522ce 23 switch(nstep)
nicolas_guerrero 1:629f060522ce 24 {
nicolas_guerrero 1:629f060522ce 25 case 0: motor_out = 0x1; break; // 0001
nicolas_guerrero 1:629f060522ce 26 case 1: motor_out = 0x3; break; // 0011
nicolas_guerrero 1:629f060522ce 27 case 2: motor_out = 0x2; break; // 0010
nicolas_guerrero 1:629f060522ce 28 case 3: motor_out = 0x6; break; // 0110
nicolas_guerrero 1:629f060522ce 29 case 4: motor_out = 0x4; break; // 0100
nicolas_guerrero 1:629f060522ce 30 case 5: motor_out = 0xC; break; // 1100
nicolas_guerrero 1:629f060522ce 31 case 6: motor_out = 0x8; break; // 1000
nicolas_guerrero 1:629f060522ce 32 case 7: motor_out = 0x9; break; // 1001
nicolas_guerrero 1:629f060522ce 33 default: motor_out = 0x0; break; // 0000
nicolas_guerrero 1:629f060522ce 34 }
nicolas_guerrero 2:2e94085cdc90 35 wait_us(motorSpeed);
nicolas_guerrero 1:629f060522ce 36 }
nicolas_guerrero 2:2e94085cdc90 37 void stepmotor::set_speed(int speed)
nicolas_guerrero 2:2e94085cdc90 38 {
nicolas_guerrero 1:629f060522ce 39 motorSpeed=speed; //set motor speed us
nicolas_guerrero 1:629f060522ce 40 }
nicolas_guerrero 1:629f060522ce 41 uint32_t stepmotor::get_speed(){
nicolas_guerrero 1:629f060522ce 42 return motorSpeed; //
nicolas_guerrero 1:629f060522ce 43 }
nicolas_guerrero 1:629f060522ce 44 void stepmotor::step(uint32_t cuadrante, bool cw) {
nicolas_guerrero 1:629f060522ce 45 // funcion para mover el motor N pasos CW o CCW
nicolas_guerrero 1:629f060522ce 46 // num_steps número de paso que da el motor
nicolas_guerrero 1:629f060522ce 47 // cw =True para dirección en sentido del reloj
nicolas_guerrero 1:629f060522ce 48 // cw =False para dirección contraria de las manecillas del reloj
nicolas_guerrero 1:629f060522ce 49 //cuadrante=cuadrante*0.199;
nicolas_guerrero 1:629f060522ce 50 float num_steps=cuadrante*814.87;
nicolas_guerrero 1:629f060522ce 51 uint32_t count=num_steps;
nicolas_guerrero 1:629f060522ce 52 while(count){
nicolas_guerrero 1:629f060522ce 53 if (cw) nstep++;
nicolas_guerrero 1:629f060522ce 54 else nstep--;
nicolas_guerrero 1:629f060522ce 55 if (nstep>7) nstep=0;
nicolas_guerrero 1:629f060522ce 56 if (nstep<0) nstep=7;
nicolas_guerrero 1:629f060522ce 57 move();
nicolas_guerrero 1:629f060522ce 58 count--;
nicolas_guerrero 1:629f060522ce 59 }
nicolas_guerrero 1:629f060522ce 60 }