Nugroho's blog.: Independent Wireless Multitasking LEDs blink using Arduino FreeRTOS

Friday, August 19, 2016

Independent Wireless Multitasking LEDs blink using Arduino FreeRTOS



and send the data wirelessly using bluetooth module HC-05. :)



http://ift.tt/2bi4MpP.
The code
#include <Arduino_FreeRTOS.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

int n = 0;

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

// the setup function runs once when you press reset or power the board
void setup() {
   // initialize serial communication at 9600 bits per second:
  mySerial.begin(9600);  

  // 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(TaskBlink2,(const portCHAR *)"Blink2",128, NULL,2,NULL );
  xTaskCreate(TaskBlink3,(const portCHAR *)"Blink3",128, NULL,2,NULL );
  xTaskCreate(TaskBlink4,(const portCHAR *)"Blink4",128, NULL,2,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)
    mySerial.println("LED 13 Nyala");
    vTaskDelay( 1000 / portTICK_PERIOD_MS ); // wait for one second
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
    mySerial.println("LED 13 Padam");
    vTaskDelay( 1000 / portTICK_PERIOD_MS ); // wait for one second
  }
}
void TaskBlink2(void *pvParameters){
  (void) pvParameters;
  pinMode(2, OUTPUT);
  for (;;) {
    digitalWrite(2, HIGH); vTaskDelay( 2000 / portTICK_PERIOD_MS );mySerial.println("LED 2 Nyala");
    digitalWrite(2, LOW);  vTaskDelay( 2000 / portTICK_PERIOD_MS );mySerial.println("LED 2 Padam"); 
  }
}

void TaskBlink3(void *pvParameters){
  (void) pvParameters;
  pinMode(3, OUTPUT);
  for (;;) {
    digitalWrite(3, HIGH); vTaskDelay( 500 / portTICK_PERIOD_MS );mySerial.println("LED 3 Nyala");
    digitalWrite(3, LOW);  vTaskDelay( 1500 / portTICK_PERIOD_MS );mySerial.println("LED 3 Padam"); 
  }
}

void TaskBlink4(void *pvParameters){
  (void) pvParameters;
  pinMode(4, OUTPUT);
  for (;;) {
    digitalWrite(4, HIGH); vTaskDelay( 500 / portTICK_PERIOD_MS );mySerial.println("LED 4 Nyala");
    digitalWrite(4, LOW);  vTaskDelay( 250 / portTICK_PERIOD_MS );mySerial.println("LED 4 Padam"); 
  }
}

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

No comments:

323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)