Butang Tekan Arduino: NO/NC, Pull-Up, Debounce dan Emergency Stop

Cartoon of a large red mushroom emergency stop button with a yellow collar beside a green-capped square tactile switch and a tiny black 6x6 tactile switch with silver legs

Push button switch bukan komponen yang mempunyai keadaan tersimpan β€” ia dua keping logam berspring yang bersentuh, dan setiap masalah yang anda akan hadapi dengannya berpunca daripada hal itu. Set pin kepada INPUT_PULLUP, wayarkan switch itu ke GND supaya tekan terbaca LOW, abaikan kontaknya selama 40 ms selepas ia bergerak, dan ambil emergency stop daripada pasangan normally closednya.

Switch mana yang anda perlukan: momentary, latching atau maintained?

Push switch berbeza pada satu sifat sahaja β€” apa yang kontaknya buat bila anda lepaskan tangan. Switch momentary melantun balik sebaik sahaja anda lepas. Yang latching pula kekal tertekan dan perlukan tindakan yang sengaja untuk melepaskannya: emergency stop LA38 mengunci bila ia dihentak dan hanya terpelanting keluar bila kepala cendawannya dipulas, iaitu apa yang cuba diberitahu oleh dua anak panah melengkung yang tercetak timbul pada kepala itu. Switch maintained pula kekal di kedudukan yang anda alihkan.

Perbezaan itu mendarat dalam kod anda, bukan dalam pendawaian. Butang momentary menghulurkan satu peristiwa kepada Arduino: sketch kena menangkap detik perubahan itu dan mengingati apa maksudnya. Switch latching atau maintained pula menghulurkan satu keadaan: baca pin itu bila-bila masa dan jawapannya tetap sama.

Jenis Bila anda lepas Terbaca sebagai Contoh
Momentary (miniature) Terlantun terbuka Peristiwa untuk ditangkap Tactile 6×6, tactile 12×12 bertopi
Momentary (panel) Terlantun terbuka Peristiwa untuk ditangkap R13-507, LA38 kepala rata
Latching Kekal tertekan sampai dipulas Keadaan untuk dibaca Emergency stop LA38
Maintained Kekal di kedudukan yang anda alihkan Keadaan untuk dibaca Rocker switch, toggle E-TEN 1121
Latching elektronik Bertukar keadaan setiap kali disentuh Keadaan untuk dibaca Modul sentuh bistable

Berbaloi ditambah

ItemPriceQty
Industrial Emergency Momentary Button LA38 Push Switch RED Push To Stop Button - MOMENTARY BUTTONIndustrial Emergency Momentary Button LA38 Push Switch RED Push To Stop Button - MOMENTARY BUTTONRMOMENBRM9.95
R13-507 Push Button Switch No-Locking Round Momentary Red Green Yellow Blue White Black - R13-507 BUTTON (RED)R13-507 Push Button Switch No-Locking Round Momentary Red Green Yellow Blue White Black - R13-507 BUTTON (RED)R507REDRM2.45
Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-B (1.0M)Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-B (1.0M)ATBC100RM4.90

LA38 kepala rata jenis momentary menggunakan badan 22 mm yang sama dan blok kontak berterminal skru yang sama seperti emergency stop, jadi sepasang daripadanya mengajar momentary lawan latching dalam satu keluarga produk sahaja. R13-507 pula butang panel 16 mm yang klasik, tetapi dua terminalnya ialah solder lug β€” sediakan soldering iron dan semeter wayar, yang caranya ditunjukkan dalam panduan solder header kami. Kabel A-ke-B simpanan itu pula yang memprogram Uno.

Apa maksud NO dan NC, dan kenapa setiap e-stop diwayarkan melalui NC?

Normally open dan normally closed menerangkan keadaan kontak semasa rehat, tanpa sesiapa menyentuhnya. Kontak NO terbuka sehingga ditekan; kontak NC tertutup sehingga ditekan. Hampir setiap butang kecil ialah NO β€” switch tactile itu, R13-507 itu. Keluarga LA38 ialah pengecualian dalam senarai bahagian ini: kedua-dua momentary kepala rata dan emergency stop membawa blok kontak yang mempunyai satu daripada setiap jenis, sepasang NO dan sepasang NC, masing-masing pada terminal skrunya sendiri.

