void APP_HandleEvent(byte event) { switch(event) { case EVNT1_INIT: LED1_On(); WAIT1_Waitms(200); LED2_On(); WAIT1_Waitms(200); LED3_On(); WAIT1_Waitms(200); LED4_On(); WAIT1_Waitms(200); LED1_Off(); LED2_Off(); LED3_Off(); LED4_Off(); break; case EVNT1_SW1_PRESSED: LED1_On(); WAIT1_Waitms(200); LED1_Off(); break; case EVNT1_SW2_PRESSED: LED2_On(); WAIT1_Waitms(200); LED2_Off(); break; case EVNT1_SW3_PRESSED: LED3_On(); WAIT1_Waitms(200); LED3_Off(); break; case EVNT1_SW4_PRESSED: LED4_On(); WAIT1_Waitms(200); LED4_Off(); break; case EVNT1_SW1_LONG_PRESSED: LED1_On(); WAIT1_Waitms(500); LED1_Off(); break; case EVNT1_SW2_LONG_PRESSED: LED2_On(); WAIT1_Waitms(500); LED2_Off(); break; case EVNT1_SW3_LONG_PRESSED: LED3_On(); WAIT1_Waitms(500); LED3_Off(); break; case EVNT1_SW4_LONG_PRESSED: LED4_On(); WAIT1_Waitms(500); LED4_Off(); break; } /* switch */ }
static portTASK_FUNCTION(RNetTask, pvParameters) { uint32_t cntr; uint8_t msgCntr; (void)pvParameters; /* not used */ if (RAPP_SetThisNodeAddr(RNWK_ADDR_BROADCAST)!=ERR_OK) { /* set a default address */ for(;;); /* "ERR: Failed setting node address" */ } cntr = 0; /* initialize LED counter */ msgCntr = 0; /* initialize message counter */ appState = RNETA_INITIAL; /* initialize state machine state */ for(;;) { Process(); /* process state machine */ cntr++; if (cntr==100) { /* with an RTOS 10 ms/100 Hz tick rate, this is every second */ LED3_On(); /* blink blue LED for 20 ms */ RAPP_SendPayloadDataBlock(&msgCntr, sizeof(msgCntr), RAPP_MSG_TYPE_PING, RNWK_ADDR_BROADCAST, RPHY_PACKET_FLAGS_NONE); msgCntr++; cntr = 0; FRTOS1_vTaskDelay(20/portTICK_RATE_MS); LED3_Off(); /* blink blue LED */ } FRTOS1_vTaskDelay(10/portTICK_RATE_MS); } /* for */ }
/*! * \brief LED test routine. * This routine tests if: * - we can turn the LEDs properly on and off * - if we can negate them * - if we can set an LED value * - if we can get the LED value * If the test fails, the program will hanging in an endless loop */ void LED_Test(void) { bool isOn = TRUE; LED1_On(); LED2_On(); LED3_On(); LED1_Off(); LED2_Off(); LED3_Off(); LED1_Neg(); LED2_Neg(); LED3_Neg(); LED1_On(); /* if (!LED1_Get()) { LED3_Off(); } LED1_Off(); if (LED1_Get()) { for(;;){}; /* error } LED1_Put(isOn); if (!LED1_Get()) { for(;;){}; /* error } */ }
void APP_Start(void) { PL_Init(); /* platform initialization */ //TEST_Test(); EVNT_SetEvent(EVNT_INIT); /* set initial event */ #if PL_HAS_RTOS if (FRTOS1_xTaskCreate(AppTask, (signed portCHAR *)"App", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL) != pdPASS) { for(;;){} /* error */ } RTOS_Run(); #else APP_Loop(); #endif #if 0 for(;;) { #if PL_HAS_MEALY MEALY_Step(); #else LED1_On(); WAIT1_Waitms(300); LED1_Off(); LED2_On(); WAIT1_Waitms(300); LED2_Off(); LED3_On(); WAIT1_Waitms(300); LED3_Off(); #endif } #endif /* just in case we leave the main application loop */ PL_Deinit(); }
void APP_Run(void) { LED1_On(); LED1_Off(); LED2_On(); LED2_Off(); LED3_On(); LED3_Off(); #if PL_HAS_SHELL SHELL_Init(); #endif #if PL_HAS_ESC ESC_Init(); #endif if (FRTOS1_xTaskCreate( AppTask, /* pointer to the task */ "Main", /* task name for kernel awareness debugging */ configMINIMAL_STACK_SIZE, /* task stack size */ (void*)NULL, /* optional task startup argument */ tskIDLE_PRIORITY, /* initial priority */ (xTaskHandle*)NULL /* optional task handle to create */ ) != pdPASS) { for(;;){} /* error! probably out of memory */ } FRTOS1_vTaskStartScheduler(); for(;;) {} }
/*lint -save -e970 Disable MISRA rule (6.3) checking. */ int main(void) /*lint -restore Enable MISRA rule (6.3) checking. */ { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ /* Write your code here */ LED1_On(); WAIT1_Waitms(100); LED1_Off(); LED2_On(); WAIT1_Waitms(100); LED2_Off(); LED3_On(); WAIT1_Waitms(100); LED3_Off(); CDC_Run(); /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* ** =================================================================== ** Method : LED3_SetRatio16 (component LEDbit) ** Description : ** Method to specify the duty cycle. If using a PWM pin, this ** means the duty cycle is set. For On/off pins, values smaller ** 0x7FFF means off, while values greater means on. ** Parameters : ** NAME - DESCRIPTION ** ratio - Ratio value, where 0 means 'off' and ** 0xffff means 'on' ** Returns : Nothing ** =================================================================== */ void LED3_SetRatio16(word ratio) { /* on/off LED: binary on or off */ if (ratio<(0xffff/2)) { LED3_Off(); } else { LED3_On(); } }
/* User includes (#include below this line is not maintained by Processor Expert) */ static portTASK_FUNCTION(LedTask, pvParameters) { (void)pvParameters; /* parameter not used */ LED1_Off(); LED2_Off(); LED3_Off(); for(;;) { LED1_Neg(); FRTOS1_vTaskDelay(100/portTICK_RATE_MS); } }
/**************************************************************************** Function: void SetLEDs(BYTE setting) Summary: change the LED settings of the boards Description: change the LED settings of the boards Precondition: None Parameters: BYTE setting - bitmap for desired LED setting (1 = On, 0 = Off) bit 0 = LED 0 bit 1 = LED 1 bit 2 = LED 2 ... bit 7 = LED 7 Return Values: None Remarks: None ***************************************************************************/ static void SetLEDs(BYTE setting) { if((setting & 0x01) == 0x01) { LED0_On(); } else { LED0_Off(); } if((setting & 0x02) == 0x02) { LED1_On(); } else { LED1_Off(); } if((setting & 0x04) == 0x04) { LED2_On(); } else { LED2_Off(); } if((setting & 0x08) == 0x08) { LED3_On(); } else { LED3_Off(); } if((setting & 0x10) == 0x10) { LED4_On(); } else { LED4_Off(); } if((setting & 0x20) == 0x20) { LED5_On(); } else { LED5_Off(); } if((setting & 0x40) == 0x40) { LED6_On(); } else { LED6_Off(); } if((setting & 0x80) == 0x80) { LED7_On(); } else { LED7_Off(); } }
/*lint -save -e970 Disable MISRA rule (6.3) checking. */ int main(void) /*lint -restore Enable MISRA rule (6.3) checking. */ { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ #if PL_HAS_SD_CARD /* SD card detection: PTE6 with pull-down! */ PORT_PDD_SetPinPullSelect(PORTE_BASE_PTR, 6, PORT_PDD_PULL_DOWN); PORT_PDD_SetPinPullEnable(PORTE_BASE_PTR, 6, PORT_PDD_PULL_ENABLE); #endif #if PL_HAS_KEYS /* SW3: PTA4 */ PORT_PDD_SetPinPullSelect(PORTA_BASE_PTR, 4, PORT_PDD_PULL_UP); PORT_PDD_SetPinPullEnable(PORTA_BASE_PTR, 4, PORT_PDD_PULL_ENABLE); /* SW2: PTC6 */ PORT_PDD_SetPinPullSelect(PORTC_BASE_PTR, 6, PORT_PDD_PULL_UP); PORT_PDD_SetPinPullEnable(PORTC_BASE_PTR, 6, PORT_PDD_PULL_ENABLE); #endif #if PL_HAS_BLUETOOTH /* pull up Rx pin (PTC14) for Bluetooth module */ PORT_PDD_SetPinPullSelect(PORTC_BASE_PTR, 14, PORT_PDD_PULL_UP); PORT_PDD_SetPinPullEnable(PORTC_BASE_PTR, 14, PORT_PDD_PULL_ENABLE); #endif LED1_On(); WAIT1_Waitms(50); LED1_Off(); WAIT1_Waitms(50); LED2_On(); WAIT1_Waitms(50); LED2_Off(); WAIT1_Waitms(50); LED3_On(); WAIT1_Waitms(50); LED3_Off(); WAIT1_Waitms(50); APP_Start(); /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
void LED_Deinit(void) { #if PL_CONFIG_NOF_LED>=1 LED1_Off(); #endif #if PL_CONFIG_NOF_LED>=2 LED2_Off(); #endif #if PL_CONFIG_NOF_LED>=3 LED3_Off(); #endif #if PL_CONFIG_NOF_LED>=4 #error "only 3 LEDs supported" #endif }
void APP_Run(void) { int16_t x,y,z; uint8_t res; #define ACCEL_VAL 2000 res = FX1_Enable(); /* enable accelerometer (just in case) */ if (res!=ERR_OK) { Err(); } if (FAT1_Init()!=ERR_OK) { Err(); } if (FAT1_mount(0, &fileSystemObject) != FR_OK) { /* mount file system */ Err(); } for(;;) { //LED1_Neg(); x = FX1_GetX(); y = FX1_GetY(); z = FX1_GetZ(); if (x>ACCEL_VAL || x<-ACCEL_VAL) { LED1_On(); LED2_Off(); LED3_Off(); } else if (y>ACCEL_VAL || y<-ACCEL_VAL) { LED1_Off(); LED2_On(); LED3_Off(); } else if (z>ACCEL_VAL || z<-ACCEL_VAL) { LED1_Off(); LED2_Off(); LED3_On(); } LogToFile(x, y, z); WAIT1_Waitms(1000); } }
void LED_Init(void){ LED1_Init(); LED2_Init(); LED3_Init(); /*turn all LEDS OFF per default */ #if PL_NOF_LEDS>=1 LED1_Off(); #endif #if PL_NOF_LEDS>=2 LED2_Off(); #endif #if PL_NOF_LEDS>=3 LED3_Off(); #endif }
void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { //==SET uart1_data = USART_ReceiveData(USART1); if(i == '0'){ if (uart1_data =='a') i = uart1_data; else if(uart1_data =='d') i = uart1_data; else i = '0'; } else if(i == 'a'){ i = (uart1_data =='b') ? uart1_data : '0'; } else if(i == 'b'){ i = (uart1_data =='c') ? uart1_data : '0'; } else if(i == 'c'){ if (uart1_data =='3') i = uart1_data; else if(uart1_data =='4') i = uart1_data; else i = '0'; } else if(i == '3'){ if(uart1_data =='o') LED3_On(); else if(uart1_data =='f') LED3_Off(); i = '0'; } else if(i == '4'){ if(uart1_data =='o') LED4_On(); else if(uart1_data =='f') LED4_Off(); i = '0'; } else if(i == 'd'){ i = (uart1_data =='e') ? uart1_data : '0'; } else if(i == 'e'){ i = (uart1_data =='f') ? uart1_data : '0'; } else if(i == 'f'){ if(uart1_data =='3') LED3_Toggle(); else if(uart1_data =='4') LED4_Toggle(); i = '0'; } USART_SendData(USART1, i); } }
void APP_Run(void) { #if configUSE_TRACE_HOOKS if (RTOSTRC1_uiTraceStart()==0) { for(;;){} /* error starting trace recorder. Not setup for enough queues/tasks/etc? */ } #endif #if PL_HAS_SD_CARD /* SD card detection: PTB16 with pull-down! */ PORT_PDD_SetPinPullSelect(PORTB_BASE_PTR, 16, PORT_PDD_PULL_DOWN); PORT_PDD_SetPinPullEnable(PORTB_BASE_PTR, 16, PORT_PDD_PULL_ENABLE); #endif #if PL_HAS_PUSH_BUTTONS /* SW2: PTC1 */ PORT_PDD_SetPinPullSelect(PORTC_BASE_PTR, 1, PORT_PDD_PULL_UP); PORT_PDD_SetPinPullEnable(PORTC_BASE_PTR, 1, PORT_PDD_PULL_ENABLE); /* SW3: PTB17 */ PORT_PDD_SetPinPullSelect(PORTB_BASE_PTR, 17, PORT_PDD_PULL_UP); PORT_PDD_SetPinPullEnable(PORTB_BASE_PTR, 17, PORT_PDD_PULL_ENABLE); #endif LED1_On(); LED1_Off(); LED2_On(); LED2_Off(); LED3_On(); LED3_Off(); #if PL_HAS_SHELL SHELL_Init(); #endif #if PL_HAS_ESC ESC_Init(); #endif if (FRTOS1_xTaskCreate( AppTask, /* pointer to the task */ "Main", /* task name for kernel awareness debugging */ configMINIMAL_STACK_SIZE, /* task stack size */ (void*)NULL, /* optional task startup argument */ tskIDLE_PRIORITY, /* initial priority */ (xTaskHandle*)NULL /* optional task handle to create */ ) != pdPASS) { for(;;){} /* error! probably out of memory */ } FRTOS1_vTaskStartScheduler(); for(;;) {} }
void APP_Run(void) { uint8_t res=ERR_OK; uint8_t xyz[3]; LED1_On(); LED2_On(); LED3_On(); res = MMA8451_Init(); while (res==ERR_OK) { res = MMA8451_GetRawXYZ(&xyz[0]); LED1_Put(xyz[0]>50); LED2_Put(xyz[1]>50); LED3_Put(xyz[2]>50); } LED1_Off(); LED2_Off(); LED3_Off(); }
static void CDC_Run(void) { int i, cnt = 0; uint32_t val = 0; unsigned char buf[16]; (void)CDC1_SendString((unsigned char*)"Hello world from the KL25Z with USB CDC\r\n"); for(;;) { while(CDC1_App_Task(cdc_buffer, sizeof(cdc_buffer))==ERR_BUSOFF) { /* device not enumerated */ LED1_Neg(); LED2_Off(); WAIT1_Waitms(10); cnt++; if (cnt==100) { LED3_Neg(); cnt = 0; } } LED1_Off(); LED2_Neg(); LED3_Off(); if (CDC1_GetCharsInRxBuf()!=0) { i = 0; while( i<sizeof(in_buffer)-1 && CDC1_GetChar(&in_buffer[i])==ERR_OK ) { i++; } in_buffer[i] = '\0'; (void)CDC1_SendString((unsigned char*)"echo: "); (void)CDC1_SendString(in_buffer); UTIL1_strcpy(buf, sizeof(buf), (unsigned char*)"val: "); UTIL1_strcatNum32u(buf, sizeof(buf), val); UTIL1_strcat(buf, sizeof(buf), (unsigned char*)"\r\n"); (void)CDC1_SendString(buf); val++; } else { WAIT1_Waitms(10); cnt++; if ((cnt%1024)==0) { /* from time to time, write some text */ (void)CDC1_SendString((unsigned char*)"Type some text and it will echo.\r\n"); } } } }
void LED_Test(void) { #if PL_CONFIG_NOF_LED>=1 LED1_On(); WAIT1_Waitms(500); LED1_Off(); #endif #if PL_CONFIG_NOF_LED>=2 LED2_On(); WAIT1_Waitms(500); LED2_Off(); #endif #if PL_CONFIG_NOF_LED>=3 LED3_On(); WAIT1_Waitms(500); LED3_Off(); #endif #if PL_CONFIG_NOF_LED>=4 #error "only 3 LED ;)" #endif }
static void TestFlash(void) { //IFsh1_Init(); LED3_On(); WAIT1_Waitms(500); #if 1 if (IFsh1_EraseSector(FLASH_ADDR)!=ERR_OK) { for(;;) { LED1_Neg(); WAIT1_Waitms(50); } } if (IFsh1_SetBlockFlash(&data[0], FLASH_ADDR, sizeof(data))!=ERR_OK) { for(;;) { LED2_Neg(); WAIT1_Waitms(100); } } #endif LED3_Off(); }
void APP_HandleEvent(byte event) { switch(event) { case EVNT1_INIT: LED1_On(); LED2_On(); LED3_On(); LED4_On(); WAIT1_Waitms(500); LED1_Off(); LED2_Off(); LED3_Off(); LED4_Off(); break; case EVNT1_BTN1_PRESSED: #if HAS_SOUND RTOS_StartSounder(300); #endif LED4_Neg(); SHELL_SendStr("SW1 pressed!\r\n"); break; case EVNT1_BTN2_PRESSED: #if HAS_SOUND RTOS_StartSounder(500); #endif LED5_Neg(); SHELL_SendStr("SW2 pressed!\r\n"); break; case EVNT1_BTN3_PRESSED: #if HAS_SOUND RTOS_StartSounder(700); #endif LED7_Neg(); SHELL_SendStr("SW3 pressed!\r\n"); break; case EVNT1_BTN4_PRESSED: #if HAS_SOUND RTOS_StartSounder(900); #endif LED8_Neg(); SHELL_SendStr("SW4 pressed!\r\n"); break; default: break; } /* switch */ }
void main(void) { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ LED1_Neg(); WAIT1_Waitms(100); LED2_Neg(); WAIT1_Waitms(100); LED3_Neg(); WAIT1_Waitms(100); LED4_Neg(); WAIT1_Waitms(100); LED1_Off(); LED2_Off(); LED3_Off(); LED4_Off(); CDC_Run(); /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
void APP_Run(void) { int i; uint32_t val = 0; unsigned char buf[16]; Buzzer_SetRatio16(0xFFFF/2); /* 50% duty ratio */ for(;;) { while(CDC1_App_Task(cdc_buffer, sizeof(cdc_buffer))==ERR_BUSOFF) { /* device not enumerated */ LED1_Neg(); LED2_Off(); LED3_Neg(); LED4_Off(); WAIT1_Waitms(10); } LED1_Off(); LED2_Neg(); LED3_Off(); LED4_Neg(); if (CDC1_GetCharsInRxBuf()!=0) { i = 0; while( i<sizeof(in_buffer)-1 && CDC1_GetChar(&in_buffer[i])==ERR_OK ) { i++; } in_buffer[i] = '\0'; (void)CDC1_SendString((unsigned char*)"echo: "); (void)CDC1_SendString(in_buffer); UTIL1_strcpy(buf, sizeof(buf), (unsigned char*)"val: "); UTIL1_strcatNum32u(buf, sizeof(buf), val); UTIL1_strcat(buf, sizeof(buf), (unsigned char*)"\r\n"); (void)CDC1_SendString(buf); val++; } else { WAIT1_Waitms(10); } } }
/*! \brief Handles the Events */ static void APP_EventHandler(EVNT_Handle event) { uint8_t err; switch(event) { case EVNT_INIT: LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); LED2_On(); vTaskDelay(50/portTICK_RATE_MS); LED2_Off(); LED3_On(); vTaskDelay(50/portTICK_RATE_MS); LED3_Off(); break; case EVENT_LED_HEARTBEAT: LED2_Neg(); break; case EVNT_SW1_PRESSED: lastKeyPressed = 1; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); //EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION); #if PL_HAS_FIGHT_MODE FIGHT_SetState(FIGHT_STATE_COUNTDOWN); break; #endif #if PL_HAS_LINE_SENSOR case EVNT_REF_START_STOP_CALIBRATION: //Create event again, because the event is handled in the "Reflectance.c" directly. if(!EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) { EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION); } break; #endif #if PL_IS_FRDM case EVNT_SW2_PRESSED: lastKeyPressed = 2; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; case EVNT_SW3_PRESSED: lastKeyPressed = 3; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; case EVNT_SW4_PRESSED: lastKeyPressed = 4; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; case EVNT_SW5_PRESSED: lastKeyPressed = 5; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; case EVNT_SW6_PRESSED: lastKeyPressed = 6; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; case EVNT_SW7_PRESSED: lastKeyPressed = 7; LED1_On(); vTaskDelay(50/portTICK_RATE_MS); LED1_Off(); break; #endif default: break; } }
void accelTest(void){ uint8_t res = ERR_OK; int8_t dataX = 0; deviceData.handle = I2C1_Init(&deviceData); #if 0 uint8_t data = 0; int8_t i = 2; WAIT1_WaitCycles(25); res = LIS2DH12TR_ReadReg(0x0f, &data, sizeof(data)); WAIT1_WaitCycles(25); res = LIS2DH12TR_WriteReg(0x20, 0b01111111); WAIT1_WaitCycles(25); res = LIS2DH12TR_WriteReg(0x23, 0b00100000); for(;;){ WAIT1_WaitCycles(25); res = LIS2DH12TR_ReadReg(0x29, &dataX, 1U); if(dataX > i){ LED1_On(); i = -1; } else if(dataX < i){ LED1_Off(); i = 1; } } #else #define MASK_LED1 0x04 #define MASK_LED2 0x02 #define MASK_LED3 0x01 #define PIXEL_TIME_MS 1 uint8_t img[] = {7,2,7,0,7,7,7,0,7,4,4,0,7,4,7}; WAIT1_WaitCycles(25); res = LIS2DH12TR_WriteReg(0x20, 0b01111111); WAIT1_WaitCycles(25); res = LIS2DH12TR_WriteReg(0x23, 0b00100000); WAIT1_WaitCycles(25); bool swipeRight = FALSE; bool swipeLeft = FALSE; uint8_t right = 0; uint8_t left = 0; uint8_t prevAccelValue = 0; uint8_t lengthOfImage = sizeof(img); while(1){ //WAIT1_WaitCycles(25); WAIT1_Waitms(1); res = LIS2DH12TR_ReadReg(0x29, &dataX, 1U); if(dataX < prevAccelValue){ right++; if(right == 3){ swipeRight = TRUE; right = 0; } } /*else if(dataX > prevAccelValue){ left++; if(left == 3){ swipeLeft = TRUE; left = 0; } }*/ prevAccelValue = dataX; if ((dataX > 40) & swipeRight){ WAIT1_Waitms(10); for(int i=0; i<lengthOfImage; i++){ LED1_Put(img[i] & MASK_LED1); LED2_Put(img[i] & MASK_LED2); LED3_Put(img[i] & MASK_LED3); WAIT1_Waitms(PIXEL_TIME_MS); LED1_Off(); LED2_Off(); LED3_Off(); WAIT1_Waitms(PIXEL_TIME_MS); } swipeRight = FALSE; } /*else if ((dataX < 40) & swipeLeft){ WAIT1_Waitms(10); for(int i=(lengthOfImage-1); i>=0; i--){ LED1_Put(img[i] & MASK_LED1); LED2_Put(img[i] & MASK_LED2); LED3_Put(img[i] & MASK_LED3); WAIT1_Waitms(PIXEL_TIME_MS); LED1_Off(); LED2_Off(); LED3_Off(); WAIT1_Waitms(PIXEL_TIME_MS); } swipeLeft = FALSE; }*/ //prevAccelValue = 0; } #endif }
void LED_Init(void) { /* all LED's off by default */ LED1_Off(); LED2_Off(); LED3_Off(); }