Papper lampa + touch på/av mekanism med Arduino (2 / 14 steg)
Steg 2: Lägga till kod
Kopiera och klistra in följande kod i den Arduino skiss (denna kod är en variant av en kapacitans sensing kod som är ganska stabil och buller gratis. Här är länk till den ursprungliga koden i Arduino forum.
koden bygger på CapSense.pde av Paul Badger 2007. Några förändringar på hur I/O pins deklareras.
koden hittar du här http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259
int i;
unsigned int x, y;
flyta ack. avskr, fout, fval =. 07; Detta är variabler för en enkel (utjämning) lågpassfilter - fval 1 = inget filter -.001 = max filter
void setup() {
Serial.BEGIN(9600);
pinMode (8, OUTPUT); utgångsstiftet
pinMode (9, ingång); ingångsstift
pinMode (10, OUTPUT); Guard pin
digitalWrite (10, låg).
pinMode (13, OUTPUT);
pinMode (12, OUTPUT); kan också vara hög - Använd inte denna pin för att ändra utgång men
}
void loop() {
y = 0; rensa ut variabler
x = 0;
för (jag = 0; jag < 4; i ++) {/ / gör det fyra gånger för att bygga upp ett genomsnitt - inte nödvändigt men tar ut vissa jitter
LÅG till hög övergång
Samma som raden under - visar programmerare kotletter men inte riktigt köpa någon mer fart
digitalWrite 8, hög.
medan känsla PIN-koden inte är hög
medan (digitalRead(9)! = 1) {/ / samma som ovan port manipulation ovan - endast 20 gånger långsammare!
x ++;
}
Delay(1);
HÖG-till låg övergång
Samma som linje nedan - dessa visar programmerare kotletter men riktigt köpa inte någon mer fart
digitalWrite 8, låg.
pin är inte låga--samma som nedan endast 20 gånger snabbare
While(digitalRead(9)! = 0) {/ / samma som ovan port manipulation - endast 20 gånger långsammare!
y ++;
}
Delay(1);
}
Fout = (fval * (float) x) + ((1-fval) * ack. avskr); Lätt utjämning filter "fval" bestämmer mängden nya data i fout
Ack. avskr = fout;
om (fout > 90) {
digitalWrite 13, hög.
digitalWrite 12, hög.
} annat {
digitalWrite 13, låg.
digitalWrite 12, låg.
}
Serial.Print ("");
Serial.println ((långa) fout, DEC); Slätade låg till hög
}