Sekarang telusuri kegagalannya. Ambil isyarat henti sesebuah mesin daripada pasangan NO: semasa rehat litarnya terbuka, dan menekan butang menutupnya untuk mengumumkan henti. Putuskan wayar ke butang itu dan tiada apa-apa yang berubah pada pandangan mata β€” litar itu memang sudah terbuka. Butang yang sepatutnya menyelamatkan anda sudah mati, dan satu-satunya ujian yang mendedahkannya ialah menekannya ketika kecemasan.

Ambil isyarat yang sama daripada pasangan NC dan logiknya terbalik. Semasa rehat kontak itu tertutup, arus mengalir, dan pengawal membaca aliran itu sebagai “semuanya elok”. Hentak kepalanya dan ia terbuka: henti. Wayar putus, skru terlonggar, plug tersentak keluar β€” juga terbuka, juga henti. Setiap cara pendawaian itu boleh gagal kini mendarat di pihak yang selamat, dan itulah seluruh sebab kenapa e-stop diwayarkan NC.

Kartun membandingkan dua butang panel 22 mm dengan badan hitam yang serupa dan blok terminal skru oren, satu berkanta merah rata dalam bezel perak dan satu lagi berkepala cendawan merah pada kolar kuning
Satu badan 22 mm, dua kelakuan. Kepala merah rata melantun terus balik; kepala cendawan pula terselak ke bawah dan hanya melepaskan bila ia dipulas.

Kenapa Arduino membaca butang sebagai ditekan sedangkan tiada siapa menyentuhnya?

Pin input Arduino mengukur voltan, dan switch yang sedang rehat tidak membekalkan voltan langsung. Pin yang diset kepada INPUT biasa tidak bersambung kepada apa-apa selain penguat pengesan berimpedans tinggi di dalam cip, jadi voltannya ditentukan oleh apa sahaja cas sesat yang sampai kepadanya β€” dengungan sesalur yang merambat melalui tangan anda, wayar di sebelahnya yang sedang bersuis. Ia terbaca HIGH, kemudian LOW, kemudian HIGH. Itulah input terapung, dan butang yang menekan dirinya sendiri sentiasa perkara ini.

Ubatnya ialah memberi pin itu voltan yang pasti sepanjang masa switch tidak membuat apa-apa. pinMode(pin, INPUT_PULLUP) menghidupkan perintang 20–50 kΞ© di dalam ATmega328P, antara pin itu dengan 5 V. Dengan switch terbuka, perintang itu memegang pin itu tegap pada 5 V, jadi ia terbaca HIGH setiap kali. Wayarkan sebelah lagi switch itu ke GND, dan menekannya menyambungkan pin kepada 0 V melalui pecahan satu ohm β€” beberapa puluh kiloohm tidak mampu melawan litar pintas yang terus begitu, jadi pin itu terjun ke LOW.

Itulah sebabnya tekan terbaca LOW, yang nampak terbalik selama lebih kurang satu petang sahaja. Tukarannya: butang dua wayar, tanpa perintang luar, dan aras yang pasti pada setiap saat.

Dua kaki mana pada switch tactile 6×6 yang anda sebenarnya guna?

Switch tactile 6×6 ada empat kaki tetapi hanya dua litar. Kakinya keluar dari badan dua sebelah, dan setiap kaki bersambung di dalam housing kepada kaki yang bertentangan dengannya merentas badan β€” ditekan atau tidak, pasangan bertentangan itu satu keping logam yang sama. Kerja plunger itu ialah merentaskan satu pasangan bertentangan kepada pasangan yang satu lagi. Hokuriku, Omron dan SCHURTER kesemuanya mencetak litar dalaman yang sama untuk bahagian 6×6 mereka, dan corak lubang 6.5 mm merentas dan 4.5 mm memanjang yang sama, jadi pasangan yang bersambung itu sentiasa pasangan yang lebar.

Jadi pasangan yang perlu dielakkan ialah pasangan yang berhadapan merentas badan. Wayarkan dua itu dan anda baru sahaja menyolder litar pintas kekal merentas input anda: pin itu duduk pada 0 V dari saat kuasa dihidupkan dan butang itu terbaca ditekan selama-lamanya, iaitu tiket “butang saya tersangkut” yang paling kerap kami terima. Pilih dua kaki yang bertentangan secara pepenjuru dan anda dijamin dapat satu kaki daripada setiap litar, tidak kira arah mana switch itu tercucuk masuk ke dalam board. Cucuk ia merentangi parit tengah breadboard dan peraturan itu bertukar jadi sesuatu yang boleh anda lihat: dua kaki yang berkongsi baris bernombor yang sama itulah pasangan yang bersambung, jadi ambil dua wayar anda dari baris yang berlainan.

