added testpattern for moving directly to a letter

added SF_GetMotorPosition
main
Jonas Arnold 4 years ago
parent b0ab02b31a
commit 2821ca6670
  1. 12
      ADIS_tinyK22_SplitFlap/source/application.c
  2. 9
      ADIS_tinyK22_SplitFlap/source/splitflap.c
  3. 4
      ADIS_tinyK22_SplitFlap/source/splitflap.h

@ -5,6 +5,7 @@
* Author: jonas * Author: jonas
*/ */
#include "fsl_debug_console.h"
#include "application.h" #include "application.h"
#include "McuWait.h" #include "McuWait.h"
#include "McuLED.h" #include "McuLED.h"
@ -71,8 +72,19 @@ void App_Init(void){
/* Application run */ /* Application run */
void App_Run(void){ void App_Run(void){
PRINTF("Initializing split flap motors.");
SF_MoveMotorToZeroPosition(splitflap0); SF_MoveMotorToZeroPosition(splitflap0);
PRINTF("Init of motors done.");
// go through the whole dictionary
char* letters[] = {"A", "B", "C", "A"};
for(int i = 0; i < 4; i++){
McuWait_Waitms(1000);
PRINTF("Moving to letter '%s', position is %i", letters[i], (int)SF_GetMotorPosition(splitflap0));
SF_MoveToFlap(splitflap0, letters[i]);
PRINTF("Position is %i", (int)SF_GetMotorPosition(splitflap0));
}
/* TEST PATTERN */ /* TEST PATTERN */

@ -13,7 +13,7 @@
#include "lib/dict.h" #include "lib/dict.h"
#include "splitflap_flaps.h" #include "splitflap_flaps.h"
dict_t **splitFlapDict; static dict_t **splitFlapDict;
void SF_InitConfig(void){ void SF_InitConfig(void){
splitFlapDict = dictAlloc(); splitFlapDict = dictAlloc();
@ -144,7 +144,8 @@ void SF_MoveToFlap(SF_Handle_t instance, char* flap){
int32_t currentPos = McuULN2003_GetPos(((SF_t*)instance)->motor); int32_t currentPos = McuULN2003_GetPos(((SF_t*)instance)->motor);
// calc steps to move // calc steps to move
int32_t stepsToReachFlap = 0; int32_t stepsToReachFlap = 0;
if(flapPos == currentPos){ // not already there
if(flapPos != currentPos){
if(flapPos < currentPos){ if(flapPos < currentPos){
stepsToReachFlap = SPLITFLAP_STEPS_ONE_ROUND-currentPos+flapPos; stepsToReachFlap = SPLITFLAP_STEPS_ONE_ROUND-currentPos+flapPos;
}else if(flapPos > currentPos){ }else if(flapPos > currentPos){
@ -155,6 +156,10 @@ void SF_MoveToFlap(SF_Handle_t instance, char* flap){
} }
int32_t SF_GetMotorPosition(SF_Handle_t instance){
return McuULN2003_GetPos(((SF_t*)instance)->motor);
}
void SF_Deinit(SF_Handle_t instance){ void SF_Deinit(SF_Handle_t instance){
McuULN2003_DeinitMotor(((SF_t*)instance)->motor); McuULN2003_DeinitMotor(((SF_t*)instance)->motor);
McuGPIO_DeinitGPIO(((SF_t*)instance)->magSensor); McuGPIO_DeinitGPIO(((SF_t*)instance)->magSensor);

@ -11,6 +11,7 @@
#include <stdbool.h> #include <stdbool.h>
#include "McuULN2003.h" #include "McuULN2003.h"
#include "McuGPIO.h" #include "McuGPIO.h"
#include "lib/dict.h"
/****** SETTINGS ******/ /****** SETTINGS ******/
@ -61,6 +62,9 @@ bool SF_GetMagSensorAtZeroPosition(SF_Handle_t instance);
/* move to specific flap */ /* move to specific flap */
void SF_MoveToFlap(SF_Handle_t instance, char* flap); void SF_MoveToFlap(SF_Handle_t instance, char* flap);
/* get current position of motor */
int32_t SF_GetMotorPosition(SF_Handle_t instance);
/* split flap deinitialization */ /* split flap deinitialization */
void SF_Deinit(SF_Handle_t instance); void SF_Deinit(SF_Handle_t instance);

Loading…
Cancel
Save