정영천Alex Kim김병련임헌준
Published © CC BY-NC

소셜 임팩트_RC카 거리감지 초음파_알김정임

마이크로비트를 활용하여 분해한 RC카를 조종한다.

IntermediateProtip4 hours17
소셜 임팩트_RC카 거리감지 초음파_알김정임

Things used in this project

Hardware components

BBC micro:bit board
BBC micro:bit board
×2
Coin Cell Battery Holder
Coin Cell Battery Holder
×1
Solo Smart Battery
3DR Solo Smart Battery
×1
Speaker: 0.25W, 8 ohms
Speaker: 0.25W, 8 ohms
×1

Hand tools and fabrication machines

rc car
Tool driver
Wire stripper

Story

Read more

Schematics

RC 수신 02

RC Control

RC 수신 01

RC 수신 03

RC 수신 04

Code

RC Control

JavaScript
let item = 0
input.onButtonPressed(Button.A, () => {
    radio.sendNumber(item)
})
input.onGesture(Gesture.TiltLeft, () => {
    item = 1
    basic.showLeds(`
        . . # . .
        . # . . .
        # # # # #
        . # . . .
        . . # . .
        `)
})
input.onGesture(Gesture.LogoUp, () => {
    item = 4
    basic.showLeds(`
        . . # . .
        . . # . .
        # . # . #
        . # # # .
        . . # . .
        `)
})
input.onButtonPressed(Button.B, () => {
    radio.sendNumber(0)
    basic.showLeds(`
        . # # # .
        # . . # #
        # . # . #
        # # . . #
        . # # # .
        `)
})
input.onGesture(Gesture.ScreenUp, () => {
    item = 2
    basic.showLeds(`
        . . # . .
        . # # # .
        # . # . #
        . . # . .
        . . # . .
        `)
})
input.onButtonPressed(Button.AB, () => {
    radio.sendNumber(10)
})
input.onGesture(Gesture.TiltRight, () => {
    item = 3
    basic.showLeds(`
        . . # . .
        . . . # .
        # # # # #
        . . . # .
        . . # . .
        `)
})
radio.setGroup(77)
basic.showIcon(IconNames.Yes)

RC Receive

JavaScript
let item = 0
radio.onDataPacketReceived( ({ receivedNumber }) =>  {
    if (receivedNumber == 0) {
        basic.showLeds(`
            . # # # .
            # . . # #
            # . # . #
            # # . . #
            . # # # .
            `)
        pins.digitalWritePin(DigitalPin.P8, 0)
        pins.digitalWritePin(DigitalPin.P12, 0)
        pins.digitalWritePin(DigitalPin.P13, 0)
        pins.digitalWritePin(DigitalPin.P14, 0)
    } else if (receivedNumber == 1) {
        basic.showLeds(`
            . . # . .
            . . . # .
            # # # # #
            . . . # .
            . . # . .
            `)
        pins.digitalWritePin(DigitalPin.P8, 1)
        pins.digitalWritePin(DigitalPin.P12, 1)
        pins.digitalWritePin(DigitalPin.P13, 1)
        pins.digitalWritePin(DigitalPin.P14, 1)
    } else if (receivedNumber == 2) {
        basic.showLeds(`
            . . # . .
            . . # . .
            # . # . #
            . # # # .
            . . # . .
            `)
        pins.digitalWritePin(DigitalPin.P8, 0)
        pins.digitalWritePin(DigitalPin.P12, 0)
        pins.digitalWritePin(DigitalPin.P13, 1)
        pins.digitalWritePin(DigitalPin.P14, 1)
    } else if (receivedNumber == 3) {
        basic.showLeds(`
            . . # . .
            . # . . .
            # # # # #
            . # . . .
            . . # . .
            `)
        pins.digitalWritePin(DigitalPin.P8, 0)
        pins.digitalWritePin(DigitalPin.P12, 1)
        pins.digitalWritePin(DigitalPin.P13, 1)
        pins.digitalWritePin(DigitalPin.P14, 1)
    } else if (receivedNumber == 4) {
        basic.showLeds(`
            . . # . .
            . # # # .
            # . # . #
            . . # . .
            . . # . .
            `)
        pins.digitalWritePin(DigitalPin.P8, 0)
        pins.digitalWritePin(DigitalPin.P12, 0)
        pins.digitalWritePin(DigitalPin.P13, 0)
        pins.digitalWritePin(DigitalPin.P14, 1)
    } else if (receivedNumber == 10) {
        for (let i = 0; i < 4; i++) {
            pins.digitalWritePin(DigitalPin.P11, 1)
            pins.analogWritePin(AnalogPin.P0, 400)
            basic.pause(100)
            pins.digitalWritePin(DigitalPin.P11, 0)
            pins.analogWritePin(AnalogPin.P0, 0)
            basic.pause(100)
        }
    }
})
pins.digitalWritePin(DigitalPin.P11, 0)
radio.setGroup(77)
basic.showIcon(IconNames.Yes)
basic.forever(() => {
    item = sonar.ping(
    DigitalPin.P16,
    DigitalPin.P2,
    PingUnit.Centimeters
    )
    if (item <= 30) {
        pins.digitalWritePin(DigitalPin.P8, 0)
        pins.digitalWritePin(DigitalPin.P12, 0)
        pins.digitalWritePin(DigitalPin.P13, 0)
        pins.digitalWritePin(DigitalPin.P14, 0)
    }
})

Credits

정영천
2 projects • 1 follower
Alex Kim
2 projects • 0 followers
김병련
2 projects • 1 follower
임헌준
2 projects • 0 followers
대한민국 기술 교사

Comments