Peraturan yang sama menguasai setiap switch miniature berempat kaki, termasuklah butang bertopi 12×12: dua jalur dalaman yang sama, pepenjuru yang sama, cuma sasaran di atasnya lebih besar. Kakinya duduk lebih renggang berbanding 6×6, jadi luruskan dulu sebelum menekan dan tolak lurus ke bawah β€” menggoyang switch tactile masuk ke dalam board akan mengembangkan kakinya, dan kaki yang bengkok itulah satu-satunya cara membunuh sesuatu bahagian yang langsung tiada elektronik di dalamnya.

Kartun pandangan atas switch tactile 6x6 hitam dengan keratan menunjukkan dua jalur dalaman perak, setiap satu menyambungkan sepasang kaki yang berhadapan, satu garis teal merentas sepasang kaki pepenjuru dan pangkah merah pada kedua-dua pasangan yang berhadapan
Setiap kaki memang sudah bersambung kepada kaki yang bertentangan dengannya merentas badan. Ambil mana-mana pasangan pepenjuru β€” jangan sekali-kali dua kaki yang berhadapan.
Dari Ke Kenapa
GND Uno Rel negatif biru breadboard Satu suapan ground yang dikongsi seluruh binaan
Tactile 6×6, satu kaki D2 Uno Butang raw, supaya anda nampak bounce-nya
Tactile 6×6, kaki yang bertentangan pepenjuru Rel negatif biru Menekannya menarik D2 turun ke 0 V
Butang bertopi 12×12, satu kaki D3 Uno Butang yang di-debounce
Butang bertopi 12×12, kaki yang bertentangan pepenjuru Rel negatif biru Corak dua wayar yang sama
E-stop LA38, satu terminal skru NC D4 Uno Tertutup selagi selamat, jadi D4 duduk LOW
E-stop LA38, terminal skru NC yang satu lagi Rel negatif biru Sebarang putus pada pasangan ini terbaca HIGH

Kesemua tujuh sambungan itu ialah jumper male-to-male biasa: header Uno ialah soket, lubang breadboard ialah soket, dan terminal skru LA38 mengapit hujung pin male yang telanjang β€” tolak pin itu betul-betul masuk ke bawah pengapit supaya skrunya menggigit logam dan bukan housing plastik. Panduan wayar jumper kami menyelesaikan aritmetik gender itu sampai habis.

Satu suapan ground itu berbaloi dengan jumpernya. Uno R3 menawarkan tiga soket GND kesemuanya dan binaan ini sudah pun mahukan tiga ground; ambil satu wayar dari GND ke rel negatif biru breadboard, dan setiap switch, sensor dan modul yang anda tambah selepas itu akan mengambil ground dari rel tersebut dan bukannya berebut soket pada board. Komponen hanya bersetuju tentang apa maksud LOW bila mereka bersetuju di mana sifar berada, dan persetujuan itulah rel ground.

Macam mana nak debounce butang supaya ia betul-betul berfungsi?

Setiap switch pada halaman ini, dari tactile 6×6 hinggalah ke LA38, menutup dengan menekan dua keping logam berspring rapat bersama, jadi bila keduanya bertemu ia melantun terpisah dan bertemu semula beberapa kali sebelum tenang. Jack Ganssle meletakkan lapan belas switch pada oscilloscope dan mengukurnya: purata 1,557 Β΅s bounce dan 6,200 Β΅s pada keadaan paling teruk merentas enam belas switch biasa, dengan satu spesimen yang buruk berceloteh sampai 157 ms. Uno menjalankan loop() puluhan ribu kali sesaat, jadi ia membaca setiap lantunan itu sebagai satu tekanan yang baharu.

Di situlah datangnya 40 ms di bawah, bukan daripada tahyul: ia menelan kes paling teruk 6.2 ms sebanyak enam kali ganda, dan ia masih jauh di bawah kira-kira 100 ms iaitu takat seseorang mula terasa butang itu lembab.

Pembetulan salah yang menggoda ialah delay(50) di dalam loop(). Ia menjadi pada sketch yang tidak buat apa-apa yang lain, dan ia meracuni setiap projek yang disentuhnya: selama 50 ms itu Arduino tidak boleh membaca butang kedua, memeriksa e-stop atau menyegarkan paparan. Catat milisaat ketika aras itu bergerak, dan enggan mempercayai aras baharu tadi sehingga ia bertahan diam. millis() dikira oleh pemasa perkakasan yang berjalan sama ada kod anda memerhatikannya atau tidak.

