주사위 만들기 (Elixir, Nerves)
소개
Elixir 에서 IoT를 할 수 있습니다
전제 기사
@MzRyuKa 님의 Hatena 블로그에 게시했습니다. RaspberryPi의 핀 역할을 확인하는 데 편리한 사이트 "http://pinout.xyz" - 미즈류의 자유장 블로그
소스 코드
소스 코드 발췌
lib/hello_nerves/led/seven_seg.ex
defmodule HelloNerves.Led.SevenSeg do
@a_led_pin Application.get_env(:hello_nerves, :a_led_pin, 26)
@b_led_pin Application.get_env(:hello_nerves, :b_led_pin, 6)
@c_led_pin Application.get_env(:hello_nerves, :c_led_pin, 5)
@d_led_pin Application.get_env(:hello_nerves, :d_led_pin, 16)
@e_led_pin Application.get_env(:hello_nerves, :e_led_pin, 23)
@f_led_pin Application.get_env(:hello_nerves, :f_led_pin, 25)
@g_led_pin Application.get_env(:hello_nerves, :g_led_pin, 22)
alias Circuits.GPIO
require Logger
def clear do
[@a_led_pin, @b_led_pin, @c_led_pin, @d_led_pin, @e_led_pin, @f_led_pin, @g_led_pin]
|> Enum.map(&gpio(&1))
|> Enum.map(&turn_off(&1))
end
def show do
fun = random_fun()
1..3
|> Enum.each(fn _ ->
fun.()
Process.sleep(50)
clear()
Process.sleep(25)
end)
fun.()
end
def random do
fun = random_fun()
fun.()
end
def random_forever do
random()
50..75
|> Enum.random()
|> Process.sleep()
random_forever()
end
def one do
clear()
[@b_led_pin, @c_led_pin] |> flush()
end
def two do
clear()
[@a_led_pin, @b_led_pin, @g_led_pin, @e_led_pin, @d_led_pin] |> flush()
end
def three do
clear()
[@a_led_pin, @b_led_pin, @g_led_pin, @c_led_pin, @d_led_pin] |> flush()
end
def four do
clear()
[@f_led_pin, @g_led_pin, @b_led_pin, @c_led_pin] |> flush()
end
def five do
clear()
[@f_led_pin, @g_led_pin, @c_led_pin, @d_led_pin, @a_led_pin] |> flush()
end
def six do
clear()
[@f_led_pin, @e_led_pin, @d_led_pin, @c_led_pin, @g_led_pin] |> flush()
end
defp flush(pins) do
pins
|> Enum.map(&gpio(&1))
|> Enum.map(&turn_on(&1))
end
defp turn_on(gpio) do
GPIO.write(gpio, 1)
end
defp turn_off(gpio) do
GPIO.write(gpio, 0)
end
defp gpio(pin) do
{:ok, output_gpio} = GPIO.open(pin, :output)
output_gpio
end
defp random_fun do
[&one/0, &two/0, &three/0, &four/0, &five/0, &six/0]
|> Enum.random()
end
end
defp random_fun do
[&one/0, &two/0, &three/0, &four/0, &five/0, &six/0]
|> Enum.random()
end
Reference
이 문제에 관하여(주사위 만들기 (Elixir, Nerves)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/5577f7c79c0723f514d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)