Делаю датчик касания, схема описана на хабре:
Вот скетч:
- Код: Выделить всё
#define SENS47K 7
#define SENS10K 3
#define SENS1M 4
void setup()
{
Serial.begin(115200);
}
void loop()
{
unsigned int j;
unsigned int ave;
pinMode(SENS47K,OUTPUT);
pinMode(SENS10K,OUTPUT);
pinMode(SENS1M,OUTPUT);
digitalWrite(SENS47K,LOW);
digitalWrite(SENS10K,LOW);
digitalWrite(SENS1M,LOW);
delay(1);
pinMode(SENS47K,INPUT);
digitalWrite(SENS47K,LOW);
for ( j = 0; j < 50000; j++) {
if ( digitalRead(SENS47K) ) break;
}
//ave = ave*3/4+j/4;
Serial.print("47K = ");
Serial.println(j,DEC);
delay(200);
}
Почему-то только каждое 6-е чтение нормальное. Пробовал усреднять:
- Код: Выделить всё
ave = ave*3/4+j/4;
Результат поверг меня в еще большее смущение, ничего особо не меняется... То ли не так усредняю, то ли еще что...
- Код: Выделить всё
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
47K = 6
// ПРИМЕЧАНИЕ - вот в этот момент касаемся сенсора
47K = 2110
47K = 17
47K = 11
47K = 10
47K = 10
47K = 25
47K = 1912
47K = 22
47K = 12
47K = 8
47K = 9
47K = 11
47K = 22
47K = 1903
47K = 19
47K = 13
47K = 10
47K = 10
47K = 18
47K = 1927
47K = 22
47K = 14
47K = 14
47K = 13
47K = 18
47K = 37
47K = 1765
47K = 26
47K = 17
47K = 13
47K = 14
47K = 25
47K = 2119