pxt-calliope/docs/projects/guitar/pinpress.md
Sam El-Husseini e3975e65e5 pxt-microbit Accessibility PR (#529)
* Accessibility changes
2017-09-07 13:42:08 -07:00

3.1 KiB

Pin Press Switch

@description @boardname@ 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

let 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 @boardname@

https://youtu.be/PAIU-vHqyGU

Hold the @boardname@ 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 @boardname@ 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 @boardname@ 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 @boardname@

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;

let 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 by touching both pieces of foil at the same time to connect the switches

https://youtu.be/GYmdTFvxz80