Tyg dammen (10 / 13 steg)
Steg 10: kod
MIN KOD:
int led1 = 5;
int led2 = 6; Vilka LED ansluter till vad numrerar på lilypad
int led3 = 10;
int led4 = 9;
int sensor1 = A5;
int sensor2 = A4; När ledande nummer är anslutna till vad A på lilypad
int sensor3 = A2;
int sensor4 = A3;
int sensorValue1;
int sensorValue2;
int sensorValue3;
int sensorValue4;
Rutinen installationsprogrammet körs en gång när du trycker på reset:
void setup() {
pinMode (led1, produktionen);
pinMode (led2, produktionen);
pinMode (led3, produktionen);
pinMode (led4, produktionen);
pinMode (sensor1, ingång);
pinMode (sensor2, ingång);
pinMode (sensor3, ingång);
pinMode (sensor4, ingång);
Serial.BEGIN(9600); initiera meddelande
}
loop rutinen körs för evigt om och om igen:
void loop() {
sensorValue1 = readCapacitivePin(sensor1); läsa värdet touch sensor
Serial.println(sensorValue1); Skicka värde till datorn
Delay(100); fördröjning för 1/10 sekund
om (sensorValue1 > 1) / / om "1" är rörd
{
digitalWrite (led1, hög); blir lätt på
} annat
{
digitalWrite (led1, låg); om inte berört, stänga av
}
sensorValue2 = readCapacitivePin(sensor2); läsa värdet touch sensor
Serial.println(sensorValue2); Skicka värde till datorn
Delay(100); fördröjning för 1/10 sekund
om (sensorValue2 > 1) / / om "2" är rörd
{
digitalWrite (led2, hög);
}
annat
{
digitalWrite (led2, låg);
}
sensorValue3 = readCapacitivePin(sensor3); läsa värdet touch sensor
Serial.println(sensorValue3); Skicka värde till datorn
Delay(100); fördröjning för 1/10 sekund
om (sensorValue3 > 1) / / om "3" är rörd
{
digitalWrite (led3, hög);
}
annat
{
digitalWrite (led3, låg);
}
sensorValue4 = readCapacitivePin(sensor4); läsa värdet touch sensor
Serial.println(sensorValue4); Skicka värde till datorn
Delay(100); fördröjning för 1/10 sekund
om (sensorValue4 > 1) / / om "4" vidrörs
{
digitalWrite (led4, hög);
}
annat
{
digitalWrite (led4, låg);
}
}
readCapacitivePin
Ingång: Arduino pin-kod
Utgång: Flera, från 0 till 17 uttrycker
Hur mycket kapacitans är på stiftet
När du rör den PIN-kod, eller vad du har
fäst vid den, kommer att hur många få högre
#include "pins_arduino.h" / / Arduino pre-1.0 behöver detta
uint8_t readCapacitivePin (int pinToMeasure) {
Variabler som används för att översätta från Arduino att AVR pin namngivning
flyktiga uint8_t * hamn.
flyktiga uint8_t * ddr;
flyktiga uint8_t * pin;
Här översätter vi ingångsstift numret från
Arduino pin-kod till AVR PORT, PIN, DDR,
och vilken bit av dessa register vi bryr oss om.
bitmask som byte;
Port = portOutputRegister(digitalPinToPort(pinToMeasure));
DDR = portModeRegister(digitalPinToPort(pinToMeasure));
bitmask = digitalPinToBitMask(pinToMeasure);
PIN-kod = portInputRegister(digitalPinToPort(pinToMeasure));
Ansvarsfrihet stiftet först genom att ange det låga och utdata
* port & = ~ (bitmask);
* ddr | = bitmask;
Delay(1);
Gör stiftet indata med inre pull-up på
* ddr & = ~ (bitmask);
* port | = bitmask;
Nu se hur länge den PIN-kod får dras. Denna manuella slangen av slingan
minskar antalet hårdvara cykler mellan varje läsning av klämma fast,
vilket ökar känsligheten.
uint8_t cykler = 17;
om (* pin & bitmask) {cykler = 0;}
annars om (* pin & bitmask) {cykler = 1;}
annars om (* pin & bitmask) {cykler = 2;}
annars om (* pin & bitmask) {cykler = 3;}
annars om (* pin & bitmask) {cykler = 4;}
annars om (* pin & bitmask) {cykler = 5.}
annars om (* pin & bitmask) {cykler = 6;}
annars om (* pin & bitmask) {cykler = 7.}
annars om (* pin & bitmask) {cykler = 8.}
annars om (* pin & bitmask) {cykler = 9.}
annars om (* pin & bitmask) {cykler = 10.}
annars om (* pin & bitmask) {cykler = 11.}
annars om (* pin & bitmask) {cykler = 12.}
annars om (* pin & bitmask) {cykler = 13.}
annars om (* pin & bitmask) {cykler = 14.}
annars om (* pin & bitmask) {cykler = 15;}
annars om (* pin & bitmask) {cykler = 16.}
Ansvarsfrihet PIN-koden igen genom att ange det låga och utdata
Det är viktigt att lämna stiften låg om du vill
att kunna röra mer än 1 sensor på en gång - om
sensorn är kvar drog hög, när du rör
två sensorer, din kropp kommer att överföra laddningen mellan
sensorer.
* port & = ~ (bitmask);
* ddr | = bitmask;
returnera cykler;
}