/* * application.c * * Created on: 22.09.2022 * Author: jonas */ #include "fsl_debug_console.h" #include "application.h" #include "McuWait.h" #include "McuLED.h" #include "McuGPIO.h" #include "McuULN2003.h" #include "splitflap_pins.h" #include "splitflap.h" #include "multi-splitflap.h" /* blue led pins */ #define LED_BLUE_GPIO GPIOC #define LED_BLUE_PORT PORTC #define LED_BLUE_PIN 2U /* vars */ static McuLED_Handle_t LED_blue; static SF_Handle_t splitflap0, splitflap1; /* function declaration */ void configureSplitflaps(void); /* Application initialization */ void App_Init(void){ /* configure blue LED */ McuLED_Config_t config; McuLED_GetDefaultConfig(&config); config.isLowActive = true; config.isOnInit = false; config.hw.gpio = LED_BLUE_GPIO; config.hw.port = LED_BLUE_PORT; config.hw.pin = LED_BLUE_PIN; LED_blue = McuLED_InitLed(&config); configureSplitflaps(); MultiSplitFlap_Init(); MultiSplitFlap_AddFlap(splitflap0); MultiSplitFlap_AddFlap(splitflap1); } /* Application run */ void App_Run(void){ char* sentence[] = {"JONAS!"}; MultiSplitFlap_Display(sentence); PRINTF("Initializing split flap motors.\n"); bool successfulInit0 = SF_MoveMotorToZeroPosition(splitflap0, 12); PRINTF("Init of motor 0 done. Success = %s\n\n", successfulInit0 ? "true" : "false"); // if init failed => stop if(successfulInit0 == false){ return; } bool successfulInit1 = SF_MoveMotorToZeroPosition(splitflap1, 12); PRINTF("Init of motor 1 done. Success = %s\n\n", successfulInit1 ? "true" : "false"); // if init failed => stop if(successfulInit1 == false){ return; } // go through the following letters char* letters[] = {"J", "O", "N", "A", "S", "!"}; //char* letters[] = { " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", // "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", // "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", // "!", "?", ":"}; PRINTF("Amount of letters %i\n", sizeof(letters)/sizeof(letters[0])); while(1){ for(int i = 0; i < sizeof(letters)/sizeof(letters[0]); i++){ McuWait_Waitms(1000); PRINTF("Moving to letter '%s', position is %i\n", letters[i], (int)SF_GetMotorPosition(splitflap0)); SF_MoveToFlap(splitflap0, letters[i]); PRINTF("Position after move is is %i\n", (int)SF_GetMotorPosition(splitflap0)); } } } /* Application de-initialization */ void App_Deinit(void){ } void configureSplitflaps(void){ /* SPLITFLAP 0 */ /* configure the motor */ McuULN2003_Config_t motor0Config; McuULN2003_GetDefaultConfig(&motor0Config); motor0Config.hw[0].gpio = STEPPER_MOTOR0_IN1_GPIO; motor0Config.hw[0].port = STEPPER_MOTOR0_IN1_PORT; motor0Config.hw[0].pin = STEPPER_MOTOR0_IN1_PIN; motor0Config.hw[1].gpio = STEPPER_MOTOR0_IN2_GPIO; motor0Config.hw[1].port = STEPPER_MOTOR0_IN2_PORT; motor0Config.hw[1].pin = STEPPER_MOTOR0_IN2_PIN; motor0Config.hw[2].gpio = STEPPER_MOTOR0_IN3_GPIO; motor0Config.hw[2].port = STEPPER_MOTOR0_IN3_PORT; motor0Config.hw[2].pin = STEPPER_MOTOR0_IN3_PIN; motor0Config.hw[3].gpio = STEPPER_MOTOR0_IN4_GPIO; motor0Config.hw[3].port = STEPPER_MOTOR0_IN4_PORT; motor0Config.hw[3].pin = STEPPER_MOTOR0_IN4_PIN; motor0Config.inverted = true; /* configure magnetic sensor for motor 0 */ McuGPIO_Config_t magSensor0Config; McuGPIO_GetDefaultConfig(&magSensor0Config); magSensor0Config.hw.gpio = MAG_MOTOR0_GPIO; magSensor0Config.hw.port = MAG_MOTOR0_PORT; magSensor0Config.hw.pin = MAG_MOTOR0_PIN; magSensor0Config.isInput = true; magSensor0Config.hw.pull = McuGPIO_PULL_UP; /* create config instance for splitflap 0 */ SF_Config_t sf0Config; sf0Config.magSensorConfig = magSensor0Config; sf0Config.motorConfig = motor0Config; /* initialize splitflap 0 */ splitflap0 = SF_Init(&sf0Config, 0); /* SPLITFLAP 1 */ /* configure the motor */ McuULN2003_Config_t motor1Config; McuULN2003_GetDefaultConfig(&motor1Config); motor1Config.hw[0].gpio = STEPPER_MOTOR1_IN1_GPIO; motor1Config.hw[0].port = STEPPER_MOTOR1_IN1_PORT; motor1Config.hw[0].pin = STEPPER_MOTOR1_IN1_PIN; motor1Config.hw[1].gpio = STEPPER_MOTOR1_IN2_GPIO; motor1Config.hw[1].port = STEPPER_MOTOR1_IN2_PORT; motor1Config.hw[1].pin = STEPPER_MOTOR1_IN2_PIN; motor1Config.hw[2].gpio = STEPPER_MOTOR1_IN3_GPIO; motor1Config.hw[2].port = STEPPER_MOTOR1_IN3_PORT; motor1Config.hw[2].pin = STEPPER_MOTOR1_IN3_PIN; motor1Config.hw[3].gpio = STEPPER_MOTOR1_IN4_GPIO; motor1Config.hw[3].port = STEPPER_MOTOR1_IN4_PORT; motor1Config.hw[3].pin = STEPPER_MOTOR1_IN4_PIN; motor1Config.inverted = true; /* configure magnetic sensor for motor 0 */ McuGPIO_Config_t magSensor1Config; McuGPIO_GetDefaultConfig(&magSensor1Config); magSensor1Config.hw.gpio = MAG_MOTOR1_GPIO; magSensor1Config.hw.port = MAG_MOTOR1_PORT; magSensor1Config.hw.pin = MAG_MOTOR1_PIN; magSensor1Config.isInput = true; magSensor1Config.hw.pull = McuGPIO_PULL_UP; /* create config instance for splitflap 0 */ SF_Config_t sf1Config; sf1Config.magSensorConfig = magSensor1Config; sf1Config.motorConfig = motor1Config; /* initialize splitflap 1 */ splitflap1 = SF_Init(&sf1Config, 1); }