Page 1 of 1

how to cancel (stop) a piece of code?

Posted: Sun Nov 07, 2021 7:27 pm
by HyperUniverse
Hi,

I've got this piece of code that is changing the colour of 10 LEDs:

Code: Select all

void Circle_Rainbow() {
	sendData(Turn_LED3_Red, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED4_Amber, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED5_Blue, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED6_White, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED7_Green, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED8_Red, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED9_Amber, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED0_Blue, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED1_White, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED2_Green, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED3_Red, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED4_Amber, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED5_Blue, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED6_White, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED7_Green, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED8_Red, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED9_Amber, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED0_Blue, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED1_White, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
	sendData(Turn_LED2_Green, 8);
	vTaskDelay(75 / portTICK_PERIOD_MS);
}	
how can I cancel it at any point, after I've started it, if I wish to?
I'll use a button to cancel it, but I can't figure out how.
Right now, if I start it, I need to wait until is finished.

Maybe I need to modify the code so I won't change the LED's colour from inside a void?

Anybody can give me a hint?

Thanks,
Regards.

Re: how to cancel (stop) a piece of code?

Posted: Sun Nov 07, 2021 11:12 pm
by Victoria Nope
You can use a timer from which you would send the data in turn for each LED with every tick. And such timer you'd then control from button interrupt routine.

Re: how to cancel (stop) a piece of code?

Posted: Mon Nov 08, 2021 3:38 pm
by HyperUniverse
Thanks Victoria Nope, I'll need a couple of days to do that.

Regards.