Python
1①.pyの中身です。 2import time 3 4GPIO = webiopi.GPIO 5 6POW_PIN = 26 7STRONG_PIN = 13 8MODE_PIN = 19 9WEAK_PIN = 6 10 11COMMAND = "reset" 12 13def setup(): 14 GPIO.setFunction( POW_PIN, GPIO.OUT ) 15 GPIO.setFunction( STRONG_PIN, GPIO.OUT ) 16 GPIO.setFunction( MODE_PIN, GPIO.OUT ) 17 GPIO.setFunction( WEAK_PIN, GPIO.OUT ) 18 19 GPIO.digitalWrite( POW_PIN, GPIO.LOW ) 20 GPIO.digitalWrite( STRONG_PIN, GPIO.LOW ) 21 GPIO.digitalWrite( MODE_PIN, GPIO.LOW ) 22 GPIO.digitalWrite( WEAK_PIN, GPIO.LOW ) 23 24def loop(): 25 if ( COMMAND == "POW" ): 26 GPIO.digitalWrite( POW_PIN, GPIO.LOW ) 27 sleep(1) 28 GPIO.digitalWrite( POW_PIN, GPIO.HIGH ) 29 elif ( COMMAND == "STRONG" ): 30 GPIO.digitalWrite( STRONG_PIN, GPIO.LOW ) 31 sleep(1) 32 GPIO.digitalWrite( LEFT_PIN, GPIO.HIGH ) 33 elif ( COMMAND == "MODE" ): 34 GPIO.digitalWrite( MODE_PIN, GPIO.LOW ) 35 sleep(1) 36 GPIO.digitalWrite( MODE_PIN, GPIO.HIGH ) 37 elif ( COMMAND == "reset" ): 38 GPIO.digitalWrite( POW_PIN, GPIO.HIGH ) 39 GPIO.digitalWrite( STRONG_PIN, GPIO.HIGH ) 40 GPIO.digitalWrite( WEAK_PIN, GPIO.HIGH ) 41 GPIO.digitalWrite( MODE_PIN, GPIO.HIGH ) 42 sleep(1) 43 44def destroy(): 45 GPIO.digitalWrite( POW_PIN, GPIO.HIGH ) 46 GPIO.digitalWrite( STRONG_PIN, GPIO.HIGH ) 47 GPIO.digitalWrite( WEAK_PIN, GPIO.HIGH ) 48 GPIO.digitalWrite( MODE_PIN, GPIO.HIGH ) 49 50@webiopi.macro 51def command( com ): 52 global COMMAND 53 if ( com == "1" ): 54 COMMAND = "pow" 55 elif ( com == "2" ): 56 COMMAND = "strong" 57 elif ( com == "3" ): 58 COMMAND = "weak" 59 elif ( com == "0" ): 60 COMMAND = "mode" 61 62②HTMLです 63<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 64<html> 65<head> 66 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 67 <title>Tank Remote Controller</title> 68 <script type="text/javascript" src="/webiopi.js"></script> 69 <script type="text/javascript"> 70 webiopi().ready(function() { 71 webiopi().callMacro( "command", 5 ); 72 }); 73 74 function pushBotton( com ) { 75 webiopi().callMacro( "command", com ); 76 } 77 78 79 80 </script> 81</head> 82<body> 83<h1>コントローラー</h1> 84<table> 85<tr> 86 <td> </td> 87 <td><input type="button" name="pow" value="電 源" style="font-size:3em;" onclick="pushBotton(1)"></td> 88 <td> </td> 89</tr> 90<tr> 91 <td><input type="button" name="reset" value="リセット" style="font-size:3em;" onclick="pushBotton(6)"></td> 92 <td><input type="button" name="storong" value=" 強 " style="font-size:3em;" onclick="pushBotton(3)"></td> 93 <td><input type="button" name="weak" value=" 弱 " style="font-size:3em;" onclick="pushBotton(2)"></td> 94 <td><input type="button" name="mode" value="モード" style="font-size:3em;" onclick="pushBotton(0)"></td> 95</tr> 96</table> 97 98</body> 99</html> 100 101 102```ラズパイ+PYTHONでWebからの入力でリレーモジュールを稼働させています。 103Webからボタン入力はできるのですが一度LOWにしたらすぐにHIGHにしたいので 104下記のようにしたのですが3秒ごとにLOW、HIGHが切り替わるまでは良いのですが 1053秒ごとにループしてしまいます。ループが止まるようにしたいのですが、どのようにすればよいのか 106わからず困っています。 107BREAK文とか入れてみたのですが動作せず困っています。 108動きとして 109POW、STRONG、MODE、WEAKの4つは一度LOWになってHIGHに変わればOKです 110 111実現したいことは以下になります。 112①ループを止めたい 113②同じボタンが押すことができないので一度リセットボタンを設けているのを 114同じボタンが押せるようにしたい。 115初心者ですがよろしくお願いいたします。 116 117### 該当のソースコード 118python``` 119コード 120def loop(): 121 if ( COMMAND == "POW" ): 122 GPIO.digitalWrite( POW_PIN, GPIO.LOW ) 123 sleep(1) 124 GPIO.digitalWrite( POW_PIN, GPIO.HIGH ) 125 break
上記のBreakの書き方だとWeb画面がエラーで表示されなくなります。
試したこと
Breakやif GPIO.digitalreadなど、初心者なので書き方がおかしいのかもしれません。
コードは「コードの挿入」で記入してください。
ソースコードにインデントがありません。
「編集」ボタンを押して、ソースコードの挿入のやり方に従って「```ここに言語名を入力」と
「``````」の間にコードを記入しなおしてください。
>「Webからボタン入力はできるのですが」
>「②同じボタンが押すことができないので一度リセットボタンを設けているのを同じボタンが押せるようにしたい。」
それも含めて質問するのならばhtmlのコードも全部記載してください。
HTMLを追加しましたが、この追加方法でよろしかったのでしょうか。
いろいろありがとうございます。
質問のプログラムには、Breakが使われていません。それが、ループが止まらない原因です(止まる(Break)が無いので、止まらない)。
どのような条件になった時にループを止めたいのかが判らないので、具体的なプログラムを示すことができませんが、ループを止めたい条件が成立した時にBreakが実行されるように書けば良いです。