lcd 20x04 dual stepper control with ascelerometer and tsi function by facuclop

Dependencies:   MMA8451Q TSI TextLCD mbed-rtos mbed sMotor

Fork of Stepper_4 by Nuno Sarmento

Committer:
facuclop
Date:
Tue Aug 05 23:28:22 2014 +0000
Revision:
1:e462e11e7ac5
Parent:
0:6999a083fb46
lcd 20x04 dual stepper control with ascelerometer and tsi function by facuclop

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XtaticO 0:6999a083fb46 1 /*
XtaticO 0:6999a083fb46 2 ############################################
XtaticO 0:6999a083fb46 3 ## sMotor v0.1 Test Program ##
facuclop 1:e462e11e7ac5 4 ## by Facuclop ##
XtaticO 0:6999a083fb46 5 ############################################
XtaticO 0:6999a083fb46 6 */
XtaticO 0:6999a083fb46 7 #include "mbed.h"
facuclop 1:e462e11e7ac5 8 #include "TextLCD.h"
XtaticO 0:6999a083fb46 9 #include "sMotor.h"
facuclop 1:e462e11e7ac5 10 #include "TSISensor.h"
facuclop 1:e462e11e7ac5 11 #include "MMA8451Q.h"
facuclop 1:e462e11e7ac5 12 #include "rtos.h"
XtaticO 0:6999a083fb46 13
facuclop 1:e462e11e7ac5 14 #define MMA8451_I2C_ADDRESS (0x1d<<1)
facuclop 1:e462e11e7ac5 15 ///////////////////////////// io ///////////////////////////////////////////////////////
facuclop 1:e462e11e7ac5 16 //Serial pc(USBTX, USBRX);
facuclop 1:e462e11e7ac5 17 TextLCD lcd(D5, D4, D0, D1, D2, D3, TextLCD::LCD20x4);
facuclop 1:e462e11e7ac5 18 sMotor motor(A1, A2, A0, A3); // creates new stepper motor: IN1, IN2, IN3, IN4
facuclop 1:e462e11e7ac5 19 DigitalIn boton(SW1);
facuclop 1:e462e11e7ac5 20 DigitalIn boton2(PTC12);
facuclop 1:e462e11e7ac5 21 AnalogIn light(PTE22);
facuclop 1:e462e11e7ac5 22 PwmOut led1(LED1);
facuclop 1:e462e11e7ac5 23 PwmOut led2(LED2);
facuclop 1:e462e11e7ac5 24 PwmOut led3(LED3);
facuclop 1:e462e11e7ac5 25 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
facuclop 1:e462e11e7ac5 26 TSISensor tsi;
facuclop 1:e462e11e7ac5 27 /////////////////////////////////////////////////////////////////////////////////////////////
facuclop 1:e462e11e7ac5 28 int step_speed = 1300 ; // set default motor speed 1200 es la maxima mientras mas chico mas rapido
facuclop 1:e462e11e7ac5 29 int numstep = 50 ; // defines full turn of 360 degree
facuclop 1:e462e11e7ac5 30 int step_speed2 = 1200 ;
facuclop 1:e462e11e7ac5 31 int selector;
facuclop 1:e462e11e7ac5 32 //***********************************************************************************************************
XtaticO 0:6999a083fb46 33
facuclop 1:e462e11e7ac5 34 int main()
facuclop 1:e462e11e7ac5 35 {
facuclop 1:e462e11e7ac5 36 float tp=0;
facuclop 1:e462e11e7ac5 37 float ejex;
facuclop 1:e462e11e7ac5 38 float ejey;
facuclop 1:e462e11e7ac5 39 float pipo;
facuclop 1:e462e11e7ac5 40 float luz;
facuclop 1:e462e11e7ac5 41 luz=light;
facuclop 1:e462e11e7ac5 42 ////////////////////////////////////////
facuclop 1:e462e11e7ac5 43 lcd.locate(0,0);
facuclop 1:e462e11e7ac5 44 lcd.printf("__Facuclop Program__");
facuclop 1:e462e11e7ac5 45 ////////////////////////////////////////
facuclop 1:e462e11e7ac5 46
facuclop 1:e462e11e7ac5 47 ////************************************************************************************
XtaticO 0:6999a083fb46 48
facuclop 1:e462e11e7ac5 49 /*switch(selector) {
facuclop 1:e462e11e7ac5 50 case 1:if(pipo>=0.6){motor.step(numstep/2,0,step_speed);}break;
facuclop 1:e462e11e7ac5 51 case 2:if(pipo<=0.4){motor.step(numstep/2,1,step_speed);}break;
facuclop 1:e462e11e7ac5 52 }*/
facuclop 1:e462e11e7ac5 53
facuclop 1:e462e11e7ac5 54
facuclop 1:e462e11e7ac5 55 while (1) {
facuclop 1:e462e11e7ac5 56 ejex=acc.getAccX(); //esto hay que METERLO en el while
facuclop 1:e462e11e7ac5 57 ejey=acc.getAccY();
facuclop 1:e462e11e7ac5 58 pipo=tsi.readPercentage();// meto la funcion en pipo
facuclop 1:e462e11e7ac5 59 tp = (tsi.readPercentage()>0)?tsi.readPercentage():tp;
facuclop 1:e462e11e7ac5 60 lcd.locate(13,1);
facuclop 1:e462e11e7ac5 61 lcd.printf("x:%0.2f", ejex);
facuclop 1:e462e11e7ac5 62 lcd.locate(13,2);
facuclop 1:e462e11e7ac5 63 lcd.printf("y:%0.2f", ejey);
facuclop 1:e462e11e7ac5 64 lcd.locate(12,3);
facuclop 1:e462e11e7ac5 65 lcd.printf("tsi:%0.2f", pipo);
facuclop 1:e462e11e7ac5 66 lcd.locate(0,3);
facuclop 1:e462e11e7ac5 67 lcd.printf("luz: %0.2f", luz);
facuclop 1:e462e11e7ac5 68 /////////////////////////////////////////////////////////////////////////////////////////
facuclop 1:e462e11e7ac5 69 if(pipo>=0.6){motor.step(numstep/46,0,step_speed2);}
facuclop 1:e462e11e7ac5 70 //if(pipo<=0.4){motor.step(numstep/2,1,step_speed);}
facuclop 1:e462e11e7ac5 71 if(ejex>=0.5){motor.step(numstep/46,1,step_speed2);}
facuclop 1:e462e11e7ac5 72 if(ejex<=-0.5){motor.step(numstep/46,0,step_speed2);}
facuclop 1:e462e11e7ac5 73
facuclop 1:e462e11e7ac5 74 if(ejey>=0.5){step_speed2=step_speed2 + 100;}
facuclop 1:e462e11e7ac5 75 if(ejey<=-0.5){step_speed2=step_speed2 - 100;}
facuclop 1:e462e11e7ac5 76 ////////////////////////////////////////////////////////////////////////////////////////
facuclop 1:e462e11e7ac5 77 lcd.locate(0,1);
facuclop 1:e462e11e7ac5 78 lcd.printf("Speed:%d", step_speed);
facuclop 1:e462e11e7ac5 79 lcd.locate(0,2);
facuclop 1:e462e11e7ac5 80 lcd.printf("Speed2:%d", step_speed2);
facuclop 1:e462e11e7ac5 81 if (!boton){motor.step(numstep/2,0,step_speed);
facuclop 1:e462e11e7ac5 82 //wait (0.2);
facuclop 1:e462e11e7ac5 83 lcd.locate(10,3);
facuclop 1:e462e11e7ac5 84 lcd.printf("<");//alt 16
facuclop 1:e462e11e7ac5 85 }
facuclop 1:e462e11e7ac5 86 if (!boton2){motor.step(numstep/2,1,step_speed);
facuclop 1:e462e11e7ac5 87 lcd.locate(10,3);
facuclop 1:e462e11e7ac5 88 lcd.printf(">");//alt 17
facuclop 1:e462e11e7ac5 89 }
facuclop 1:e462e11e7ac5 90 if(light<0.3){motor.step(numstep/2,0,step_speed);
facuclop 1:e462e11e7ac5 91 //wait (0.5);
facuclop 1:e462e11e7ac5 92 step_speed=step_speed - 100; //1370 hace un ruidito como campanita
facuclop 1:e462e11e7ac5 93 }
facuclop 1:e462e11e7ac5 94 else if (light>0.3){
facuclop 1:e462e11e7ac5 95 //lcd.locate(0,3);
facuclop 1:e462e11e7ac5 96 //lcd.printf("poca luz");
facuclop 1:e462e11e7ac5 97 }
facuclop 1:e462e11e7ac5 98
facuclop 1:e462e11e7ac5 99 //wait (0.2);
facuclop 1:e462e11e7ac5 100 }
XtaticO 0:6999a083fb46 101 }