The answer, of course, is five: Its four neighbors -- to the north, south, east, and west -- and it can talk to itself as well.
While this is not a great riddle, it does raise a point: Since a sketch can simply do:
facePrintf(NORTH,"you are north of me\n"); facePrintf(SOUTH,"you are south of me\n"); facePrintf(EAST,"you are east of me\n"); facePrintf(WEST,"you are west of me\n");
to send packets to the four points of the compass, why can't a sketch send a packet to itself -- or more properly, to its future self -- in a similar way?
The answer is that a sketch can do exactly that, using a special 'working memory' face named WMEM:
facePrintf(WMEM,"you ARE me (in the future)\n");
It is also possible to do this via the Memory object:
Memory.printf("you ARE me (in the future)\n");
Packets printed to WMEM aren't sent offboard at all; they are stored locally in RAM, and reflex-triggered some time in the (usually near) future, as seen in this tiny sketch, which toggles an LED whenever a 't' packet is received, or when the button is pushed -- using the talk-to-self power of WMEM in the latter case.
// Print to WMEM to make a packet in 'working memory' void toggle(u8 *) { ledToggle(BODY_RGB_GREEN_PIN); } void setup() { Body.reflex('t',toggle); // Set up reflex } void loop() { if (buttonDown()) { // If button is pushed facePrintf(WMEM,"t\n"); // Send a blink packet to ourselves while (buttonDown()) delay(1); // And wait for button up } }