정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

센싱 속도가 너무 느립니다. 속도를 빨리 할 수 있을까요
묵이 | 2019-04-10
 

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도 줄여보거나 늘려봤지만... ㅠ

 

코드 문제인지 혹은 코코아 팹의 디바이스를 사용하면 해결할 수 있는 지 궁금합니다.

 

 

이전글   |    아두이노와 TFT LCD를 블루투스 통신으로 하고 싶습니다. ... 2019-04-07
다음글   |    오렌지보드 어플 연동 2019-04-11