// Push button pada Arduino Uno: raw lawan debounced, serta e-stop fail-safe.
// Setiap switch cuma memintaskan pinnya ke GND, jadi tiada perintang luar.
//   D2  tactile 6x6, kaki PEPENJURU: satu ke D2, satu ke rel GND     (raw)
//   D3  tactile 12x12, kaki PEPENJURU: satu ke D3, satu ke rel GND   (debounced)
//   D4  pasangan NC e-stop: satu terminal skru ke D4, satu ke rel GND
//       rel GND = rel biru breadboard, disuap sekali dari satu pin GND Uno
//   D13 LED atas board menjadi ganti kepada mesin

const uint8_t PIN_RAW   = 2;
const uint8_t PIN_CLEAN = 3;
const uint8_t PIN_ESTOP = 4;

// Ganssle mengukur bounce 6.2 ms pada kes paling teruk merentas 16 switch biasa.
// 40 ms melangkaui itu dengan margin yang lebar dan masih di bawah ~100 ms,
// iaitu takat seseorang mula terasa butang itu lembab.
const unsigned long DEBOUNCE_MS = 40;

unsigned long rawCount = 0, cleanCount = 0;
bool rawLast = HIGH;
bool cleanReading = HIGH;    // apa yang pin itu kata sekarang juga
bool cleanAccepted = HIGH;   // aras yang kita sudah setuju untuk percaya
unsigned long cleanChangedAt = 0;
bool wasHalted = false;

void report() {
  Serial.print(F("raw "));
  Serial.print(rawCount);
  Serial.print(F("   debounced "));
  Serial.println(cleanCount);
}

