Which processor should you use? In many ways it is not too critical but
not all processors are well suited to driving a mouse. In particular, the
small, cheap, easy to use PICs are not your best choice. They can certainly
do the job but they will need that bit of extra cunning to build a maze
solving mouse with adequate performance. Their main constraint is memory.
There is plenty of program space but life is made much easier if there is
at least 1k of RAMto store the map, routing table and other data. In fact,
you can do this in rather less memory. 64 bytes is sufficient to store the
map if you want as you only need to keep track of less than 512 walls. However,
the penalty for this is the overhead needed to decode the data into a more
usable form as you run around the maze.
Few processors and microcontrollers have this much memory on the chip
and so you will probably need to add external RAM. Since these are usually
a minimum of several kilobytes these days, there is little point in skimping
on RAM. You will save very little on board space, wiring or cost so just
go for whatever is convenient.
Your choice of sensors may have an impact on your processor – or vice
versa. Analogue sensors will need some form of analogue to digital conversion.
While this is readily available as a separate device, it would be much
more convenient if A to D were a function on the microcontroller. Digital
sensors, such as the common top-down type, are readily interfaced to most
At least one timer will be useful. You can do all your calculations and
timings in software with cunningly designed delay loops and subroutines.
Many of these things become much easier if there is a timer running that
can give easy delays and/or regular interrupts for your main control functions.
Typical timing functions might include periodinc calculations for the
PID algorithm controlling DC motors or the tight timing requirements of
high-speed stepper motors.
Many processors have several independant timers available, others require
a more complex setting of just one or two timers. An attractive feature
is some kind of programmable counter or timer array that can perform bit
orientated operations on output pins with no processor intervention.
Counters might be needed to keep track of wheel sensors. Again, you can
manage without by making use of interrupts or by polling the pins in software
loops. Hardware counters are much more convenient. Sometimes you will
find that timers can be used as counters. often these functions are mutually