Elixir Circuits를 사용하여 LED 작동
15164 단어 RaspberryPiledgpioElixirCircuits
소개
이 기사는 Elixir Advent Calendar 2019의 13 일째입니다.
어제는 @ 쓰요시 84 씨의 iex를 편리하게 해킹 모음 이었습니다.
설마 최초의 Qiita 투고가 Elixir가 된다고는. 느낌으로 쓰고 있습니다.
참고
Elixir 입문 연재 시작 (Elixir 입문 모쿠지)
Elixir Circuits · GitHub
RaspberryPi에서 배우는 전자 공작3장 전자공작의 예비지식 및 Raspberry Pi에 의한 LED의 점등
환경
Elixir 입문 연재 시작 (Elixir 입문 모쿠지)
Elixir Circuits · GitHub
RaspberryPi에서 배우는 전자 공작3장 전자공작의 예비지식 및 Raspberry Pi에 의한 LED의 점등
환경
환경 구축
RaspberryPi, Elixir의 환경 구축은 다음 기사에서 배치
@ Nishizu Kazuma 님의 Elixir에서 라즈파이 LED를 치카 ~ RaspbianOS 설치에서 ~
하고 싶은 일
RaspberryPi에서 배우는 전자 공작 을 참고로 Python 코드를 Elixir로 바꿉니다.
목차
시험 : 시스템 명령으로 기본 LED를 조작합니다.
우선 기반 LED를 사용해보십시오. Elixir의 설명을 확인하십시오.
System.cmd에서 명령 실행
% iex
defmodule LedSystemCmd do
def heartbeat do
System.cmd("sudo",["su","-c","echo heartbeat > /sys/class/leds/led0/trigger"])
end
def none do
System.cmd("sudo",["su","-c","echo none > /sys/class/leds/led0/trigger"])
end
def manual(x) do
System.cmd("sudo",["su","-c","echo #{x} > /sys/class/leds/led0/trigger"])
end
end
# ledを消す
LedSystemCmdTest.none
# ledを点滅
LedSystemCmdTest.heartbeat
# ledを指定の方法で操作
LedSystemCmdTest.manual("none")
주제: Elixir Circuits를 사용하여 LED를 조작합니다.
준비하는 것
% iex
defmodule LedSystemCmd do
def heartbeat do
System.cmd("sudo",["su","-c","echo heartbeat > /sys/class/leds/led0/trigger"])
end
def none do
System.cmd("sudo",["su","-c","echo none > /sys/class/leds/led0/trigger"])
end
def manual(x) do
System.cmd("sudo",["su","-c","echo #{x} > /sys/class/leds/led0/trigger"])
end
end
# ledを消す
LedSystemCmdTest.none
# ledを点滅
LedSystemCmdTest.heartbeat
# ledを指定の方法で操作
LedSystemCmdTest.manual("none")
준비하는 것
배선도·회로도
※ 배선은 RaspberryPi의 전원을 떨어뜨린 상태에서 실시한다.
※ 저항을 잊지 않는다. (잊으면 굽습니다. 구웠습니다.)
※ 전원 투입 전에 배선을 확인.
Elixir Circuits 소개
1.mix new로 적당한 프로젝트 만들기
(이하 프로젝트 디렉토리라고 합니다.)
# led_circuits_001ディレクトリが作成されます。
% mix new led_circuits_001
* creating README.md
* creating .formatter.exs
* creating .gitignore
* creating mix.exs
* creating lib
* creating lib/led_circuits001.ex
* creating test
* creating test/test_helper.exs
* creating test/led_circuits001_test.exs
Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:
cd led_circuits_001
mix test
Run "mix help" for more commands.
2.mix deps.get에서 circuits_gpio 도입
설명은 여기를 참조하십시오 circuits_gpio
mix.exs
defmodule LedCircuits001.MixProject do
use Mix.Project
def project do
[
app: :led_circuits_001,
version: "0.1.0",
elixir: "~> 1.9",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
# この行を追記
{:circuits_gpio, "~> 0.4"}
]
end
end
# mix deps.get の実行
% mix deps.get
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
circuits_gpio 0.4.3
elixir_make 0.6.0
* Getting circuits_gpio (Hex package)
* Getting elixir_make (Hex package)
Elixir로 코딩
※실제는 처리 종료시에 gpio를 초기화해야 합니다만 이번은 하고 있지 않습니다.
led_circuits001.ex
defmodule LedCircuits001 do
def ltika(sleep_msec) do
{:ok, gpio} = Circuits.GPIO.open(25, :output)
loop(gpio, sleep_msec)
end
defp loop(gpio, sleep_msec) do
Circuits.GPIO.write(gpio, 1)
:timer.sleep(sleep_msec)
Circuits.GPIO.write(gpio, 0)
:timer.sleep(sleep_msec)
loop(gpio, sleep_msec)
end
end
# プロジェクトディレクトリで実行
% iex -S mix
# 関数実行
iex(1)> LedCircuits001.ltika(500)
요약
내일 Elixir Advent Calendar 2019 14일째 기사는 ㅎㅎ 씨의 Phoenix 프로젝트를 mix release로 패키징하고 docker 컨테이너에서 실행 입니다. 이쪽도 기대하세요!
Reference
이 문제에 관하여(Elixir Circuits를 사용하여 LED 작동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/32hero/items/d71cd74713d4d975600e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)