led = PWM.new(16)
led.frequency( 440 )
while true
  led1.duty(80)
  sleep 1
  led1.duty(40)
  sleep 1
  led1.duty(20)
  sleep 1
end
      

http://wiki.seeedstudio.com/Grove-Buzzer/

buzzer = PWM.new(15)
while true
  buzzer.frequency(261)
  sleep 1
  buzzer.frequency(294)
  sleep 1
  buzzer.frequency(330)
  sleep 1
  buzzer.frequency(349)
  sleep 1
  buzzer.frequency(392)
  sleep 1
  buzzer.frequency(440)
  sleep 1
  buzzer.frequency(494)
  sleep 1
end
			

簡易mml再生


TBL_FREQ = [262, 294, 330, 349, 392, 440, 494,
523, 587, 659, 698, 784, 880, 988]
TBL_LENGTH = {1=>2000, 2=>1000, 4=>500, 8=>250}

PWM.new()
buzzer = PWM.new(15)

def tone( freq )
  if freq == 0
    buzzer.frequency(0)
    return
  end

  buzzer.frequency(freq)
end


def play( mml )
  mnote = nil
  mlength = 4
  octabe = 0

  mml.each_char {|ch|
    # 音階指示か?
    if "CDEFGABR".index(ch)
      play_sub( mnote, octabe, mlength )
      mnote = ch
      next
    end

    # 音長か?
    if TBL_LENGTH[ch.to_i]
      mlength = ch.to_i
      next
    end

    # オクターブ上下か?
    if ch == "<" || ch == ">"
      play_sub( mnote, octabe, mlength )
      if ch == "<"
        octabe += 1
      else
        octabe -= 1
      end
      mnote = nil
      next
    end
  }
  play_sub( mnote, octabe, mlength )
end


def play_sub( mnote, octabe, mlength )
  if !mnote
    return
  end
  if mnote == "R"
    sleep_ms( TBL_LENGTH[mlength] || 1 )
    return
  end

  idx = "CDEFGAB".index(mnote)
  if idx
    idx = octabe * 7 + idx
    if TBL_FREQ[idx]
      tone( TBL_FREQ[idx] )
      #display( idx )
      sleep_ms( TBL_LENGTH[mlength] || 1 )
      tone( 0 )
    end
    return
  end
end

mml3 = "<C8DE4>C8DE4<C8DE4>C8DE4<C8DE4>C8DE4<E8FG4EDC A8AAFDDEFGGGEC4R8 EF4>A<C8>BAB<C2"

play mml3
      

SG90(サーボモータ)

http://akizukidenshi.com/catalog/g/gM-08761/

servo = PWM.new(15)
servo.frequency(50)
while true
  servo.duty(2.5)
  sleep 1
  servo.duty(7.25)
  sleep 1
  servo.duty(12)
  sleep 1
end