pxt-calliope/docs/projects/guitar/pinpress.md
Peli de Halleux 2ae78fe6b8 Updated guitar lessons (#268)
* initial notes

* updated code samples

* splitting the page and preparing layout

* missing gamepad api

* added basic guitar activty md files

added initial draft of guitar lesson - in progress

* word smithing and adding detail for concepts listed

* word smithing and adding detail for concepts listed

* typo in file name

* missing macro

* replaced guitar.png with image from Julia Carlson

* adding a few pictures

* adding cards macros

* few tweaks

* image for accellerometer lesson xyz axis

* fixed the numbering buttons page
-fixed the numbering to restart for each section and asdded spaces after so they don't wrap

* adding a few video links

* pin-press - added circuit info

* more vids

* fixing latest commit

* edits to light sensor and pin-press

* updated descriptions, linking lesson

* pin-press and display-buttons updates
-added dode samples to pin press

* updated making video

* light-sensor updated numbering

* Clean up
Clean up of headings to template style, other fixes

* putting display in template
use h2 with "Step 1:" and image before text

* removed numbered lists for display & light
these topics are code complete

* more consistent formating
Acceleromenter, buttons, light sensosr

* Acceleration Lesson, added art
Lesson steps for Acceleration, art for degree F to C for Map anology+clean up of light sensor topic

* Pin Press code complete
some other basic fomats and edits

* Removed dashes in lesson names
renamed and fixed references to files with "-" in names

* rest of fles w/ dash in name changes

* fixed links to guitar activities

* updated acceleraomter section

* transparency 4 art, image text
added transarency and renamed art, added descriptive text for video and still images

* renamed art

* fixing the merge

* fixing hint

* moved step 2 outside ~hint block

* fixing snippets

* remove guitar from project list

* Duration/Materials consistent  format
moved out of ~avatar block
2016-10-03 14:59:58 -07:00

3.2 KiB

Pin Press Switch

@description micro:bit guitar: use pin press to toggle guitar play on/off

~avatar avatar

Use pin press to switch guitar play on/off

  • Concepts:
    • Circuit
    • Conductor
    • Variable/Global-Variable
    • Conditional: if, else
    • Boolean: True/False

~

Duration: approximately 45 minutes

Materials:

2-3 Crocodile clips

Blocks

var on = false
on;
if (on) { } else {}
input.onPinPressed(TouchPin.P1, () => {})

~hint

Circuits & Switches

  • Circuits need a power supply (battery), a resister (like a LED) & a conductor (metal, water, hand)
  • Switches turn electric power on by closing (completing) a circuit with a conductor so power can flow

Metal foil and wires make excellent conductors

In this activity we use YOU to conduct electricity
to close the circuit that switches the guitar ON and OFF!

~

Step 1: Pin Press Test

input.onPinPressed(TouchPin.P0, () => {
    basic.showNumber(0)
})
input.onPinPressed(TouchPin.P1, () => {
    basic.showNumber(1)
})
input.onPinPressed(TouchPin.P2, () => {
    basic.showNumber(2)
})

Create the pin-press code

Download the code on the micro:bit

https://youtu.be/PAIU-vHqyGU

Hold the micro:bit touching The GND pin with one hand
with the other hand alternately touch the 0, 1 and 2 pins

~hint

The electric signal traveled from pins, between your hands to GND and the micro:bit detected the electric signal!

~

Step 2: Installing conductive foil on the guitar

https://youtu.be/NX0ECcpXFes
Add foil to the guitar body where it is easy to touch while playing

Connect the foil to GND using a crocodile clip

https://youtu.be/YkymZGNmkrE
Add foil to the guitar neck

Connect the foil to pin 1 using a crocodile clip

Step 3: Add a switch to turn the guitar ON and OFF

Using the on global variable we can switch the message on the micro:bit
between ON and OFF

let on = false
basic.forever(() => {
    if (on == true) {
        basic.showString("ON")
    } else {
        basic.showString("OFF")
    }
})
input.onPinPressed(TouchPin.P1, () => {
    if (on == true) {
        on = false
    } else {
        on = true
    }
})

Create the ON/OFF switch code

Download the code on the micro:bit

Test by touching P1 to toggle the LED message between ON and OFF

Final code TODO: do we want to use on = !on; or be more direct in flipping the switch? on = true; on = false;

var on = false
basic.forever(() => {
    if (on) {
        music.setTempo(pins.map(Math.abs(input.acceleration(Dimension.Y)),
            0, 1023,
            60, 320))
        music.playTone(
            input.lightLevel() * 25,
            music.beat(BeatFraction.Quarter)
        );
    } else {
        music.rest(music.beat())
    }
})
input.onPinPressed(TouchPin.P1, () => {
    on = !on;
})

Now Play!

Turn the guitar ON and OFF with a pin press on the connected foil
touching both pieces of foil at the same time to connect the switches

https://youtu.be/GYmdTFvxz80