IOT入門 その4 SWでLED

3.3v −−− 10kΩ −−− sw −−− gpio24
・タクトスイッチの状態を判断
10KΩの代わりに
pi.set_pull_up_down(PIN24, pigpio.PUD_DOWN)でもOK
ただしうっかりミスを防ぐ意味で抵抗があるほうがベター
スイッチを押している間 1 離せば0
ただしswを離したときにgrandでなくオープン状態

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pigpio
import time

pi=pigpio.pi()
Pin24=24                     

def setup():
  pi.set_mode( Pin24, pigpio.INPUT)

def main():
  while True:
     swflg=False
     print(pi.read(Pin24))
     time.sleep(2)


def destroy():
  pi.stop()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

・押している間点灯 離せば消える
GPIO20 −−− 200Ω −−− +LED- −−− GND
チャタリング対策無し版

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pigpio
import time

pi=pigpio.pi()
Pin24=24
Pin21=21

def setup():
  pi.set_mode(Pin24, pigpio.INPUT)
  pi.set_mode(Pin21, pigpio.OUTPUT)

def main():
  while True:
     
     if pi.read(Pin24)==1:
        pi.write(Pin21, pigpio.HIGH)
     else:
        pi.write(Pin21, pigpio.LOW)        
     time.sleep(0.1)


def destroy():
  pi.write(Pin21, pigpio.LOW)  
  pi.stop()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

もう一歩でonoffの都度点灯と消灯を繰り返す

これ幾つか問題があって
1.swを離したときにgndでなくオープン状態
2.ループで繰り返している

!/usr/bin/python
# -*- coding: utf-8 -*-
import pigpio
import time

pi=pigpio.pi()
Pin24=24
Pin21=21
swflg = False

def setup():
  pi.set_mode(Pin24, pigpio.INPUT)
  pi.set_mode(Pin21, pigpio.OUTPUT)

def main():
  swflg = False
  while True:

     if pi.read(Pin24)==1:
        if swflg == True:
             swflg=False
        else:
             swflg=True     
       
         
        if swflg == True:
                pi.write(Pin21, pigpio.HIGH)
        else:
                pi.write(Pin21, pigpio.LOW)        
        
     time.sleep(1)
def destroy():
  pi.write(Pin21, pigpio.LOW)  
  pi.stop()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

・アースをちゃんと接続
3.3V −−− OFFのときはオープン

3.3V −−−ON−−− 10KΩ −−− GND
□□□□□□□□□□□|−−−−−−−−−−− GPIO24

 

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pigpio
import time

pi=pigpio.pi()
Pin24=24
Pin21=21


def setup():
  pi.set_mode(Pin24, pigpio.INPUT)
  pi.set_mode(Pin21, pigpio.OUTPUT)

def main():
  Swflg=False
  while True:

     if pi.read(Pin24)==1:
        if Swflg == True:
             Swflg=False
             pi.write(Pin21, pigpio.LOW)    
        else:
             Swflg=True
             pi.write(Pin21, pigpio.HIGH)
       
        
        
     time.sleep(1)
def destroy():
  pi.write(Pin21, pigpio.LOW)  
  pi.stop()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

カテゴリー iot