If you are using Picaxe, I am sure you know, use, and appreciate the function called

Debug

if not, you should try it!

Debug, however, sends ALL variables to a window, and you get a lot of numbers. Another function is

Sertxd

This sends only what you want, and you can use the Terminal (Press F8) in the Picaxe editor. Please see the documentation for more.

However – you still only get ASCII and numbers.

I always hoped that somewhere hidden in the editor or extras that Picaxe is actually quite packed with – should be a program that had some sort of “plotting-ability”, sort of a lie-detector, or like Windows “task manager / performance-view”.

It would be so great if I could just get a visual of all the analogue data, instead of having to decode and compare all these numbers..

This is just as much if I was making a line-follower, a scanner (like on the video), or perhaps something more strange. Also imagine a visual view of bits and pins, weather they are high or low, shown like a piano-roll, so you could easily follow if this went high when that was below 56 or something..

Well.. For now I just wanted to make part III of “How to make your first robot”, and I wanted to have some good navigation there, and I wanted the code to be as smooth as possible so that I could teach the best.

But it was so f***** hard to get a GOOD overview out of what my sensor actually saw.

It should be a well known fact that using Picaxe as both servo-controller and sending out pulses to something like an SRF05 can sometimes produce an extra pulse to the one part. Working with these little circuits is often as much tweaking them to do what they ought to be doing as just telling them to do it.

I often find myself adding extra little lines such as

pause 10

low 0

pause 10

- that really should not be there, but when the are in there, the robot does what it should be doing :)

OK.. The TRICK! (sorry, got carried away)

Let´s say you have a word-variable called “range”, it is something returned from your sensor, giving you lots of high and low numbers, and you would like it to make more sense.

Try this in the code, just before you read the variable “range” (before, because then it does not matter that we mess with it):

range = range / 3 max 150

for b1 = 1 to range

sertxd ("|")

next b1

sertxd (13, 10)

Press F5 to upload your code

Press F8 to view magic :D

Here is the code I use in the video, in the end, with object recognition.

It puts marks on the bars when it finds “a steady part”.

Here the program has recognized a plastic cup in front of it, and marked it with the (+) - signs in the end.

It turned out – just when I was making this walkthrough and I wanted to see if I could just quickly add some object recognition – that the easiest way to find “a cup” was simply to go for areas with almost same value. Apparently things in background is returning much more unsteady values, and a cup in the foreground gives very “smooth” curves, which is easy to detect; Just see if there is not too high a jump from the previous value to this current reading..

How smooth we are looking for is set in variable “differencebit”.

This code needs a Picaxe, a servo, and an SRF05.

Idea is that this "tracing" is used to set up the program, to get to know / see what your robot sees, and then to be omited. It is really stupid that you have to send 150 ASCII before moving on to next scan, but I have no way of just "plotting", though that would be better. Also, for this to be (almost) entertaining, I am moving the "head" with "step 10". This gives not as accurate results, but it makes better video ;)

Enjoy!

Symbol servopin = 0' Defines output pin to which the servo turning the head is connected

Arh!! Just saw the Google-version of the video now.. Well - it is hard to see, but take my word; it marks up quite nicely & precisely what is cups and what is not! (in the last part of the video, object recognition)