質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

818閲覧

webIOPiでLチカ(タイマー機能をつけたい)

morita05041984

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/23 03:06

編集2021/05/23 03:17

WebIOPiでIoT!(2)プログラミング基礎編〜Lチカボタンを作ろう

こちらの記事の内容は完璧に再現することができました。

この内容に加えて、ボタンを押してLEDが点灯後30分後に自動停止するような、タイマー機能を付けたしたい場合の、追記プログラムをご教授頂けないでしょうか。

何卒宜しくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あれから自分なりに勉強して、タイマー機能付きLチカをWebIOPiでおこなうことができました。

以下がコードになります。

index.html

1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>WebIOPi | Light Control</title> 6 <script type="text/javascript" src="/webiopi.js"></script> 7 <script type="text/javascript"> 8 webiopi().ready(function() { 9 // Following function will process data received from set/getLightHours macro. 10 var updateLightHours = function(macro, args, response) { 11 var hours = response.split(";"); 12 // Following lines use jQuery functions 13 $("#inputOn").val(hours[0]); 14 $("#inputOff").val(hours[1]); 15 } 16 17 // Immediately call getLightHours macro to update the UI with current values 18 // "getLightHours" refers to macro name 19 // [] is an empty array, because getLightHours macro does not take any argument 20 // updateLightHours is the callback function, defined above 21 webiopi().callMacro("getLightHours", [], updateLightHours); 22 23 // Create a button to call setLightHours macro 24 var sendButton = webiopi().createButton("sendButton", "Send", function() { 25 // Arguments sent to the macro 26 var hours = [$("#inputOn").val(), $("#inputOff").val()]; 27 // Call the macro 28 webiopi().callMacro("setLightHours", hours, updateLightHours); 29 }); 30 31 // Append the button to the controls box using a jQuery function 32 $("#controls").append(sendButton); 33 34 // Create a "Light" labeled button for GPIO 17 35 var button = webiopi().createGPIOButton(17, "Light"); 36 37 // Append the button to the controls box 38 $("#controls").append(button); 39 40 // Refresh GPIO buttons 41 // pass true to refresh repeatedly of false to refresh once 42 webiopi().refreshGPIO(true); 43 44 }); 45 </script> 46 47<style type="text/css"> 48 button { 49 display: block; 50 margin: 5px 5px 5px 5px; 51 width: 160px; 52 height: 45px; 53 font-size: 24pt; 54 font-weight: bold; 55 color: white; 56 } 57 58 #gpio17.LOW { 59 background-color: Black; 60 } 61 62 #gpio17.HIGH { 63 background-color: Blue; 64 } 65 </style> 66 67</head> 68<body> 69 70<div align="center"> 71稼働時間を入力してください<input type="text" id="inputOn" /> 72 73 74<div id="controls"></div> 75 76</div> 77 78</body> 79</html> 80

script.py

1import webiopi 2import RPi.GPIO as GPIO 3import time 4 5 6 7 8 9GPIO = webiopi.GPIO 10 11LIGHT = 17 # GPIO pin using BCM numbering 12 13HOUR_ON = 0 # Turn Light ON at 08:00 14HOUR_OFF = 0 # Turn Light OFF at 18:00 15 16# setup function is automatically called at WebIOPi startup 17def setup(): 18 # set the GPIO used by the light to output 19 GPIO.setFunction(LIGHT, GPIO.OUT) 20 21 22 23# loop function is repeatedly called by WebIOPi 24def loop(): 25 # retrieve current datetime 26 for i in range(1): 27 GPIO.output(LIGHT, GPIO.HIGH) # LED on 28 time.sleep(0) 29 GPIO.output(LIGHT, GPIO.LOW) # LED off 30 time.sleep(HOUR_ON + 10) 31 32 33 34 35# destroy function is called at WebIOPi shutdown 36def destroy(): 37 GPIO.digitalWrite(LIGHT, GPIO.LOW) 38 39@webiopi.macro 40def getLightHours(): 41 return "%d;%d" % (HOUR_ON, HOUR_OFF) 42 43@webiopi.macro 44def setLightHours(on, off): 45 global HOUR_ON, HOUR_OFF 46 HOUR_ON = int(on) 47 HOUR_OFF = int(off) 48 return getLightHours() 49

現在の問題点は設定した時間が大幅にずれてしまってます。
2分設定しても1分ちょっとできれてしまったりです。

time.sleepやsleepもやりましたが、精度があまりにも悪いです。

そこでなにかいい方法はございませんでしょうか。

投稿2021/12/30 07:13

morita05041984

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ざんねんながら、コード作成依頼は受け付けていません。
まずは自分なりにコードを組み、うまくいかない所があればそれについてお尋ねください

投稿2021/05/23 05:04

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問