A arduino carregueu el següent programa:
/* 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
*/
#include
CapSense cs_4_2 = CapSense(4,2); // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
void setup() {
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 - just as an example
Serial.begin(115200);
}
void loop() {
long start = millis();
long total = cs_4_2.capSense(30);
Serial.println(total, DEC); // print sensor output 1
delay(10); // arbitrary delay to limit data to serial port
}
Per més informació sobre el codi anterior segueix aquest Link: Capacitive Sensing
adicionalment per veure la mesura, podem executar el següent programa Processing:
import processing.serial.*;
Serial port;
int LINE_FEED=10;
float [] punt;
float maxY;
float minY;
float mitjana;
float mitjanaMin = 0;
float mitjanaMax = 0;
void setup(){
size(640, 480, P3D);
port = new Serial(this, Serial.list()[0], 115200);
frameRate(200);
minY=0;
maxY=height;
punt = new float[width];
for(int n=0;n<width;n++){
punt[n]=0;
}
}
void draw(){
background(0); stroke(255);
float lmitjana = punt[0];
for(int n=1;n<width;n++){
line(n-1,map(punt[n-1],minY, maxY,height,0),n,map(punt[n],minY, maxY,height,0));
lmitjana += punt[n];
}
mitjana = lmitjana / width;
mitjanaMax = (mitjana > mitjanaMax) ? mitjana : mitjanaMax;
mitjanaMin = (mitjana < mitjanaMin) ? mitjana : mitjanaMin;
float mapMitjana = map(mitjana, minY, maxY, height, 0);
float mapMitjanaMin = map(mitjanaMin, minY, maxY, height, 0);
float mapMitjanaMax = map(mitjanaMax, minY, maxY, height, 0);
stroke(255,0,0); line(0, mapMitjanaMin, width, mapMitjanaMin);
stroke(0,0,255); line(0, mapMitjanaMax, width, mapMitjanaMax);
stroke(0,255,0); line(0, mapMitjana, width, mapMitjana);
}
void mousePressed(){
mitjanaMin = mitjana;
}
void serialEvent(Serial p) {
String data = p.readStringUntil(LINE_FEED);
if (data != null) {
for(int n=1;n<width;n++){
maxY = (punt[width-1]>maxY) ? punt[width-1] : maxY;
print((int)mitjana +" ");
}
}