크래피의 박수를 계산해 보았습니다.

KumaMCN가치세의 가치책입니다.
크래피 챌린지 Advent Calendar 2017 8일째 기사입니다!

클래피 챌린지를 시작한 후 처음으로 만든 박수의 카운트에 대해 소개합니다.

완성 동영상은 이것.

박수가 카운트할 수 있게 됐어ー #KumaMCN #클래퍼슨 #크래피챌린지 피 c. 라고 r. 이 m/예 Bw3z66dL

우선 스위치 부분을 만듭니다.

사용한 것은 이것. 다이 소에 팔고있는 케이블을 벽에 고정하는 사람입니다.

2017년 2월 26일



클래피를 해체하고, 하나는 그대로 상부에, 다른 하나는 입의 뒷면에 걸리는 부분만 접어 구부려 넣으면 딱 좋습니다.

도선을 납땜합시다. (…납땜하기 어렵습니다. 깎으면 좋을지도.)

안이 더러운 것은 여러가지 시행 착오하고 있었기 때문입니다 www (쓸 수 있는 펜이라든지 시험하고 있었다.)



박수할 때 다음과 같이 접촉하면 스위치가 됩니다.



클래피의 바닥을 커터로 조금 자르고 아래에서 도선을 내십시오.



Bluetooth로 무선으로 만들고 싶었기 때문에 블루노 나노 아두이노를 사용했습니다. (...아직 할 수 없는, 크래피에 묻고 싶다)

빨간색 전선을 3V에, 검은색 전선을 아날로그 핀(A3)에 꽂습니다. A3에서 GND로 저항을 꽂습니다.



Bluno를 컴퓨터에 연결합니다.

Bluno에 쓰는 Arduino 프로그램은 이쪽.

ON으로 되어 있는 동안 카운트하고, ON에서 OFF가 되었을 때(어느 정도 카운트 되어 있는 것으로, 노이즈로 박수 카운트되지 않게 됩니다), 시리얼 통신으로 문자 "8"(혹은 박수 카운트수)를 보내 합니다.



int analogPin = 3;     // potentiometer wiper (middle terminal) connected to analog pin 3
                       // outside leads to ground and +5V
int val = 0;           // variable to store the value read
int count = 0;
int clap = 0;
int preclap = 0;
int clapcount = 0;
void setup()
{
  Serial.begin(9600);          //  setup serial
}

void loop()
{
  val = analogRead(analogPin);    // read the input pin
  //Serial.println(val);
  if(val > 50){
    count++;
    clap = 1;
    //Serial.println("ON");
  }else{
    clap = 0;
    //Serial.println("OFF");
  }
  if(preclap == 1 && clap == 0 && count > 500) {
    clapcount++;
    //Serial.println(clapcount);
    Serial.println("8");
    count = 0;
  }
  preclap = clap;
}


문자를 받고 카운트(혹은 박수 카운트수를 받고 표시)하는 Python 프로그램은 이쪽.

Qt를 사용하고 있습니다.



from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
import serial
import serial.tools.list_ports
import re

# TODO
# Reset Button
# Close Serial
class ClappyCount(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.ser = serial.Serial()
        self.ser.baudrate = 9600
        # print(list(serial.tools.list_ports.comports())[0][0])
        # self.ser.port = list(serial.tools.list_ports.comports())[0][0]
        self.ser.port = "COM7"
        self.ser.open()

        self.LCDDisplay = QLCDNumber(self)
        BoxLay = QVBoxLayout()
        BoxLay.addWidget(self.LCDDisplay)
        self.setLayout(BoxLay)
        self.setGeometry(500, 500, 300, 200)
        self.setWindowTitle('パチパチ数')
        self.clapcount = 0
        self.LCDDisplay.display(self.clapcount)
        self.show()
        self.showMaximized()
        timer = QTimer(self)
        timer.timeout.connect(self.Update)
        timer.start(100)

    def Update(self):
        self.buf = self.ser.readline()
        if self.buf != "":
            # self.clapcount = int(self.buf.decode('utf-8'))
            self.clapcount += 1;
        self.LCDDisplay.display(self.clapcount)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = ClappyCount()
    sys.exit(app.exec_())


Windows에서 명령 프롬프트를 열고 Python 프로그램을 실행합니다. (Anaconda 자주 사용하고 있습니다.환경 전환에.)

아날로그 입력의 노이즈가 많아, 잘 카운트되지 않는 경우가 있었으므로, 어려웠습니다.

만들면 3에서는, 방문자에게 많이 카운트 받게 되어 즐거웠습니다.



이상입니다.


좋은 웹페이지 즐겨찾기