void setup() {
  Serial.begin(9600);
  pinMode(PIN_RAW,   INPUT_PULLUP);
  pinMode(PIN_CLEAN, INPUT_PULLUP);
  pinMode(PIN_ESTOP, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.println(F("Press each button once, then compare the two counts."));
}

void loop() {
  // --- E-stop dibaca dahulu, setiap pusingan. --------------------------
  // Pasangan NC tertutup selagi semuanya elok, memegang pin pada 0 V. Menghentak
  // kepala cendawan itu membukanya - dan begitu juga wayar yang putus, skru yang
  // longgar atau lead yang tercabut. Setiap satu daripadanya terbaca HIGH, dan
  // setiap satu memberhentikan beban. Itulah maksud fail-safe pada praktiknya.
  bool halted = (digitalRead(PIN_ESTOP) == HIGH);
  digitalWrite(LED_BUILTIN, halted ? LOW : HIGH);
  if (halted != wasHalted) {
    Serial.println(halted ? F("E-STOP OPEN - load off")
                          : F("E-stop closed - load on"));
    wasHalted = halted;
  }
  if (halted) return;   // tiada apa di bawah ini berjalan selagi rantai terbuka

  // --- D2: percaya pin itu sebaik sahaja ia bergerak. ------------------
  bool rawNow = digitalRead(PIN_RAW);
  if (rawLast == HIGH && rawNow == LOW) {   // pull-up kalah: kontak tertutup
    rawCount++;
    report();
  }
  rawLast = rawNow;

  // --- D3: percaya pin itu hanya selepas ia bertahan diam. -------------
  bool cleanNow = digitalRead(PIN_CLEAN);
  if (cleanNow != cleanReading) {    // aras bergerak: mulakan semula jam
    cleanReading = cleanNow;
    cleanChangedAt = millis();
  }
  // millis() terus mengira sendiri, jadi selebihnya loop() tidak pernah
  // tersekat sementara kita menunggu - itulah bezanya dengan delay(40).
  if (millis() - cleanChangedAt >= DEBOUNCE_MS && cleanReading != cleanAccepted) {
    cleanAccepted = cleanReading;
    if (cleanAccepted == LOW) {
      cleanCount++;
      report();
    }
  }
}

Ia dikompil menjadi 2,722 bait, 8% daripada flash Uno. Buka Serial Monitor pada 9600 baud, tekan setiap butang sepuluh kali dan baca kaunternya: yang di-debounce berkata sepuluh, yang raw berkata lebih. Jurang itulah bounce.

Dengan e-stop yang belum lagi diwayarkan, sketch itu akan duduk mengumumkan E-STOP OPEN sambil mengabaikan kedua-dua butang. Itu bukan sketch yang rosak, itu fail-safe sedang membaca litar terbuka tepat seperti yang direka β€” dan itulah bukti terpantas bahawa logiknya berfungsi. Turunkan satu jumper dari D4 ke rel negatif untuk mengganti kontak yang tertutup, dan selebihnya binaan itu pun hidup.

Kartun perbandingan bentuk gelombang, satu garis navy gelap pecah menjadi enam pancang bergerigi di sebelah kiri dan satu anak tangga bersih di sebelah kanan, setiap perubahan dilingkari teal
Satu tekanan yang sama, dilihat dua kali. Raw, kontak itu berceloteh antara HIGH dan LOW beberapa kali; debounced, sketch menunggu garisan itu bertahan diam dan melaporkan satu tekanan.

Celoteh kontak itu sendiri, di atas oscilloscope:

Macam mana nak wayarkan butang emergency stop panel-mount kepada Arduino?

Emergency stop LA38 dijatuhkan menerusi lubang panel 22 mm, dan blok kontak di belakangnya menyediakan sepasang NO dan sepasang NC pada terminal skru. Ambil pasangan NC: satu terminal ke D4, satu lagi ke GND, dengan D4 pada INPUT_PULLUP. Kontak yang tertutup memegang D4 pada 0 V selagi kepalanya terkeluar; hentak ia dan selaknya terbuka, pull-up menang, D4 naik HIGH dan beban pun berhenti. Wayar yang putus pun berbuat perkara yang sama.

Cari pasangan NC itu sebelum anda mewayarkannya. Blok itu menandakan fungsinya di sebelah skru, NC pada pasangan yang anda mahu dan NO pada yang satu lagi, dan di mana tandanya sudah pudar atau bernombor dan bukan berhuruf, switch itu sendiri akan memberitahu anda: letakkan multimeter pada mod continuity merentas satu pasangan, dan pasangan yang berbunyi bip ketika kepala cendawan terkeluar itulah yang normally closed. Uno pun boleh menjawabnya β€” wayarkan satu pasangan ke D4 dan GND, muat naik sketch di atas, dan pasangan yang melaporkan beban ON sedangkan tiada apa yang ditekan itulah NC. Teka salah di sini memberi anda tepat-tepat e-stop berwayar NO yang diterangkan tadi: sempurna di atas meja, senyap bila ia betul-betul diperlukan.

Baca bahagian ini sebelum anda memasangnya pada apa-apa yang bergerak. Emergency stop pada input Arduino memberhentikan kod anda. Ia tidak memberhentikan motor, pemanas atau spindle: semuanya itu masih berkuasa, dan sketch yang crash atau driver yang terselak hidup oleh logiknya sendiri akan terus menjalankannya walaupun butang itu ditekan sepenuhnya. E-stop mesin yang sebenar memutuskan bekalan aktuator itu sendiri, di dalam laluan kuasa, di tempat perisian tiada hak bersuara β€” panduan keselamatan relay kami merangkumi bahagian tersebut. Wayarkan input Arduino itu juga, tetapi jangan sesekali sebagai ganti.

Blok kontak LA38 juga membawa kadaran pada aras sesalur utama, dan itu bukan satu jemputan. Segala-galanya di sini ialah logik 5 V; pendawaian sesalur ialah kerja juruelektrik bertauliah dan di luar skop. Untuk mensuis bekalan mesin bengkel itu sendiri, kotak start/stop KAO-5M yang tertutup ialah bahagian yang betul β€” suis kuasa, bukan bahagian GPIO.

Lihat LA38 itu sendiri secara dekat:

Apakah empat jenis terminal butang?

Terminal sesebuah butang ialah bahagian yang disambungkan wayar anda kepadanya, dan ia yang menentukan alat apa yang kerja itu perlukan.

Terminal Rupanya Cara menyambung kepadanya Contoh
Kaki through-hole Kaki perak yang bengkok, dua sebelah Cucuk ke dalam breadboard, atau solder Tactile 6×6
Solder lug Tab logam rata yang berlubang Cangkuk wayar menerusi lubang itu dan solder R13-507
Terminal skru Skru perak di bawah penutup jernih Apit wayar telanjang atau hujung pin male E-stop LA38
Pin header modul Tiga pin bersudut tepat pada PCB kecil Jumper male-to-female, tanpa solder Modul sensor butang

Hanya modul itu sahaja yang bebas solder di kedua-dua hujung. Sediakan diri untuk R13-507: dua solder lugnya perlukan soldering iron, sedikit wayar dan beberapa minit bersama panduan solder kami. Datasheetnya memberi kadaran 6 A pada 125 VAC dan 3 A pada 250 VAC menerusi lubang 16 mm β€” jauh melebihi apa-apa yang pin 5 V akan minta daripadanya.

Kadaran itulah yang memisahkan suis isyarat daripada suis kuasa, dan ia berayun besar merentas halaman ini. Butang bertopi 12×12 berkadaran 0.1 A pada 12 V DC, satu per enam puluh daripada arus yang sanggup dibawa oleh R13-507. Kedua-dua angka itu tidak penting untuk binaan di atas, sebab pin INPUT_PULLUP menarik paling banyak suku miliampere menerusi kontak tersebut. Ia mula penting saat anda memutuskan untuk menjalankan jalur LED, pam atau kipas menerusi butang itu pula: kontak yang terkurang saiz akan mengeluarkan arka, berlubang dan akhirnya berkimpal, dan kontak yang berkimpal itu tersangkut ON β€” cara paling teruk untuk apa-apa yang ada motor di dalamnya gagal. Beri beban itu relay atau MOSFET, dan biarkan butang hanya memberitahu bila.

Kesilapan biasa yang kami lihat daripada pelanggan sebenar

Mewayarkan switch tactile merentas sepasang kaki yang berhadapan. Butang itu terbaca ditekan sebaik sahaja board dihidupkan dan tiada apa yang anda ubah dalam kod dapat menolong, sebab dua kaki itu memang sudah satu keping logam yang sama. Alihkan satu wayar ke kaki yang bertentangan secara pepenjuru.

Membiarkan pin pada INPUT biasa. Bacaannya merayau, sketch itu terpicu sendiri bila ada tangan menghampiri, dan ia nampak macam switch yang rosak. Satu perkataan β€” INPUT_PULLUP β€” membuang seluruh kelas kerosakan itu.

Debounce dengan delay(). Butang itu jadi elok, kemudian butang kedua pula mula tercicir tekanan dan paparan tersekat-sekat. Delay itu memang tidak pernah percuma; ia cuma menghantar bilnya kepada bahagian sketch yang lain.

Mengambil e-stop daripada pasangan NO. Ia diuji dengan sempurna di atas meja dan gagal secara senyap di lapangan, sebab wayar yang putus dan butang yang tiada siapa tekan nampak serupa sahaja pada pengawal. Alihkan ia ke NC dan kegagalan itu bertukar menjadi henti.

Soalan Lazim

Pin mana pada push button switch 4 pin yang saya perlu sambung?

Mana-mana dua yang duduk bertentangan secara pepenjuru. Dua kaki yang berhadapan merentas badan sudah bersambung di dalam, jadi mewayarkan dua itu memberi anda litar pintas kekal dan butang yang sentiasa terbaca ditekan.

Perlukah saya perintang untuk push button Arduino?

Bukan perintang luar. pinMode(pin, INPUT_PULLUP) menghidupkan perintang 20–50 kΞ© di dalam ATmega328P yang memegang pin itu pada 5 V, jadi switch itu hanya perlu menyambungkan pin kepada GND. Tekan pun terbaca LOW.

Apa beza push switch momentary dengan latching?

Switch momentary tertutup hanya selagi anda memegangnya. Yang latching pula kekal di tempat anda menolaknya: emergency stop LA38 mengunci ke bawah bila dihentak dan hanya terlepas bila kepala cendawannya dipulas.

Kenapa butang emergency stop merah diwayarkan normally closed?

Supaya kegagalan memberhentikan mesin. Kontak NC mengalirkan arus selagi semuanya elok, dan menekan butang membukanya. Wayar yang putus, skru yang terlonggar atau lead yang tercabut turut membukanya, jadi setiap kerosakan pendawaian menghasilkan satu henti dan bukan butang yang senyap-senyap sudah tidak berfungsi.

Berapa lama patut debounce butang Arduino?

Sekitar 40 ms untuk switch biasa. Bounce yang diukur pada kontak biasa memuncak sekitar 6 ms, jadi 40 ms meninggalkan margin yang lebar sambil kekal di bawah takat seseorang perasan kelewatannya. Ukur masanya dengan millis(), jangan sekali-kali dengan delay().

Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *