THINGS USED IN THIS PROJECT

Hardware components:
A000066 iso both
Arduino UNO & Genuino UNO
×1
Ard yun
Arduino Yun
×1
A000057 featured
Arduino Leonardo
×1
A000053 iso both1
Arduino MICRO & Genuino MICRO
×1
Ardgen mega
Arduino Mega 2560 & Genuino Mega 2560
×1
SeeedStudio Seeeduino Lite
×1
SeeedStudio Seeeduino Stalker V3
×1
SeeedStudio Seeeduino Ethernet
×1
12640 01a
SparkFun Pro Micro - 5V/16MHz
×1
13741 01
SparkFun RedStick
×1
Microview action
SparkFun MicroView - OLED Arduino Module
×1
FreeRTOS
×1
Software apps and online services:
Ide web
Arduino IDE

CODE

Blink_AnalogRead.inoArduino
These are two basic sketches from the Arduino IDE Built-in Examples, combined into one multi-tasking sketch using two FreeRTOS Tasks.
#include <Arduino_FreeRTOS.h>

// define two tasks for Blink & AnalogRead
void TaskBlink( void *pvParameters );
void TaskAnalogRead( 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(
    TaskAnalogRead
    ,  (const portCHAR *) "AnalogRead"
    ,  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 TaskAnalogRead(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:
    int sensorValue = analogRead(A0);
    // print out the value you read:
    Serial.println(sensorValue);
    vTaskDelay(1);  // one tick delay (15ms) in between reads for stability
  }
}

CREDITS

Cyberman crop
Phillip Stevens
You can flog a dead horse to water, but the grass is always greener on the flip side.
Thanks to Richard Berry.

REPLICATIONS

Did you replicate this project? Share it!
I made one
Love this project? Think it could be improved? Tell us what you think!

Comments

Popular Posts