Written by coh at home

[Maixbot]Digital Input 본문

Advanced/Maixbot Project

[Maixbot]Digital Input

och 2023. 6. 28. 22:03

Tact switch사용해서 input 확인하는 예제

from fpioa_manager import fm
from Maix import GPIO
import utime

button = 15
fm.register(button, fm.fpioa.GPIO1)

button = GPIO(GPIO.GPIO1, GPIO.IN)
while 1:
    var = button.value()
    print(var)

단순히 이렇게 하면 button의 전압 level이 floating 상태인 것을 확인할 수 있다.

따라서 pull up 저항을 달거나 pull down저항을 달아서 해결해야 하는데 

Maixduino에서는 이를 지원해준다.

 

Pull down -> GND로 끌어내린다. 초기값 0으로 세팅.

Pull up은 그 반대.

from fpioa_manager import fm
from Maix import GPIO
import utime

button = 15
fm.register(button, fm.fpioa.GPIO1)

button = GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_DOWN)
while 1:
    var = button.value()
    print(var)

그리고 while loop에서 switch가 눌린 횟수를 count하는 것을 출력해보면

예상하지 못한 값이 출력된다. 잠깐 누른 동안의 그 시간 동안 엄청 cnt가 카운트된다.

클럭과 관련이 있을 거라고 생각한다. 그래서 사실 라즈베리파이에서는 event함수를 등록하고 GPIO.FALLING 옵션과 bounce time을 부여해서 해결하는데 여기서는 이전에 누른 값이 0인지를 보고 알고리즘을 짜야한다. (지원함수가 없는 듯 싶다.)

 

마지막으로 코드를 기기에 저장하는 방법은 Tool -> Save하면 된다.

 

'Advanced > Maixbot Project' 카테고리의 다른 글

[Maixbot]Analog IO  (0) 2023.07.10
[Maixbot]AI concept review with CNN  (0) 2023.07.07
[Maixbot]Simple Example, Output  (0) 2023.06.28
[Maixbot]Pin number.  (0) 2023.06.28
[Maixbot] Processor and Maixduino 개발환경구축  (0) 2023.06.28