Independent LEDs Blinking

Independent LEDs blink using Arduino FreeRTOS, realtime multi tasking, 🙂

http://ift.tt/2bg1BPo

http://ift.tt/2b4jwFJ.

via Blogger http://ift.tt/2bliGoq

Advertisements

Arduino FreeRTOS


 (Real Time Operating System).

Multi Tasking on Arduino Nano.

Led Blink and Serial Communication

http://ift.tt/2b1bhcK

http://ift.tt/2b30d2l.

#include 

int n = 0;

// define two tasks for Blink & AnalogRead
void TaskBlink( void *pvParameters );
void TaskTadaa( void *pvParameters );

// the setup function runs once when you press reset or power the board
void setup() {
  

  // Now set up two tasks to run independently.
  xTaskCreate(
    TaskBlink
    ,  (const portCHAR *)"Blink"   // A name just for humans
    ,  128  // Stack size
    ,  NULL
    ,  2  // priority
    ,  NULL );

  xTaskCreate(
    TaskTadaa
    ,  (const portCHAR *) "Tadaa"
    ,  128 // This stack size can be checked & adjusted by reading Highwater
    ,  NULL
    ,  1  // priority
    ,  NULL );

  // Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
}

void loop()
{
  // Empty. Things are done in Tasks.
}

/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/

void TaskBlink(void *pvParameters)  // This is a task.
{
  (void) pvParameters;

  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);

  for (;;) // A Task shall never return or exit.
  {
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
    vTaskDelay( 1000 / portTICK_PERIOD_MS ); // wait for one second
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
    vTaskDelay( 1000 / portTICK_PERIOD_MS ); // wait for one second
  }
}

void TaskTadaa(void *pvParameters)  // This is a task.
{
  (void) pvParameters;

  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);

  for (;;)
  {
    // read the input on analog pin 0:
    n++;
    if (n>100){n = 0;}
    // print out the value you read:
    Serial.print("Tadaa...");
    Serial.println(n);
    vTaskDelay(2000/portTICK_PERIOD_MS);// 2 second delay
    // one tick delay (15ms) in between reads for stability
  }
}

via Blogger http://ift.tt/2bh07DT