Tacuino: en låg kostnad, modulära, Arduino-kompatibel pedagogiska plattform (9 / 11 steg)
Steg 9: Touch
Analoga och digitala pin-koder för Attiny är lite förvirrande. Jag hänvisar till i bilden som kommer från filen "pin.h" för Attiny core programvaran om du gräva djupt nog:
ATMEL ATTINY45/85 Stifttilldelningar
+-\/-+
Ain0 (D 5) PB5 1| |8 Vcc
Ain3 (D 3) PB3 2 | |7 PB2 (D 2) Ain1
Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1
GND 4| |5 PB0 (D 0) pwm0
Touch sensor är fysiskt ansluten till den Attiny stift 7, som i databladet Atmel designeras "PB2". I Arduino programvara måste vi engagera pull-up resistor använder digital pin beteckningen ("2"). Sedan, måste vi använda beteckningen analog pin ("1") när vi använder funktionen analogRead(). Förvirrande som fan, men jag är inte smart nog att börja skriva om Arduino biblioteken.
För att mäta touch, behöver vi göra lite Arduino magi. Genom att anlita en inre pull-up resistor, kan vi upptäcka när motståndet över två traces ändras. Utan en aktuell sökväg (hög motståndskraft), att 10-bitars värde vara nära de maximala 1023 eftersom pull-up resistor drar spänningen hög. När huden ger en aktuell sökväg, analoga värde kommer sjunka under 1000, och vi kan utlösa LED att ange identifiering.
int ledde = 4. < br > int touchPin = 1;
int touchPullUp = 2;
void setup() {
pinMode ledde (, OUTPUT);
digitalWrite (lightPullUp, hög); engagera pull-up resistor
digitalWrite (touchPullUp, hög); engagera pull-up resistor
}
void loop() {
int touchVal = analogRead(touchPin);
om (touchVal < 1000) {
digitalWrite (ledde, högt);
}
annat {
digitalWrite (ledde, låg);
}
}
Om vi hade en knapp eller omkopplare installerade istället, skulle värdet sjunka till nära 0 eftersom motståndet är nästan noll.