1. 프로젝트 사용한 보드 종류
아두이노 레오나르도
2. 사용한 개발 프로그램명
아두이노 IDE
3. 사용한 센서 모델명
레오나르도 자체 센서
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
#include <CapacitiveSensor.h>
#include <Keyboard.h> //버전에따라 빼도 됨.
/*
* CapitiveSense Library Demo Sketch
* Paul Badger 2008
* Uses a high value resistor e.g. 10M between send pin and receive pin
* Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
* Receive pin is the sensor pin - try different amounts of foil/metal on this pin
*/
CapacitiveSensor cs_4_1 = CapacitiveSensor(4,1); //4와 1 연결 중간에 10M옴 저항
CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2); //4와 2 연결
CapacitiveSensor cs_4_3 = CapacitiveSensor(4,3);
CapacitiveSensor cs_4_5 = CapacitiveSensor(4,5);
CapacitiveSensor cs_4_6 = CapacitiveSensor(4,6);
CapacitiveSensor cs_4_7 = CapacitiveSensor(4,7);
CapacitiveSensor cs_4_8 = CapacitiveSensor(4,8);
CapacitiveSensor cs_4_9 = CapacitiveSensor(4,9);
CapacitiveSensor cs_4_10 = CapacitiveSensor(4,10);
CapacitiveSensor cs_4_11 = CapacitiveSensor(4,11);
CapacitiveSensor cs_4_12 = CapacitiveSensor(4,12);
CapacitiveSensor cs_4_13 = CapacitiveSensor(4,13);
CapacitiveSensor cs_4_A0 = CapacitiveSensor(4,A0);
CapacitiveSensor cs_4_A1 = CapacitiveSensor(4,A1);
CapacitiveSensor cs_4_A2 = CapacitiveSensor(4,A2);
CapacitiveSensor cs_4_A3 = CapacitiveSensor(4,A3);
void setup()
{
cs_4_5.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 - just as an example
Serial.begin(9600);
Keyboard.begin();
}
void loop()
{
long start = millis();
long total1 = cs_4_1.capacitiveSensor(30);
long total2 = cs_4_2.capacitiveSensor(30);
long total3 = cs_4_3.capacitiveSensor(30);
long total4 = cs_4_5.capacitiveSensor(30);
long total5 = cs_4_6.capacitiveSensor(30);
long total6 = cs_4_7.capacitiveSensor(30);
long total7 = cs_4_8.capacitiveSensor(30);
long total8 = cs_4_9.capacitiveSensor(30);
long total9 = cs_4_10.capacitiveSensor(30);
long total10 = cs_4_11.capacitiveSensor(30);
long total11 = cs_4_12.capacitiveSensor(30);
long total12 = cs_4_13.capacitiveSensor(30);
long total13 = cs_4_A0.capacitiveSensor(30);
long total14 = cs_4_A1.capacitiveSensor(30);
long total15 = cs_4_A2.capacitiveSensor(30);
long total16 = cs_4_A3.capacitiveSensor(30);
Serial.println("---------------------------");
Serial.print("sensor 1 : "); Serial.println(total1);
Serial.print("sensor 2 : "); Serial.println(total2);
Serial.print("sensor 3 : "); Serial.println(total3);
Serial.print("sensor 4 : "); Serial.println(total4);
Serial.print("sensor 5 : "); Serial.println(total5);
Serial.print("sensor 6 : "); Serial.println(total6);
Serial.print("sensor 7 : "); Serial.println(total7);
Serial.print("sensor 8 : "); Serial.println(total8);
Serial.print("sensor 9 : "); Serial.println(total9);
Serial.print("sensor 10 : "); Serial.println(total10);
Serial.print("sensor 11 : "); Serial.println(total11);
Serial.print("sensor 12 : "); Serial.println(total12);
Serial.print("sensor 13 : "); Serial.println(total13);
Serial.print("sensor 14 : "); Serial.println(total14);
Serial.print("sensor 15 : "); Serial.println(total15);
Serial.print("sensor 16 : "); Serial.println(total16);
Serial.println("---------------------------");
if(total1 >= 1000){
Keyboard.println("1");
delay(10);
}
if(total2 >= 1000){
Keyboard.println("2");
delay(10);
}
if(total3 >= 1000){
Keyboard.println("3");
delay(10);
}
if(total4 >= 1000){
Keyboard.println("4");
delay(10);
}
if(total5 >= 1000){
Keyboard.println("5");
delay(10);
}
if(total6 >= 1000){
Keyboard.println("6");
delay(10);
}
if(total7 >= 1000){
Keyboard.println("7");
delay(10);
}
if(total8 >= 1000){
Keyboard.println("8");
delay(10);
}
if(total9 >= 1000){
Keyboard.println("9");
delay(10);
}
if(total10 >= 1000){
Keyboard.println("+");
delay(10);
}
if(total11 >= 1000){
Keyboard.println("-");
delay(10);
}
if(total12 >= 1000){
Keyboard.println("=");
delay(10);
}
if(total13 >= 1000){
Keyboard.println("/");
delay(10);
}
if(total14 >= 1000){
Keyboard.println("*");
delay(10);
}
if(total15 >= 1000){
Keyboard.println(".");
delay(10);
}
if(total16 >= 1000){
Keyboard.println("0");
delay(10);
}
}
6. 문제점 및 에러 내용
한번 측정/입력 후 다음 번까지 대략 16초가 걸립니다. 너무 느려서 여러가지 바꿔봤는데도 향상되지 않네요...
sensor가 너무 많은 것 같아 1개만 해보기도 했지만 속도에 큰 차이는 없었습니다.
delay도 줄여보거나 늘려봤지만... ㅠ
코드 문제인지 혹은 코코아 팹의 디바이스를 사용하면 해결할 수 있는 지 궁금합니다.
|