Latest News

Workshop dates for Semester 2, 2008 are now available. link

Domabotics awarded a Peter Doherty Award for excellence in science education. link

Resources

Classroom Activities for the Busy Teacher: NXT

Classroom Activities for the Busy Teacher: RCX

Blog

Dr Damien Kee is also a contributor to the popular NXTstep blog, a website by the top LEGO MINDSTORMS experts from around the world.
Complete NXTstep blog
All Damien's articles

Projects

A collection of various small projects I'm working on. Expect the list to grow over the coming months.

Puppy dog

This robot design was inspired by the amazing creations of Theo Jansen. The leg design is based on a six bar linkage which I best found explained at http://www.mechanicalspider.com/



Card dealing robot

A robot that deals cards for poker. This robot deals from the bottom of the pack using an NXT wheel to draw out a card. A second NXT wheel spinning 5 times quicker then 'spits' out the card. The whole device is mounted on a turntable to allow the robot to deal into different position.


Clap Back

This robot samples any loud sounds and keeps track of the time between each. It then plays back the rhythm by tapping on a plastic container. The code is written in NXC and is a good example of how arrays can be used.

task main() { int time[20]; //Take a maximum of 20 samples long t0; int i=0; int x=1; /* Setup port 1 as sound sensor */ SetSensorSound(IN_1); /* Grab the current reading of the timer */ t0 = CurrentTick(); /* Loop while the difference between the current timer and the initial timer is less than 5 seconds */ while ((CurrentTick()-t0) < 5000) { /* If the sensors hears a loud sound, record the timer value */ if(Sensor(IN_1) > 30) { time[i] = CurrentTick()-t0; i++; /* Wait until that sound has dissapated before looking for the next */ until(Sensor(IN_1) <29); } } /* Start taps */ OnFwd(OUT_A, 100); Wait(75); OnRev(OUT_A, 100); Wait(75); Off(OUT_A); for(x=1;x<20;x++) { /* If the difference is 0, that means that there are no more claps recorded */ if(time[x]==0){ break;} /* Wait for the time difference between each clap (don't forget that tap also takes up a certain amount of time */ Wait( time[x]-time[x-1]-150); OnFwd(OUT_A, 100); Wait(75); OnRev(OUT_A, 100); Wait(75); Off(OUT_A); } Wait(1000); }