Sha256: c408b31d6566d82c8eab4808ca66ac3d03c1d126cc4e2f5723ee5d5ccfa19e00

Contents?: true

Size: 1.39 KB

Versions: 16

Compression:

Stored size: 1.39 KB

Contents

# -*- coding: utf-8 -*-
require 'smalruby/hardware'

module Smalruby
  module Hardware
    # 2WD車のモーターを表現するクラス
    class TwoWheelDriveCar < Dino::Components::BaseComponent
      def initialize(options)
        pin = Pin.smalruby_to_dino(options[:pin])
        case pin
        when 2..10
          super(board: world.board, pin: (pin...(pin + 4)).to_a)
        else
          fail "モーターのピン番号が間違っています: {options[:pin]}"
        end
      end

      # 前進する
      def forward
        digital_write_pins(true, false, true, false)
      end

      # 後退する
      def backward
        digital_write_pins(false, true, false, true)
      end

      # 左に曲がる
      def turn_left
        digital_write_pins(false, true, true, false)
      end

      # 右に曲がる
      def turn_right
        digital_write_pins(true, false, false, true)
      end

      # 停止する
      def stop
        digital_write_pins(false, false, false, false)
      end

      private

      def after_initialize(_ = {})
        pins.each do |pin|
          set_pin_mode(pin, :out)
        end
        stop
      end

      def digital_write_pins(*level_flags)
        level_flags.each.with_index do |level_flag, i|
          level = level_flag ? Dino::Board::HIGH : Dino::Board::LOW
          digital_write(pins[i], level)
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
smalruby-0.0.24-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.24 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.23-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.23 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.22-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.22 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.21-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.21 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.20-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.20 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.19-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.19 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.18-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.18 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.17-x86-mingw32 lib/smalruby/hardware/two_wheel_drive_car.rb
smalruby-0.0.17 lib/smalruby/hardware/two_wheel_drive_car.rb