HelveKit Robot: A chipKIT Robot Design

There are plenty of “how to design a robot” tutorials out there; this is not one of them. Why is this one different? Because the author, GastonLagaffe, doesn’t want to tell you what to do, as he doesn’t want to limit your creativity. 🙂 His personal goals for this robot were for it to be small, autonomous, cheap, easy to solder, easy to program, with plenty of holes, and swarm capable, and although the journey to get from concept to implementation took him 12 months, he learned a lot along the way.

So if you want to make a robot, why not dream big as you read about how Gaston took what started as a small wish and made it a reality, Gaston-style. To see his journey, check out this HelveKit Robot Design Journey on Instructables. You may smile as you see his approach and decide you would have done it differently, but that’s exactly what Gaston would want you to do!

VN:F [1.9.22_1171]
Rating: 5.0/10 (10 votes cast)
VN:F [1.9.22_1171]
Rating: -1 (from 3 votes)

chipKIT Task Manager Example

Task Mangement with chipKIT Platform

Besides the many Arduino-based core functions available to you, the chipKIT platform also provides chipKIT-specific core functions for the core timer service and task management.

In this post, we focus on task management, by providing a simple example. Task Management essentially allows for multiple tasks to run in the background, which can simplify the programming in your loop() function. Read the overview on Task Management for more information. The example below animates an LED in the background by using the createTask() core function. Notice how this task-management functionality provides for a simple RTOS-like environment.

#include <SoftPWMServo.h>

char dim = 0;

/* Using the Software-based PWM Servo library, 
 *  the UpdateLED() function below dims the 
 *  PIN_LED1 (You can reference the actual pin 
 *  number for your board using the Board_Defs.h 
 *  file for your particular chipKIT board)
void UpdateLED(int id, void * tptr) 
	SoftPWMServoPWMWrite(PIN_LED1, dim++);

	if (dim == 70) {
  		dim = 0;

void setup() {

	/* createTask() is a chipKIT "Task Management" 
	 *  core function. In this case, it takes the  
	 *  function we defined above, UpdateLED(), as a 
	 *  task to perform. It provides a scheduling interval
	 *  of 20 milliseconds and initializes the enable 
	 *  state of the task. When the board is turned on
	 *  this setup() will run, and the new task will be
	 *  enabled.
	createTask(UpdateLED, 20, TASK_ENABLE, NULL);

 * Notice, there is no need to run anything else in the loop() 
 *  portion for the UpdateLED() "task" to run in the background.
void loop() {}

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)