Piano Hat (CAP1188) 사용하기
소개
스위치 사이언스 씨의 부스에서 보고, Pimoroni 라는 메이커의 피아노는 t 라는 보드를 구입했습니다. 외형대로, 피아노의 건반과 같은 형태를 하고 있으므로, 이 보드 하나로 소리가 나오는 것이라고 생각하고 있었습니다.
그러나 이 보드에는 음원이 탑재되어 있지 않습니다. Raspberry Pi와 같은 모함이 있으며, PianoHat에서 터치 이벤트를 감지하여 모함에서 소리를 내지 않습니다. 그래서 소리를 내는 것은 옆에 놓아두고, 우선은 이 보드의 구조를 공부하고 싶습니다. PianoHat 사양 16개의 정전 터치패드(13개의 피아노 건반, Octarve up/down, Instrument) 2x Microchip CAP1188 capacitive touch driver chips CAP1188( h tp // w w. 미 c로치 p. 코 m / w wp 로즈 cts / 엔 / 카 P1188 )은 8ch 정전 터치패드 입력 칩이므로 PianoHat의 16개의 정전 패드를 2개의 CAP1188로 캡처하고 있습니다.
CAP1188 초기화
레지스터는 취설을 보면서 조사합니다. 또, Arduino의 샘플 프로그램 가 있었으므로 이쪽을 보면서 공부해 보겠습니다.
CAP1188.ino
#define CAP1188_PRODID 0xFD
#define CAP1188_MANUID 0xFE
#define CAP1188_REV 0xFF
#define CAP1188_MTBLK 0x2A
#define CAP1188_LEDLINK 0x72
#define CAP1188_STANDBYCFG 0x41
void setup() {
// put your setup code here, to run once:
uint8_t i2c_addr = slaveAddress;
Wire.begin();
Serial.begin(9600);
Serial.println("CAP1188 test!");
//接続テスト
Serial.print("Product ID: 0x");
Serial.println(readRegister(CAP1188_PRODID), HEX);
Serial.print("Manuf. ID: 0x");
Serial.println(readRegister(CAP1188_MANUID), HEX);
Serial.print("Revision: 0x");
Serial.println(readRegister(CAP1188_REV), HEX);
//初期設定
// allow multiple touches
writeRegister(CAP1188_MTBLK, 0);
// Have LEDs follow touches
writeRegister(CAP1188_LEDLINK, 0xFF);
// speed up a bit
writeRegister(CAP1188_STANDBYCFG, 0x30);
}
연결 점검
먼저, 제대로 연결되어 있는지 확인하기 위해 일부 레지스터를 읽어 보겠습니다.
REGISTER ADDRESS
R/W
FUNCTION
REGISTER NAME
DEFAULT VALUE
FDh
R
제품 ID
Stores a fixed value that identifies each product
50h
FEh
R
Manufacturer ID
Stores a fixed value that identifies SMSC
5Dh
FFh
R
Revision
Stores a fixed value that represents the revision number
83h
초기 설정
REGISTER ADDRESS
R/W
FUNCTION
REGISTER NAME
DEFAULT VALUE
2Ah
R/W
Multiple Touch Configuration
Determines the number of simultaneous touches to flag a multiple touch condition
80h
00H를 설정. 최상위 비트를 지웁니다. multiple 터치 회로가 비활성화됩니다. 장치는 multiple 터치를 차단하지 않습니다. (매번 반응한다는 것이라고 생각됩니다.)
REGISTER ADDRESS
R/W
FUNCTION
REGISTER NAME
DEFAULT VALUE
72h
R/W
Sensor Input LED Linking
Controls linking of sensor inputs to LED channels
00h
FFH를 설정. 정전 터치패드의 센서를 LED 입력에 연결합니다. (터치하면 LED가 빛난다고 생각합니다.)
REGISTER ADDRESS
R/W
FUNCTION
REGISTER NAME
DEFAULT VALUE
41h
R/W
Standby Configuration
Controls averaging and cycle time while in standby
39h
30H를 설정. Standby Configuration은 이러한 센서 입력의 평균화와 사이클 시간을 제어합니다. 다소 채터링이 있어도, 신속하게 반응하는 설정이 되어 있습니다.
루프 프로그램
CAP1188.ino
#define CAP1188_SENINPUTSTATUS 0x3
#define CAP1188_MAIN 0x00
#define CAP1188_MAIN_INT 0x01
uint8_t status=0;
void loop() {
uint8_t t = readRegister(CAP1188_SENINPUTSTATUS,slaveAddress2);
if (t) {
writeRegister(CAP1188_MAIN, readRegister(CAP1188_MAIN) & ~CAP1188_MAIN_INT);
}
if(status!=t){
status=t;
Serial.println(status, HEX);
}
}
REGISTER ADDRESS
R/W
FUNCTION
REGISTER NAME
DEFAULT VALUE
03h
R
Sensor Input Status
Returns the state of the sampled capacitive touch sensor inputs
00h
00h
R/W
Main Control
Controls general power states and power dissipation
00h
Sensor Input Status는 터치되면 1로, 되지 않으면 0이 되는 8비트 레지스터입니다.
Main Control의 LSB는 인터럽트가 있음을 나타냅니다. 이 비트가 설정되면 ALERT# 핀이 어서트된다. 그렇기 때문에 터치 센서의 입력이 있을 때에는 이 비트를 클리어합니다.
Reference
이 문제에 관하여(Piano Hat (CAP1188) 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/UchiwaFuujinn/items/6341cbecd85464ad4741텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)