Created
August 18, 2017 07:37
-
-
Save izawa/049fee08173206aec582fba575fd79d5 to your computer and use it in GitHub Desktop.
Splatoon2 picture drawing application (requires raspberrypi + UFB)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
require 'rmagick' | |
require 'optparse' | |
require 'pi_piper' | |
include PiPiper | |
class Gpio | |
DELAY = 0.04 | |
DOT_PIN = 12 | |
RIGHT_PIN = 16 | |
LEFT_PIN = 20 | |
DOWN_PIN = 21 | |
def initialize | |
@dot = Pin.new pin: DOT_PIN, direction: :out | |
@dot.on | |
@right = Pin.new pin: RIGHT_PIN, direction: :out | |
@right.on | |
@left = Pin.new pin: LEFT_PIN, direction: :out | |
@left.on | |
@down = Pin.new pin: DOWN_PIN, direction: :out | |
@down.on | |
end | |
def DOT | |
@dot.off | |
sleep DELAY | |
@dot.on | |
sleep DELAY | |
end | |
def RIGHT | |
@right.off | |
sleep DELAY | |
@right.on | |
sleep DELAY | |
end | |
def LEFT | |
@left.off | |
sleep DELAY | |
@left.on | |
sleep DELAY | |
end | |
def DOWN | |
@down.off | |
sleep DELAY | |
@down.on | |
sleep DELAY | |
end | |
end | |
# parsing options | |
params = ARGV.getopts('f:') | |
unless params['f'] | |
puts '-f required.' | |
exit 1 | |
end | |
filename = params['f'] | |
unless FileTest.readable?(filename) | |
puts "Error reading file #{filename}" | |
exit 1 | |
end | |
gpio = Gpio.new | |
include Magick | |
img = Magick::ImageList.new(filename) | |
(0..img.rows - 1).each do |row| | |
# 偶数行なら正順で。カーソルも正順で | |
if row.even? | |
(0..img.columns - 1).each do |col| | |
gpio.DOT if img.pixel_color(col, row).red.zero? | |
gpio.RIGHT if col != img.columns - 1 | |
end | |
else # 奇数行なら逆順で。カーソルも逆順で | |
(0..img.columns - 1).reverse_each do |col| | |
gpio.DOT if img.pixel_color(col, row).red.zero? | |
gpio.LEFT if col != 0 | |
end | |
end | |
gpio.DOWN | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment