Pulang dari Kampus.

Alfa: Ayah, tadi jatuh pas naik sepeda gajah, berdarah. Ndak mandi, nanti perih.(Sambil menunjukkan jempol kaki yang kulitnya terkelupas) 🙂

Kangen.

Kinanthi: Lama nggak ngobrol ya Meg.Meg: Iya Kin, lha sekarang semua sibuk ngurusi Mukidi.K: (senyum)

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
  }
}

Independent LEDs Blinking

 using Arduino FreeRTOS, realtime multi tasking, 🙂

 I programmed LED on pin 2, 3, 4 and 13 to blink at its own time. The advantage of this Arduino FreeRTOS is we don’t have to calculate the timing of each pin in respect of sequential execution. It’s has its own task and schedule, independent of each other.

http://ift.tt/2b4jwFJ.

#include <Arduino_FreeRTOS.h>

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:
Serial.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)
Serial.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
Serial.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 );Serial.println("LED 2 Nyala");
digitalWrite(2, LOW); vTaskDelay( 2000 / portTICK_PERIOD_MS );Serial.println("LED 2 Padam");
}
}

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

void TaskBlink4(void *pvParameters){
(void) pvParameters;
pinMode(4, OUTPUT);
for (;;) {
digitalWrite(4, HIGH); vTaskDelay( 500 / portTICK_PERIOD_MS );Serial.println("LED 4 Nyala");
digitalWrite(4, LOW); vTaskDelay( 250 / portTICK_PERIOD_MS );Serial.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:
Serial.print("Tadaa...");
Serial.println(n);
vTaskDelay(2000/portTICK_PERIOD_MS);// 2 second delay
// one tick delay (15ms) in between reads for stability
}
}

Arduino FreeRTOS

(Real Time Operating System).Multi Tasking on Arduino Nano.Led Blink and Serial Communication

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
}
}

Can not Detect Arduino Nano on El Capitan?

It because the nano used CH341 usb to serial adapter that will not install because El Capitan enforces kext driver signing.

So, I trace the step from https://tzapu.com/making-ch340-ch341-serial-adapters-work-under-el-capitan-os-x/
…and it works again, 🙂
To disable kext signing:
– Reboot and press CMD+R immediately after the chime to enter Recovery Mode
– Open Terminal from Recovery mode
– run the command csrutil enable –without kext
– run the command reboot

Old Mechanical Keyboard KPT-102 on iPad

Old Clicky Mechanical Keyboard on iPad, using Arduino as PS/2 to HID signal converter, 🙂

I use the code from https://gist.github.com/DorianRudolph/ca283dfdfd185bc812b7

But, as I use OSX, I can’n do this

“To make the programs work you need to open the file hardware/arduino/avr/cores/arduino/USBAPI.h located in your Arduino folder and make the Keyboard_::sendReport method public.

To do that I open the Finder, go to Applications Folder right click Arduino App, select Show Package Content and adit Keyboard.h at /Applications/Arduino.app/Contents/Java/libraries/Keyboard/src

Update: I tucked the Arduino  Pro Micro inside keyboard, 🙂

http://ift.tt/2aIwnlw.