Distance Sensor Introduction
Scratch X or Scratch 3
The distance sensor is available in both the Scratch 3 and ScratchX Marty extensions. In both extensions you'll see a "proximity sensor" block, if you've got the distance sensor connected to Marty this block will let you get readings from it The images in this post will show Scratch 3 blocks, but the same code will work just fine in Scratch X!
What is the distance/proximity sensor?
The distance sensor we use with Marty is a modulated infrared sensor. It's the big black rectangular block on the circuit board:
The distance sensor on the expansion board
This is the bit that actually does the sensing, so it's important to make sure it's not covered!
You'll see in the photo above that it has two circular lenses, one of these is an emitter and one is a receiver. The emitter sends out modulated infrared light - its frequency is beyond what human eyes can perceive, but if you try pointing a phone camera at it you'll probably see one off the lenses glowing!
That infrared light will reflect off of an object that's in front of the sensor, and some of it will make it back to the receiver. The sensor measures how much light makes it back to the receiver to estimate how far away an object is. The closer an object, the less light will scatter in other directions and the more will make it back to the receiver.
Because the sensor measures the intensity of the received light, you might find you get different readings for a reflective white object at the same distance as a matte black one.
The sensor can measure distances from about 1cm all the way up to about 1.5m!
Connecting the Distance Sensor
If you've not already connected it, have a look at the instructions here which show you how to physically connect and plug in the distance sensor
Make sure Marty is turned off when you connect the distance sensor.
Distance Sensor Examples!
Ok, let's see some things we can do with the distance sensor!
Wave Activated Wiggling
This is a really simple script that will get Marty to wiggle when something comes close:
Wave your hand in front of Marty to make him wiggle!
This will only wiggle once, so you could put those blocks in a loop to make it happen whenever something gets close!
threshold here is set to 250, try changing that up or down to see what happens!
This code will make Marty maintain a distance from an approaching object. Good for avoiding homework!
Step backwards when the sensor detects an object nearby
We also make Marty's eyes go wide when an object is detected, then return to normal once the way is clear
Turn Around to Find an Object, then Walk to it
This is the opposite of the last set of code, and this will make your Marty super-friendly! It'll turn around until the sensor detects something, and then it'll walk towards it, stopping and wiggling once it's really close!
Precision targeted wiggling
You could change what Marty does when he gets to the object. He could kick it, or even sidestep around it and then proceed to the next obstacle!
This little script gets Marty to wait somewhere where he's hidden (like inside a cupboard or behind a book), and then when somebody discovers him he'll suprise them!
Activating a movement when an obstacle is removedThe script here gets Marty to make a noise, move his eyebrows, lean forward and put both arms up. Because we ideally want Marty to lean forward while moving both arms, we can use the `set blocking mode` block to turn off blocking mode and let us control multiple joints at once. If you've never used that before, have a look at the reference manual to see how it works. ## Over to you!
In future we'll show off a few more things you could do with the distance sensor, but that doesn't stop you inventing more for yourself now!
Why not see if you can get Marty to navigate a simple maze using the sensor!