忍者ブログ
[28]  [29]  [30]  [31]  [32]  [33]  [34]  [35]  [36]  [37]  [38
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

課題:LEDをスイッチでON、OFF

配線 GND--LED--500オーム--11ピン
   GND--スイッチ--12ピン (通常は1k程度の抵抗を念の為にいれるが
   ラズパイのGPIOは、内部でプルアップとプルダウン抵抗を持っている)

仕様:押している間点灯 離せば消える

#ライブラリの読み出し
import PRi.GPIO as GPIO 
import time

#GPIOのピンでのアサイン
LedPin = 11
BtnPin = 12 

#初期設定 11を出力 12を入力
def setup():
  GPIO.setmode(GPIO.BOARD)
  GPIO.setup(LedPin, GPIO.OUT)
  GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.output(LedPin, GOIP.HIGH)  #点灯

プルアップ回路
  VCC--抵抗--|----_--GND
        ピン  スイッチ  押すとLOW 離すとHIGH

プルダウン回路
 VCC--_---|--抵抗--GND
    スイッチ ピン       押すとHIGHT 離すとLOW

今回の設定は   pull_up_down=GPIO.PUD_UPだから押すとLOWで離すとHIGH
#処理
def loop():  
  while True:
    if GPIO.input(BtnPin) == GPIO.LOW: #押した
      time.sleep(0.1)  #チャタリング防止
      GPIO.output(Ledpin,GPIO.LOW)   #消す
    else:
      time.sleep(0.1)  #チャタリング防止
      GPIO.output(Ledpin,GPIO.HIGH)  #つける
       
def destroy():
  GPIO.output(Ledpin,GPIO.LOW)   #消す
  GPIO.cleanup()

#実際のスタートは
if __name__ ==  '__main__':
  setup()
  try:
    loop()
  excepy KeyboardInterrupt:  #CTRL+C
    destroy()

これでOK


 


拍手

PR
目的:
同じフォーム名で複数フォームを表示し核フォームを管理、削除したい


画面:
Fom1 親元
Form2 複数フォーム
方法:カウンターをフォームのタグにセットする

Dim m_fcnt As Long = 0

ボタンを押す都度
m_fcnt = m_fcnt + 1  カウンターをアップ
Dim f2 As New Form2 インスタンスを作成
f2.Tag = m_fcnt    カウンターをタグにセット
f2.Show()       表示


管理と削除
For Each frm As Form In New ArrayList(Application.OpenForms)
 if frm IsNot Me Then
      If frm.Text = "Form2" Then      フォーム名
             ListBox1.Items.Add(frm.Tag) タグ
       End If
        ' frm.Close()           クローズ
   end  if
Next

for nextとカウントならクローズした時点で配列が-1されるので注意


拍手

先のエルチカをちょっとプロらしく再コーディング

-----------------------------------------------------------------------

import PRi.GPIO as GPIO
import time

Redpin = 11  #ピン番号
GPIO.setmode(GPIO.BOARD)  #ピン番号でアサイン GPIO番号でない
GPIO.setup(Redpin, GPIO.OUT)
GPIO.output(Redpin, GPIO.HIGH)

try:
  while True:
      GPIO.output(Redpin, GPIO.LOW)
      time.sleep(1)
      GPIO.output(Redpin, GPIO.HIGH)
      time.sleep(1)
except KeyboardInterrupt:
  GPIO.output(Redpin,GPIO.LOW)
  GPIO.cleanup()

-----------------------------------------------------------------
コントロールCで消灯後GPIOをクリア


もう一段階プロらしく

import PRi.GPIO as GPIO
import time

Redpin = 11  #ピン番号

def setup():  #初期設定
  GPIO.setmode(GPIO.BOARD)  #ピン番号でアサイン GPIO番号でない
  GPIO.setup(Redpin, GPIO.OUT)
  GPIO.output(Redpin, GPIO.HIGH)

def loop(): #繰り返し
  while True:
      GPIO.output(Redpin, GPIO.LOW)
      time.sleep(1)
      GPIO.output(Redpin, GPIO.HIGH)
      time.sleep(1)

def destroy() #キーボードからの割り込み
  GPIO.output(Redpin,GPIO.LOW)
  GPIO.cleanup()

#ここからスタート
if __name__=='__main__':
  setup()
  try:
    loop()
  except KeyboardInterrupt:
   destroy()




拍手

3.3V -----

 |- スイッチ
|--- GPIO 9
抵抗 

GNO

1.スイッチが押されたかどうか確認
2.スイッチが押されれば 3.3VとGNOに電流がながれGPIOが3.3Vで1
3.スイッチがOFFにならGPIOはGNO電圧だから0

4.プログラムは
import PRi.GPIO as GPIO
import time

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO.IN)

count = 0
while True:
 if ( GPIO.input(9)==1):
  time.sleep(0.1)  <--チャタリング待ち
   count = count + 1
  print ("Count:" + str(count))
  while ( GPIO.input(9) == 1):   <--SWが離れるまでまちます
    time.sleep(0.1)

拍手


-------抵抗----LED------

1.抵抗値の求め方
 3.3Vの電源でLEDの電圧2vだから 3.3V-2V = 1.3V

2.GPIOの最大電流が16mAだから10mA程度を流すとすると
 抵抗 = 電圧 (1.3) / 電流 (0.01)
     =130オーム
今回は手元にあった1kオームだから 電流=1.3/ 1000で
 0.0013=1.3mA程度 暗いぞ、、、

3.GPIOを4選択 7番ピン
4.足の短い方が停電圧つまりグランド

プログラム
Menu>>アクセサリ>>TextEditer

import PRi.GPIO as GPIO
import time

GPIO.cleanup()

GPIO.setmode(GPIO.BCM)  <--Broadcomのチップ準拠 
  (ボードの端子番号を使うなら GPIO.BOARD)

GPIO.setup(4,GPIO.OUT)      <--GPIO4(7番)を出力に設定

while True:
 GPIO.output(4,GPIO.HIGH) <--HIGHに
   time.sleep(1)       1秒待ち  

 GPIO.output(4,GPIP.LOW)
 time.sleep(1)

led_bkink.py でpiディクトリに保存

phyton led_blink.pyで実行CRTL+Cで中止



拍手

カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新CM
[03/10 DORA]
最新TB
プロフィール
HN:
dorabu
性別:
非公開
バーコード
ブログ内検索
P R
Copyright © ドラブーのアンドロイドとIoTなブログ All rights reserved. / Template by 四季. / Material by てんせん.

忍者ブログ [PR]