About

Independent technology educator bringing technology concepts to teachers and educators around the world.

Books

Teacher Resource Books

DomaBot Map

See where the DomaBot is being used around the world

« Card Dealing Robot | Main
Monday
Jun232008

Clap Back Robot

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;

SetSensorSound(IN_1); /* Setup port 1 as sound sensor */

t0 = CurrentTick();/* Grab the current reading of the timer */

 

/* Loop while the difference between the current timer and the initial timer is less than 5 seconds */

while ((CurrentTick()-t0) < 5000) {

if(Sensor(IN_1) < 30) {   /* If the sensors hears a loud sound, record the timer value */

time[i] = CurrentTick()-t0;

i++;

until(Sensor(IN_1) < 29); /* Wait until that sound has dissapated before looking for the next */

}

}

 

/* Start taps */

OnFwd(OUT_A, 100); Wait(75);

OnRev(OUT_A, 100); Wait(75);

Off(OUT_A);

for(x=1;x<20;x++) {  

if(time[x]==0){   /* If the difference is 0, that means that there are no more claps recorded */

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);

}

 

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>