###### tags:`ものものテック`
# 置き菓子
## 概要
センサーを利用し、扉の開け閉め等を検知するガジェットの作成。
成果物↓↓↓
{%youtube ttEtxku4cRw %}
## 仕様
- フルスクリーンで表示
- Qキーで終了
- ドアを閉めたときCloseを表示
- ドアを開けたときOpenを表示
- ドアを閉めたとき「ありがとうございました」
- ドアを開けたとき「いらっしゃいませ」
## コード
``` pyhon
import pygame
import RPi.GPIO as GPIO
import time
try:
pygame.init()
#### Set GPIO ####
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#### Set Display Size ####
w = pygame.display.Info().current_w
h = pygame.display.Info().current_h
#### Set Backgroud ####
screen = pygame.display.set_mode((w, h), pygame.FULLSCREEN)
backGroud = pygame.image.load("macalon.jpg");
backGroud = pygame.transform.scale(backGroud, (w, h))
#### Set Sound ####
soundA = pygame.mixer.Sound("arigatougozaimashita.wav")
soundB = pygame.mixer.Sound("irasshaimase.wav")
status = GPIO.input(18)
isExecution = True
pygame.mouse.set_visible(False)
while isExecution:
value = GPIO.input(18)
~~~
#### Set font ####
font = pygame.font.Font(None, 220)
text = font.render(text_string, True, (255, 255, 255))
text_w, text_h = font.size(text_string)
test_x = int(w / 2 - text_w / 2)
test_y = int(h / 2 - text_h / 2)
screen.blit(backGroud, (0, 0))
screen.blit(text, (test_x, test_y))
pygame.display.update()
time.sleep(0.03)
except Exception as e:
print(e)
```
一部省略しています。
## 最終課題の感想
最終課題は、センサーを冷蔵庫につけた。
初めのうちは、センサーを冷蔵庫の上にのせるだけだったが、そのままだと落ちてしまうのでセロハンテープでくっつけた。
実際に使用する場合は、センサーの取り付けにも工夫が必要だ。
センサーを取り付けることを考えると多くのことに応用できる。
例えば、小さな子供が勝手に部屋を出るときにこのセンサーを取り付けておけば、音声が教えてくれる。
また、動画だとラズパイ本体が見えないがスピーカーの後ろに配置してある。
これは、スピカーの音量が小さいので少しでも音が広がりやすくする工夫だ。
ディスプレイを置けるスペースがなかったので、今回はVNCを利用した。
## 全体的なの感想
pythonを触るのが初めてだったので、入りは少しとまどった。
プログラミングよりも、電気関係の知識が薄く序盤のチャプターを理解するのが少し時間がかかった。
自分なりにプルアップ/プルダウン処理は、理解したつもりだが100点とは言い難い。
プルアップ/プルダウン処理・ピン・チャタリング・電気など、ハード側の知識に不安を覚える。