5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi Picoでマリオの1UP

Last updated at Posted at 2021-02-11

Raspberry Pi Picoの入出力ポートのまとめとして、スイッチ入力で、 マリオの1UP(ピコピコ音)と動き(サーボ動作)をつけました。

## 主要パーツ - Raspberry Pi Pico - サーボモータ - スイッチ - 圧電スピーカー - ブレッドボード

接続図

Mario.jpg

ソースコード

import utime
from machine import Pin, PWM

B0  = 31
C1  = 33
CS1 = 35
D1  = 37
DS1 = 39
E1  = 41
F1  = 44
FS1 = 46
G1  = 49
GS1 = 52
A1  = 55
AS1 = 58
B1  = 62
C2  = 65
CS2 = 69
D2  = 73
DS2 = 78
E2  = 82
F2  = 87
FS2 = 93
G2  = 98
GS2 = 104
A2  = 110
AS2 = 117
B2  = 123
C3  = 131
CS3 = 139
D3  = 147
DS3 = 156
E3  = 165
F3  = 175
FS3 = 185
G3  = 196
GS3 = 208
A3  = 220
AS3 = 233
B3  = 247
C4  = 262
CS4 = 277
D4  = 294
DS4 = 311
E4  = 330
F4  = 349
FS4 = 370
G4  = 392
GS4 = 415
A4  = 440
AS4 = 466
B4  = 494
C5  = 523
CS5 = 554
D5  = 587
DS5 = 622
E5  = 659
F5  = 698
FS5 = 740
G5  = 784
GS5 = 831
A5  = 880
AS5 = 932
B5  = 988
C6  = 1047
CS6 = 1109
D6  = 1175
DS6 = 1245
E6  = 1319
F6  = 1397
FS6 = 1480
G6  = 1568
GS6 = 1661
A6  = 1760
AS6 = 1865
B6  = 1976
C7  = 2093
CS7 = 2217
D7  = 2349
DS7 = 2489
E7  = 2637
F7  = 2794
FS7 = 2960
G7  = 3136
GS7 = 3322
A7  = 3520
AS7 = 3729
B7  = 3951
C8  = 4186
CS8 = 4435
D8  = 4699
DS8 = 4978

def oneup():
    global sound
    effect = [E5, G5, F6, C6, D6, G6, 0]
    for i in range(len(effect)):
        if int(effect[i]) == 0:
            sound.duty_u16(0)
        else:
            sound.freq(int(effect[i]))
            sound.duty_u16(0x8000)
            
        utime.sleep_ms(150)
    
def jump():
    servo.freq(50)
    servo.duty_u16(1500)
    utime.sleep(0.2)
    servo.duty_u16(3000)
    utime.sleep(0.1)
    oneup()

def mario():
    global sound
    melody = [E7, E7, 0, E7, 0, C7, E7, 0, G7, 0, 0, 0, G6, 0, 0, 0, C7, 0, 0, G6, 0, 0, E6, 0, 0, A6, 0, B6, 0, AS6, A6, 0, G6, E7, 0, G7, A7, 0, F7, G7, 0, E7, 0,C7, D7, B6, 0, 0, C7, 0, 0, G6, 0, 0, E6, 0, 0, A6, 0, B6, 0, AS6, A6, 0, G6, E7, 0, G7, A7, 0, F7, G7, 0, E7, 0,C7, D7, B6, 0, 0, 0, 0]

    while True:
        for i in range(len(melody)):
            if melody[i] == 0:
                sound.duty_u16(0)
            else:
                sound.freq(melody[i])
                sound.duty_u16(0x8000)
            
            utime.sleep_ms(150)

def button_handler(pin):
    jump()
    
sound = PWM(Pin(13, Pin.OUT))
servo = PWM(Pin(28))

button = Pin(16, Pin.IN, Pin.PULL_DOWN)
button.irq(trigger=Pin.IRQ_RISING, handler=button_handler)

Mario()

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?