Hvilken knap skal jeg bruge?
Momentary (fjedrende, uden lås) forbinder kun, mens du holder den nede – som en ringeklokke. Latching (med lås) klikker fast ved første tryk og slipper ved næste – som en afbryder. En vippekontakt bliver stående i den stilling, du sætter den i: I = tændt, O = slukket.
7 mm mini trykknap (rød)
- Type
- Momentary, normalt åben (NO)
- Ben
- 2 loddeflige
- Hul
- 7 mm
- Til
- Lavvolt: signal og små strømme
Start, reset, spil, dørklokke – alt hvor koden skal reagere på et tryk.
🛒 Se varen →12 mm trykknap med lås (rød)
- Type
- Latching (OFF-ON)
- Ben
- 2 loddeterminaler
- Hul
- 12 mm
- Belastning
- Står ikke på varen – tjek mærkningen
Tænd/sluk for strømmen til et projekt. Til tunge motorer: lad knappen styre et relæ.
🛒 Se varen →Mini vippekontakt 10 × 15 mm
- Type
- KCD11, SPST on/off
- Ben
- 2
- Hul
- 10 × 15 mm, snap-in
- Mærket
- 250 V/3 A eller 125 V/6 A AC
Hovedafbryder til batteripakker, LED-lys og maker-projekter på 3,3–12 V.
🛒 Se varen →Rund mini vippekontakt (sort)
- Type
- SPST on/off
- Ben
- 2
- Hul
- Rundt, snap-in – mål dit eksemplar før du borer
- Mærket
- 250 V/3 A AC
Samme funktion – men et rundt hul er meget nemmere at bore eller 3D-printe.
🛒 Se varen →Test kontakten med multimeterets bip
- Drej multimeteret over på bip-symbolet (lydbølger / diode-tegnet).
- Hold de to pinde mod de to ben på kontakten.
- Tryk eller vip. Bipper den, er benene forbundet – kontakten er ON.
- Bipper den aldrig, eller hele tiden uanset stilling, er kontakten i stykker (eller du har ramt forkert).
Tryk på knappen på tegningen.
Kobl en knap til en pin – kun to ledninger
Det ene ben til en pin (her D2), det andet til GND. INPUT_PULLUP slår en indbygget modstand til, så pinnen er HIGH, når knappen er sluppet, og LOW, når du trykker. Derfor tester koden på LOW.
// Knap på pin 2 og GND – tænder den indbyggede LED
const int KNAP = 2;
void setup() {
pinMode(KNAP, INPUT_PULLUP); // indbygget pull-up
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
}
void loop() {
if (digitalRead(KNAP) == LOW) { // LOW = trykket
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("Trykket!");
} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
Hvorfor tæller den 3 tryk, når jeg trykker én gang?
Metallet inde i en knap hopper et par millisekunder, når den trykkes. Arduinoen er så hurtig, at den ser hvert hop som et nyt tryk. Løsningen er at vente lidt og først tælle trykket, når signalet har ligget stille.
// Tæl tryk uden prel – skifter LED ved hvert tryk
const int KNAP = 2;
bool tidligere = HIGH;
unsigned long sidst = 0;
bool led = false;
void setup() {
pinMode(KNAP, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
bool nu = digitalRead(KNAP);
if (nu != tidligere && millis() - sidst > 50) {
sidst = millis();
if (nu == LOW) { // nyt tryk
led = !led;
digitalWrite(LED_BUILTIN, led);
}
tidligere = nu;
}
}