Step counter activity (#1216)

* added step-counter project

* added to summary
This commit is contained in:
Peli de Halleux 2018-09-12 08:16:22 -07:00 committed by GitHub
parent a1a3ded4f3
commit 5dde6947d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 74 additions and 0 deletions

View File

@ -41,6 +41,7 @@
* [Karel](/projects/karel) * [Karel](/projects/karel)
* [Stop Watch](/projects/stopwatch) * [Stop Watch](/projects/stopwatch)
* [Name Tag](/projects/name-tag) * [Name Tag](/projects/name-tag)
* [Step counter](/projects/step-counter)
## #examples ## #examples

View File

@ -17,6 +17,12 @@
"url": "/projects/stopwatch", "url": "/projects/stopwatch",
"imageUrl":"/static/mb/projects/stopwatch.png", "imageUrl":"/static/mb/projects/stopwatch.png",
"cardType": "side" "cardType": "side"
}, {
"name": "Step counter",
"description": "Count your steps",
"url": "/projects/step-counter",
"imageUrl":"/static/mb/projects/step-counter.png",
"cardType": "side"
}] }]
``` ```

View File

@ -0,0 +1,67 @@
# Step counter
![A @boardname@ attached on a foot](/static/mb/projects/step-counter.png)
This project turns the @boardname@ into a simple step-counter.
Each **shake** event increment a **counter** variable.
## ~ hint
If you built a watch in the [make](/projects/watch/make) portion of the of the [Watch](/projects/watch) project, you can use the code from this project with it too.
## ~
## A counter
To build a counter, we will need a variable to store the number of steps.
```blocks
let step = 0
step = 0
```
## Detecting a step
Assuming you attach the @boardname@ to your foot, it will get shaken up when do a step. We can use the ``||input:on shake||`` event to detect a step (it should work most of the time). Let's add the code to increment ``step`` by 1 when @boardname@ is shaken.
```blocks
let step = 0
input.onGesture(Gesture.Shake, function () {
step += 1
})
step = 0
```
## How many steps so far?
We want to see the number of steps at all time. In a ``||basic:forever||`` loop,
we add a ``||basic:show number||`` block to display the value of ``step``.
```blocks
let step = 0
input.onGesture(Gesture.Shake, function () {
step += 1
})
basic.forever(function() {
basic.showNumber(step)
})
step = 0
```
## Display lag
Did you notice there is a lag in the display of steps?
This is because the ``step`` value can change **while** the @boardname@ is displaying a number.
To remove the lag, add ``||led:stop animation||`` after changing the value of ``step``.
```blocks
let step = 0
input.onGesture(Gesture.Shake, function () {
step += 1
led.stopAnimation()
})
basic.forever(function() {
basic.showNumber(step)
})
step = 0
```

BIN
docs/static/mb/projects/step-counter.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB