Showing posts with label lego. Show all posts
Showing posts with label lego. Show all posts

Thursday, January 13, 2011

Remote controlled 8258 alternative truck with Arduino: introduction

After a long, long time without any post, today I'm going to resume my initial goal for the blog and I'll show you an Arduino + Lego project.
It's a modification to the truck of the 8258 alternative model to make it a remote controlled vehicle via a pair of Arduinos.
In fact this is a proof of concept for future, more elavorated, models. I had the model already built and the goal was to make it remote controllable with the minimum effort. So, no asthetic goals, complicated solutions... just a proof of concept.

The project has two parts:
1- The truck itself. With a motor to power the car governed by an HBridge, a servo for the steering, a radio receptor to receive commands and an Arduino to control it all.
2- The remote. With a Wii nunchuck, a radio emitter and an Arduino.

It this video you cand see it in action.



My first intention was to write two big posts. The first one about the construction process and the second about the programming. The problem is that I don't have the time. So I've decided to write short posts focused in a simple aspect of the project every time.
So this is the first post of a serie: the introduction.
In the next weeks I'll try to write a post a week and put a link in this first post every time new one is published.
Enjoy!

Friday, March 26, 2010

Introducing Susi and the PScheduller library

Susi

What's Susi? It's a Super Simon game.
Why is it super? Because it features:
  • Normal 4-buttons-4-leds-1-buzzer behaviour.
  • Ongoing button monitor to fail if a button is pressed when it's not the user's turn.
  • Time out on excessive delay in the user's turn.
  • A 7-segments display to show animations, count-down time and final score controlled by a 595 shift register.
  • A servo to show the progress.
  • Two user controllers: my generic control panel and a Lego Technic one.
And all controlled with an Arduino, of course.
Do you want to see it working? Watch the video.



If we all know the world is plenty of Simon games, why did I make another Simon? Because it's a good demonstration for my PScheduller library, the real motivation of this post, and because my children have fun with it.

PScheduller

Let's introduce PScheduller. PScheduller is a library for Arduino developed with two goals in mind:
  1. To have a simple way to run several tasks simultaniously. This is, a kind of multithreading.
  2. To implement a state machin (FSM) that allows the programmer to focus on what really matters depending on the state of the program.
PScheduller is a library mainly written in C++. You can download it from my GitHub repository. There you'll find the directory PScheduller that you have to put under hardware/libraries/ at your arduino's installation directory. You'll find too the full code of Susi (named PSimon) that you have to put in your Arduino projects directory.

In future posts I'll describe PScheduller and its usage, and the code of PSimon. If you download and open PSimon, don't get scary. PSimon it's a relatively complex program due to the number of components it controls. With simpler programs, the code is really clear and straightforward.

The lego version

The version of the video avobe uses my generic control panel (you'll have a future post on it too). I constructed a Lego Technic panel for Susi to be more useful for my children. They like to play with it!
You can see a video of this second version in action:


In this version I've substituted the momentary push buttons of the generic panel by four limit switches. They are actually well integrated in the Lego structure and produce the "click" that you can heard in the video each time the user presses a color. Look at the picture below.


By the way, this was my first "real" project combining electronics with a Lego structure. And I learned an important lesson: you have to plan what you want to do before doing it. I just started to construct the structure, to place components and to solder long wires to avoid problems when I plug the terminals in the Arduino or a breadboard. But when it was time to plug it all, I discovered that it was dificult to have a comfortable layout. In fact you can see in the video how the 7-segments is in a strange position...


Summing up

Ok, it's enough for today. I don't like long posts.
To complement this post I'll comment in future posts:
  • In depth explanation of PScheduller with some easy samples.
  • In depth explanation of Susi (PSimon) code as a sample of a more complex program using PScheduller.
  • An introduction to my generic controller. It's really useful.
If you have any preference or suggestion about more topics regarding this post, please, leave a comment and I'll try to respond (the comments are moderated just to avoid spammers).

Wednesday, March 10, 2010

Welcome!

Hello and Welcome to my blog.
In this blog I'll post about my two current hobbys: Arduino (electronics) and Lego, specially Lego Technic. I'll document here my progress in merging this two technologies to make amazing -I hope- projects.
Get fun!

Disclaimer. I apologize for my poor english. Although my mother tongues are spanish and catalan, I prefere to write in english to reach a wider audience who can enrich this blog with its comments. Of course, you are welcome to correct my writings ;)