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
Revision 1:e462e11e7ac5, committed 2014-08-05
- Comitter:
- facuclop
- Date:
- Tue Aug 05 23:28:22 2014 +0000
- Parent:
- 0:6999a083fb46
- Commit message:
- lcd 20x04 dual stepper control with ascelerometer and tsi function by facuclop
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Tue Aug 05 23:28:22 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/JoKer/code/MMA8451Q/#2d14600116fc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TSI.lib Tue Aug 05 23:28:22 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/TSI/#507b1f67804b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue Aug 05 23:28:22 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/benyun/code/TextLCD/#7dd9751172e1
--- a/main.cpp Thu Jun 14 12:18:18 2012 +0000 +++ b/main.cpp Tue Aug 05 23:28:22 2014 +0000 @@ -1,62 +1,101 @@ /* ############################################ ## sMotor v0.1 Test Program ## -## created by Samuel Matildes ## +## by Facuclop ## ############################################ - ---- sam.naeec@gmail.com ----- -This library was made for 4-Phase Stepper Motors -I don't take any resposability for the damage caused to your equipment. - */ - #include "mbed.h" +#include "TextLCD.h" #include "sMotor.h" - +#include "TSISensor.h" +#include "MMA8451Q.h" +#include "rtos.h" -Serial pc(USBTX, USBRX); -sMotor motor(p9, p10, p11, p12); // creates new stepper motor: IN1, IN2, IN3, IN4 - -int step_speed = 1200 ; // set default motor speed -int numstep = 512 ; // defines full turn of 360 degree -//you might want to calibrate this value according to your motor +#define MMA8451_I2C_ADDRESS (0x1d<<1) +///////////////////////////// io /////////////////////////////////////////////////////// +//Serial pc(USBTX, USBRX); +TextLCD lcd(D5, D4, D0, D1, D2, D3, TextLCD::LCD20x4); +sMotor motor(A1, A2, A0, A3); // creates new stepper motor: IN1, IN2, IN3, IN4 +DigitalIn boton(SW1); +DigitalIn boton2(PTC12); +AnalogIn light(PTE22); +PwmOut led1(LED1); +PwmOut led2(LED2); +PwmOut led3(LED3); +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); +TSISensor tsi; +///////////////////////////////////////////////////////////////////////////////////////////// +int step_speed = 1300 ; // set default motor speed 1200 es la maxima mientras mas chico mas rapido +int numstep = 50 ; // defines full turn of 360 degree +int step_speed2 = 1200 ; +int selector; +//*********************************************************************************************************** - -int main() { - - //Credits - printf("4 Phase Stepper Motor v0.1 - Test Program\r\n"); - printf("developed by Samuel Matildes\r\n"); - printf("\n\r"); +int main() + { +float tp=0; +float ejex; +float ejey; +float pipo; +float luz; +luz=light; +//////////////////////////////////////// +lcd.locate(0,0); +lcd.printf("__Facuclop Program__"); +//////////////////////////////////////// + +////************************************************************************************ - // Screen Menu - printf("Default Speed: %d\n\r",step_speed); - printf("1- 360 degree clockwise step\n\r"); - printf("2- 360 degree anticlockwise step\n\r"); - printf("3- 180 degree clockwise step\n\r"); - printf("4- 180 degree anticlockwise step\n\r"); - printf("5- Change Speed\n\r"); - - while (1) { - - if (pc.readable()) { // checks for serial - - if (pc.getc()=='1') - motor.step(numstep,0,step_speed); // number of steps, direction, speed - - if (pc.getc()=='2') - motor.step(numstep,1,step_speed); - - if (pc.getc()=='3') - motor.step(numstep/2,0,step_speed); - - if (pc.getc()=='4') - motor.step(numstep/2,1,step_speed); - - if (pc.getc()=='5') { - printf("Current Speed: %d\n\r", step_speed); - printf("New speed: \n\r"); - pc.scanf("%d",&step_speed); // sets new speed - } - } - } +/*switch(selector) { + case 1:if(pipo>=0.6){motor.step(numstep/2,0,step_speed);}break; + case 2:if(pipo<=0.4){motor.step(numstep/2,1,step_speed);}break; + }*/ + + +while (1) { + ejex=acc.getAccX(); //esto hay que METERLO en el while + ejey=acc.getAccY(); + pipo=tsi.readPercentage();// meto la funcion en pipo +tp = (tsi.readPercentage()>0)?tsi.readPercentage():tp; + lcd.locate(13,1); + lcd.printf("x:%0.2f", ejex); + lcd.locate(13,2); + lcd.printf("y:%0.2f", ejey); + lcd.locate(12,3); + lcd.printf("tsi:%0.2f", pipo); + lcd.locate(0,3); + lcd.printf("luz: %0.2f", luz); +///////////////////////////////////////////////////////////////////////////////////////// + if(pipo>=0.6){motor.step(numstep/46,0,step_speed2);} + //if(pipo<=0.4){motor.step(numstep/2,1,step_speed);} + if(ejex>=0.5){motor.step(numstep/46,1,step_speed2);} + if(ejex<=-0.5){motor.step(numstep/46,0,step_speed2);} + + if(ejey>=0.5){step_speed2=step_speed2 + 100;} + if(ejey<=-0.5){step_speed2=step_speed2 - 100;} +//////////////////////////////////////////////////////////////////////////////////////// + lcd.locate(0,1); + lcd.printf("Speed:%d", step_speed); + lcd.locate(0,2); + lcd.printf("Speed2:%d", step_speed2); + if (!boton){motor.step(numstep/2,0,step_speed); + //wait (0.2); + lcd.locate(10,3); + lcd.printf("<");//alt 16 + } + if (!boton2){motor.step(numstep/2,1,step_speed); + lcd.locate(10,3); + lcd.printf(">");//alt 17 + } + if(light<0.3){motor.step(numstep/2,0,step_speed); + //wait (0.5); + step_speed=step_speed - 100; //1370 hace un ruidito como campanita + } + else if (light>0.3){ + //lcd.locate(0,3); + //lcd.printf("poca luz"); + } + + //wait (0.2); +} } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Aug 05 23:28:22 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#ac8d036315ed
--- a/mbed.bld Thu Jun 14 12:18:18 2012 +0000 +++ b/mbed.bld Tue Aug 05 23:28:22 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/737756e0b479 +http://mbed.org/users/mbed_official/code/mbed/builds/04dd9b1680ae \ No newline at end of file