DescriptionDigital Pins With InterruptsThe first parameter to attachIn การแปล - DescriptionDigital Pins With InterruptsThe first parameter to attachIn ไทย วิธีการพูด

DescriptionDigital Pins With Interr

Description

Digital Pins With Interrupts

The first parameter to attachInterrupt is an interrupt number. Normally you should use digitalPinToInterrupt(pin) to translate the actual digital pin to the specific interrupt number. For example, if you connect to pin 3, use digitalPinToInterrupt(3) as the first parameter to attachInterrupt.

Board Digital Pins Usable For Interrupts
Uno, Nano, Mini, other 328-based 2, 3
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, other 32u4-based 0, 1, 2, 3, 7
Zero all digital pins, except 4
Due all digital pins
Note

Inside the attached function, delay() won't work and the value returned by millis() will not increment. Serial data received while in the function may be lost. You should declare as volatile any variables that you modify within the attached function. See the section on ISRs below for more information.

Using Interrupts

Interrupts are useful for making things happen automatically in microcontroller programs, and can help solve timing problems. Good tasks for using an interrupt may include reading a rotary encoder, or monitoring user input.

If you wanted to insure that a program always caught the pulses from a rotary encoder, so that it never misses a pulse, it would make it very tricky to write a program to do anything else, because the program would need to constantly poll the sensor lines for the encoder, in order to catch pulses when they occurred. Other sensors have a similar interface dynamic too, such as trying to read a sound sensor that is trying to catch a click, or an infrared slot sensor (photo-interrupter) trying to catch a coin drop. In all of these situations, using an interrupt can free the microcontroller to get some other work done while not missing the input.

About Interrupt Service Routines

ISRs are special kinds of functions that have some unique limitations most other functions do not have. An ISR cannot have any parameters, and they shouldn't return anything.

Generally, an ISR should be as short and fast as possible. If your sketch uses multiple ISRs, only one can run at a time, other interrupts will be executed after the current one finishes in an order that depends on the priority they have. millis() relies on interrupts to count, so it will never increment inside an ISR. Since delay() requires interrupts to work, it will not work if called inside an ISR. micros() works initially, but will start behaving erratically after 1-2 ms. delayMicroseconds() does not use any counter, so it will work as normal.

Typically global variables are used to pass data between an ISR and the main program. To make sure variables shared between an ISR and the main program are updated correctly, declare them as volatile.

For more information on interrupts, see Nick Gammon's notes.

Syntax

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); (recommended)
attachInterrupt(interrupt, ISR, mode); (not recommended)
attachInterrupt(pin, ISR, mode) ; (not recommended Arduino Due, Zero only)
Parameters

interrupt: the number of the interrupt (int)
pin: the pin number (Arduino Due, Zero only)
ISR: the ISR to call when the interrupt occurs; this function must take no parameters and return nothing. This function is sometimes referred to as an interrupt service routine.
mode:
defines when the interrupt should be triggered. Four contstants are predefined as valid values:
LOW to trigger the interrupt whenever the pin is low,
CHANGE to trigger the interrupt whenever the pin changes value
RISING to trigger when the pin goes from low to high,
FALLING for when the pin goes from high to low.
The Due board allows also:
HIGH to trigger the interrupt whenever the pin is high.
(Arduino Due, Zero only)
Returns

none

Example

int pin = 13;
volatile int state = LOW;

void setup() {
pinMode(pin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(pin), blink, CHANGE);
}

void loop() {
digitalWrite(pin, state);
}

void blink() {
state = !state;
}
[Get Code]
Interrupt numbers

Normally you should use digitalPinToInterrupt(pin), rather than place interrupt an number directly into your sketch. The specific pins with interrupts, and their mapping to interrupt number varies on each type of board. Direct use of interrupt numbers may seem simple, but it can cause compatibility trouble when your sketch is run on a different board.

However, older sketches often have direct interrupt numbers. Often number 0 (for digital pin 2) or number 1 (for digital pin 3) were used. The table below shows the available interrupt pins on various boards.

Board int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3
Mega2560 2 3 21 20 19 18
32u4 based (e.g Leonardo, Micro) 3 2 0 1 7
Due, Zero (see below)
The Arduino Due board has powerful interrupt capabilities that allows you to attach an interrupt function on all available pins. You can directly specify the pin number in attachInterrupt().

The Arduino Zero board allows you to attach an interrupt function on all available pins except for pin 4. You can directly specify the pin number in attachInterrupt().

See also

detachInterrupt
Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
คำอธิบายขัดจังหวะหมุดดิจิตอลด้วยพารามิเตอร์แรกเป็น attachInterrupt หมายเลขขัดจังหวะได้ โดยปกติคุณควรใช้ digitalPinToInterrupt(pin) แปล pin ดิจิตอลจริงกับจำนวนเฉพาะขัดจังหวะ ตัวอย่าง ถ้าคุณเชื่อมต่อกับขา 3 ใช้ digitalPinToInterrupt(3) เป็นพารามิเตอร์แรกเพื่อ attachInterruptบอร์ดดิจิตอลหมุดที่ใช้สำหรับขัดจังหวะโน นาโน มินิ อื่น ๆ ตาม 328 2, 3ร็อค Mega2560, MegaADK 2, 3, 18, 19, 20, 21ไมโคร Leonardo, 0 อื่น ๆ โดย 32u4, 1, 2, 3, 7ศูนย์หมุดทั้งหมดดิจิตอล ยกเว้น 4ครบกำหนดหมุดดิจิทัลทั้งหมดหมายเหตุภายในฟังก์ชันแนบ delay() ไม่ทำงาน และจะไม่มีเพิ่มค่าที่ส่งกลับ โดย millis() ข้อมูลที่ได้รับในการทำงานประจำอาจจะหายไป คุณควรประกาศเป็นระเหยตัวแปรใด ๆ ที่คุณปรับเปลี่ยนภายในฟังก์ชันที่แนบ ดูส่วนบน ISRs ด้านล่างสำหรับข้อมูลเพิ่มเติมใช้การขัดจังหวะขัดจังหวะมีประโยชน์สำหรับการทำให้สิ่งที่เกิดขึ้นโดยอัตโนมัติในโปรแกรมไมโครคอนโทรลเลอร์ และสามารถช่วยแก้ปัญหาการกำหนดเวลา งานดีสำหรับการใช้การขัดจังหวะอาจรวมอ่านเข้าโรตารี่ หรือตรวจสอบผู้ใช้ป้อนข้อมูลถ้าคุณต้องการมั่นใจว่า โปรแกรมจะจับพัลส์จาก encoder โรตารี่ นั้นมันไม่เคยคิดถึงชีพจร มันจะทำให้มันยุ่งยากมากในการเขียนโปรแกรมเพื่อทำสิ่งอื่น เนื่องจากโปรแกรมจะต้องสำรวจบรรทัดเซ็นเซอร์ของตัวเข้ารหัส การจับการกะพริบเมื่อเกิดตลอดเวลา เซนเซอร์อื่น ๆ มีอินเตอร์เฟซคล้ายแบบไดนามิกมากเกินไป เช่นพยายามอ่านเซ็นเซอร์เสียงที่พยายามจับคลิก หรือการเซ็นเซอร์ช่องอินฟราเรด (ภาพถ่าย-interrupter) พยายามที่จะจับวางเหรียญ ในสถานการณ์เหล่านี้ ใช้การขัดจังหวะสามารถฟรีไมโครคอนโทรลเลอร์จะทำงานอื่น ๆ ที่ทำในขณะที่การป้อนข้อมูลที่ขาดหายไปไม่ได้เกี่ยวกับคำสั่งบริการการขัดจังหวะISRs ชนิดพิเศษของฟังก์ชันที่มีข้อจำกัดบางอย่างเฉพาะที่ไม่มีฟังก์ชันอื่นๆ ได้ ISR ไม่มีพารามิเตอร์ใด ๆ และพวกเขาไม่ควรส่งคืนอะไรทั่วไป ISR ควรจะ เป็นระยะสั้น และเร็ว ที่สุด ถ้าร่างการใช้หลาย ISRs เดียวสามารถรันครั้ง interrupts อื่น ๆ จะดำเนินการหลังปัจจุบันหนึ่งเสร็จสิ้นตามลำดับที่ขึ้นอยู่กับระดับความสำคัญจะมี millis() อาศัย interrupts การนับ เพื่อที่จะไม่เพิ่มค่าภายในตัว ISR. ตั้งแต่ delay() ต้อง interrupts การทำงาน มันจะไม่ทำงานถ้าเรียกภายใน ISR. การ micros() ทำงานเริ่มแรก แต่จะเริ่มผิดสังเกตหลังจาก 1-2 นางสาว delayMicroseconds() ใช้นับใด ๆ ดังนั้นมันจะทำงานตามปกติโดยทั่วไปตัวแปรส่วนกลางที่ใช้ส่งผ่านข้อมูลระหว่างโปรแกรมหลักและ ISR ให้แน่ใจว่า ตัวแปรที่ใช้ร่วมกันระหว่างโปรแกรมหลักและ ISR มีการปรับปรุงอย่างถูกต้อง ประกาศนั้นเป็นระเหยสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ interrupts ดูหมายเหตุเล่นนิคไวยากรณ์attachInterrupt(digitalPinToInterrupt(pin), ISR โหมด), (แนะนำ)attachInterrupt (ขัดจังหวะ ISR โหมด), (ไม่แนะนำ)attachInterrupt (pin, ISR โหมด), (ไม่แนะนำให้ครบกำหนดสืบ ศูนย์เท่านั้น)พารามิเตอร์ขัดจังหวะ: จำนวนของสัญญาณขัดจังหวะ (int)pin: หมายเลข pin (กำหนดสืบ ศูนย์เท่านั้น)ISR: ISR เรียกขัดจังหวะเกิดขึ้น ฟังก์ชันนี้ต้องใช้พารามิเตอร์ไม่กลับไม่ ฟังก์ชันนี้บางครั้งเรียกว่าขั้นตอนการบริการการขัดจังหวะโหมด: กำหนดเมื่อขัดจังหวะที่ควรทริกเกอร์ Contstants สี่กำหนดล่วงหน้าเป็นค่าที่ถูกต้อง:ต่ำเพื่อทริกเกอร์การขัดจังหวะเมื่อ pin คือต่ำทำให้เกิดการขัดจังหวะเมื่อ pin เปลี่ยนค่าการเปลี่ยนแปลงเพิ่มขึ้นเพื่อทริกเกอร์เมื่อ pin ต่อจากต่ำไปสูงตกในเมื่อต่อ pin จากสูงไปต่ำคณะกรรมการกำหนดให้ยัง:สูงทำให้เกิดการขัดจังหวะเมื่อ pin จะสูง(ครบกำหนดสืบ ศูนย์เท่านั้น)ส่งคืนไม่มีตัวอย่างint pin = 13รัฐ int ระเหย =ต่ำ{ยกเลิก setup() pinMode (ตรึง ผล); attachInterrupt(digitalPinToInterrupt(pin) กะพริบ การเปลี่ยนแปลง);}{ยกเลิก loop() digitalWrite (pin รัฐ);}{ยกเลิก blink() สถานะ =! รัฐ}[รับโค้ด]ขัดจังหวะหมายเลขโดยปกติคุณควรใช้ digitalPinToInterrupt(pin) แทนวางขัดจังหวะหมายเลขโดยตรงลงในร่างของคุณ หมุดเฉพาะกับ interrupts และการแม็ปขนัดหมายเลขแตกต่างกันไปในแต่ละชนิดของคณะกรรมการ ใช้โดยตรงของสัญญาณขัดจังหวะตัวเลขอาจดูเหมือนง่าย แต่ก็สามารถทำให้ปัญหาความเข้ากันได้เมื่อร่างของรันบนกระดานอื่นอย่างไรก็ตาม ร่างเก่ามักจะมีหมายเลขตรงขัดจังหวะ มักหมายเลข 0 (สำหรับ 2 pin ดิจิตอล) หรือใช้หมายเลข 1 (สำหรับดิจิตอลปิ่น 3) ตารางด้านล่างแสดงการขัดจังหวะว่างยึดหมุดในบอร์ดต่าง ๆคณะ int.0 int.1 int.2 int.3 int.4 int.5โน อีเทอร์เน็ต 2 3 Mega2560 2 3 21 20 19 1832u4 ตาม (เช่น Leonardo, Micro) 3 2 0 1 7 ครบกำหนด ศูนย์ (ดูด้านล่าง)คณะกรรมการสืบครบกำหนดมีความสามารถในการขัดจังหวะที่มีประสิทธิภาพที่ช่วยให้คุณสามารถแนบฟังก์ชันการขัดจังหวะในมีหมุดทั้งหมด คุณสามารถระบุหมายเลข pin ใน attachInterrupt() โดยตรงคณะกรรมการศูนย์สืบได้แนบฟังก์ชันการขัดจังหวะในหมุดที่ว่างทั้งหมดยกเว้น pin 4 คุณสามารถระบุหมายเลข pin ใน attachInterrupt() โดยตรงดูdetachInterruptบ้านอ้างอิงการแก้ไข ข้อเสนอแนะ และเอกสารใหม่ควรลงรายการบัญชีเพื่อข้อความอ้างอิงสืบได้รับใบอนุญาตภายใต้ใบอนุญาตสร้างสรรค์คอมมอนส์แสดงที่มา-ShareAlike 3.0 ตัวอย่างรหัสในการอ้างอิงถูกนำออกใช้ในโดเมนสาธารณะ
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
คำอธิบายPins ดิจิตอลด้วย Interrupts พารามิเตอร์แรกที่จะ attachInterrupt เป็นหมายเลขขัดจังหวะ ปกติคุณควรใช้ digitalPinToInterrupt (ขา) ในการแปลขาดิจิตอลที่แท้จริงเฉพาะหมายเลขขัดจังหวะ ตัวอย่างเช่นถ้าคุณเชื่อมต่อกับขา 3 ใช้ digitalPinToInterrupt (3) เป็นพารามิเตอร์แรกที่ attachInterrupt. คณะ Pins ดิจิตอลใช้สอยสำหรับ Interrupts Uno, นาโน, มินิ, อื่น ๆ 328 ตาม 2, 3 ล้าน Mega2560, MegaADK 2, 3, 18, 19, 20, 21 ไมโครเลโอนาร์โดอื่น ๆ ตาม 32u4 0, 1, 2, 3, 7 ศูนย์หมุดดิจิตอลทั้งหมดยกเว้น 4 เนื่องจากหมุดดิจิตอลทั้งหมดหมายเหตุภายในฟังก์ชั่นที่แนบมาล่าช้า() จะไม่ทำงานและ ค่าส่งกลับโดย MILLIS () จะไม่เพิ่มขึ้น ข้อมูลแบบอนุกรมที่ได้รับในขณะที่ในการทำงานอาจจะหายไป คุณควรจะประกาศเป็นตัวแปรที่มีความผันผวนใด ๆ ที่คุณปรับเปลี่ยนฟังก์ชั่นภายในที่แนบมา ดูในส่วนที่เกี่ยวกับ ISRs ด้านล่างสำหรับข้อมูลเพิ่มเติม. ใช้ Interrupts Interrupts มีประโยชน์สำหรับการทำสิ่งที่เกิดขึ้นโดยอัตโนมัติในโปรแกรมไมโครคอนโทรลเลอร์และสามารถช่วยแก้ปัญหาการกำหนดเวลา งานที่ดีสำหรับการใช้ขัดจังหวะอาจรวมถึงการอ่านการเข้ารหัสแบบหมุนหรือการตรวจสอบผู้ใช้ป้อน. ถ้าคุณต้องการที่จะให้แน่ใจว่าโปรแกรมที่มักจะจับชีพจรจากการเข้ารหัสแบบหมุนเพื่อที่จะไม่เคยพลาดการเต้นของชีพจรก็จะทำให้มันยุ่งยากมากที่จะ เขียนโปรแกรมเพื่อทำอะไรอย่างอื่นเพราะโปรแกรมจะต้องสำรวจอย่างต่อเนื่องสายเซ็นเซอร์สำหรับการเข้ารหัสในการสั่งซื้อที่จะจับพัลส์เมื่อพวกเขาเกิดขึ้น เซ็นเซอร์อื่น ๆ มีอินเตอร์เฟซแบบไดนามิกที่คล้ายกันมากเกินไปเช่นการพยายามอ่านเซ็นเซอร์เสียงที่พยายามที่จะจับการคลิกหรือเซ็นเซอร์ช่องอินฟราเรด (ภาพขัดขวาง) พยายามที่จะจับเหรียญลดลง ในทุกสถานการณ์เหล่านี้โดยใช้การขัดจังหวะสามารถฟรีไมโครคอนโทรลเลอร์ที่จะได้รับบางงานอื่น ๆ ทำได้ในขณะที่ไม่ได้หายไปป้อนข้อมูล. เกี่ยวกับการปฏิบัติขัดจังหวะบริการISRs ชนิดพิเศษของฟังก์ชั่นที่มีข้อ จำกัด ที่ไม่ซ้ำกันบางฟังก์ชั่นอื่น ๆ ส่วนใหญ่ไม่ได้ ISR ไม่สามารถมีพารามิเตอร์ใด ๆ และพวกเขาไม่ควรกลับอะไร. โดยทั่วไป ISR ควรจะเป็นระยะสั้นและเร็วที่สุดเท่าที่เป็นไปได้ หากร่างของคุณใช้ ISRs หลายเพียงคนเดียวสามารถทำงานในเวลาที่ขัดจังหวะอื่น ๆ จะได้รับการดำเนินการหลังจากหนึ่งในปัจจุบันประสบความสำเร็จในการสั่งซื้อที่ขึ้นอยู่กับความสำคัญที่พวกเขามี MILLIS () อาศัยขัดจังหวะการนับดังนั้นมันจะไม่เพิ่มขึ้นภายใน ISR เนื่องจากความล่าช้า () ต้องขัดจังหวะการทำงานก็จะไม่ทำงานหากเรียกว่าภายใน ISR ไมโคร () ทำงานครั้งแรก แต่จะเริ่มต้นพฤติกรรมผิดพลาดหลังจาก 1-2 มิลลิวินาที delayMicroseconds () ไม่ใช้ตัวนับใด ๆ ดังนั้นมันจะทำงานได้ตามปกติ. โดยปกติตัวแปรทั่วโลกจะใช้ในการส่งผ่านข้อมูลระหว่าง ISR และโปรแกรมหลัก . เพื่อให้แน่ใจว่าตัวแปรที่ใช้ร่วมกันระหว่าง ISR และโปรแกรมหลักที่มีการปรับปรุงอย่างถูกต้องประกาศให้เป็นสารระเหยสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการขัดจังหวะดูหมายเหตุนิคของGammon. ไวยากรณ์attachInterrupt (digitalPinToInterrupt (ขา), ISR โหมด); (แนะนำ) attachInterrupt (ขัดจังหวะ ISR โหมด); (ไม่แนะนำ) attachInterrupt (ขา ISR โหมด); (ไม่ได้เนื่องจาก Arduino แนะนำศูนย์เท่านั้น) พารามิเตอร์ขัดขวาง: จำนวนการขัดจังหวะที่ (int) ขา: หมายเลขพิน (Arduino เนื่องจากศูนย์เท่านั้น) ISR ที่: ISR จะเรียกเมื่อขัดจังหวะเกิดขึ้น; ฟังก์ชั่นนี้จะต้องไม่มีพารามิเตอร์และกลับไม่มีอะไร ฟังก์ชั่นนี้บางครั้งเรียกว่าเป็นประจำบริการขัดจังหวะ. โหมด: กำหนดเมื่อขัดจังหวะควรจะเรียก สี่ contstants กำหนดไว้ล่วงหน้าเป็นค่าที่ถูกต้อง: ต่ำที่จะเรียกขัดจังหวะเมื่อใดก็ตามที่ขาอยู่ในระดับต่ำเปลี่ยนที่จะเรียกขัดจังหวะเมื่อใดก็ตามที่ขาเปลี่ยนค่าRISING ที่จะเรียกเมื่อขาไปจากต่ำไปสูงFALLING เมื่อขาไปจากสูงไป . ต่ำคณะกรรมการเนื่องจากช่วยให้เพิ่มเติม:. HIGH ที่จะเรียกขัดจังหวะเมื่อใดก็ตามที่ขาอยู่ในระดับสูง(Arduino เนื่องจากศูนย์เท่านั้น) ส่งกลับไม่มีตัวอย่างขาint = 13; รัฐ int ระเหย = ต่ำ; การติดตั้งเป็นโมฆะ () {pinMode (pin, เอาท์พุท ); attachInterrupt (digitalPinToInterrupt (ขา), วิ่งเปลี่ยน);} ห่วงเป็นโมฆะ () {digitalWrite (ขารัฐ);} พริบเป็นโมฆะ () {รัฐ= รัฐ;} [รับรหัส] หมายเลขขัดจังหวะโดยปกติคุณควรใช้ digitalPinToInterrupt (ขา) มากกว่าจำนวนสถานที่ขัดขวางโดยตรงเข้าไปในร่างของคุณ หมุดเฉพาะกับการขัดจังหวะและการทำแผนที่ของพวกเขาที่จะขัดขวางจำนวนแตกต่างกันไปในแต่ละชนิดของคณะกรรมการ ใช้โดยตรงของตัวเลขการขัดจังหวะอาจดูเหมือนง่าย แต่ก็สามารถก่อให้เกิดปัญหาความเข้ากันได้เมื่อร่างของคุณจะทำงานอยู่บนเรือที่แตกต่างกัน. แต่ภาพวาดเก่ามักจะมีตัวเลขการขัดจังหวะโดยตรง จำนวน 0 บ่อยครั้ง (สำหรับขาดิจิตอล 2) หรือหมายเลข 1 (ขาดิจิตอล 3) ถูกนำมาใช้ ตารางด้านล่างแสดงหมุดขัดจังหวะที่มีอยู่ในบอร์ดต่างๆ. คณะ int.0 int.1 int.2 int.3 int.4 int.5 Uno, อีเธอร์เน็ต 2 3 Mega2560 2 3 21 20 19 18 32u4 (เช่นเลโอนาร์โดไมโคร ) 3 2 0 1 7 เนื่องจากศูนย์ (ดูด้านล่าง) บอร์ด Arduino เนื่องจากมีความสามารถในการขัดจังหวะที่มีประสิทธิภาพที่ช่วยให้คุณสามารถแนบฟังก์ชั่นการขัดจังหวะในขาที่มีอยู่ทั้งหมด คุณโดยตรงสามารถระบุจำนวนขาใน attachInterrupt (). คณะกรรมการศูนย์ Arduino ช่วยให้คุณสามารถแนบฟังก์ชั่นการขัดจังหวะในขาที่มีอยู่ทั้งหมดยกเว้นขา 4. คุณโดยตรงสามารถระบุจำนวนขาใน attachInterrupt (). ดูเพิ่มเติมdetachInterrupt อ้างอิงหน้าแรกการแก้ไขข้อเสนอแนะและเอกสารใหม่ควรจะโพสต์ในฟอรั่ม. ข้อความอ้างอิงของ Arduino ได้รับใบอนุญาตภายใต้ Creative Commons Attribution-เดียวกัน 3.0 ใบอนุญาต ตัวอย่างรหัสในการอ้างอิงมีการเปิดตัวในโดเมนสาธารณะ






























































































การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
รายละเอียด

ดิจิตอลหมุดกับขัดจังหวะ

พารามิเตอร์แรกที่จะ attachinterrupt เป็นการขัดจังหวะ จํานวน โดยปกติแล้วคุณควรใช้ digitalpintointerrupt ( PIN ) แปลเลขดิจิตอลที่แท้จริงให้เฉพาะขัดจังหวะ จํานวน ตัวอย่างเช่น ถ้าคุณเชื่อมต่อกับ pin 3 ใช้ digitalpintointerrupt ( 3 ) เป็นพารามิเตอร์แรก attachinterrupt

บอร์ดดิจิตอลหมุดใช้ขัดจังหวะ
Uno , Nano , Mini ,อื่น ๆตามข้อ 2 , 3
mega2560 megaadk เมกะ , , 2 , 3 , 18 , 19 , 20 , 21
ไมโคร , เลโอนาร์โด้ 32u4 อื่นจาก 0 , 1 , 2 , 3 , 7
0
พินดิจิตอลทั้งหมด ยกเว้น 4 เนื่องจากดิจิตอลทั้งหมดหมุด
ทราบ

ภายในฟังก์ชัน delay() จะแนบ ทำงานไม่คุ้มค่าที่ส่งกลับโดย millis() จะไม่เพิ่มขึ้น ข้อมูลแบบอนุกรมที่ได้รับในขณะทำงานอาจจะหายไปคุณควรประกาศเป็นสารใด ๆที่คุณปรับเปลี่ยนตัวแปรภายในฟังก์ชันที่แนบมา ดูในส่วน isrs ด้านล่างสำหรับข้อมูลเพิ่มเติม

ใช้ขัดจังหวะ

ขัดจังหวะจะเป็นประโยชน์ในการทำสิ่งที่เกิดขึ้นโดยอัตโนมัติในโปรแกรมไมโครคอนโทรเลอร์ และสามารถช่วยแก้ไขปัญหาเวลา งานที่ดีสำหรับการขัดจังหวะอาจรวมถึงการอ่านโรตารี Encoder หรือการตรวจสอบผู้ใช้ป้อน

ถ้าคุณต้องการที่จะประกันว่า โปรแกรมมักจะจับชีพจรจาก Encoder โรตารี่ มันไม่เคยพลาดการเต้นของชีพจร มัน จะทำให้มันยุ่งยากมากที่จะเขียนโปรแกรมให้ทำอย่างอื่นได้ เพราะโปรแกรมจะต้องอย่างต่อเนื่องโพลล์เซนเซอร์เส้นสำหรับเข้ารหัส เพื่อจับกะพริบเมื่อพวกเขาเกิดขึ้น เซ็นเซอร์อื่น ๆมีอินเตอร์เฟซแบบไดนามิกที่คล้ายกันด้วยเช่นการพยายามที่จะอ่านเซ็นเซอร์เสียงที่พยายามจะจับกด หรือช่องอินฟราเรดเซ็นเซอร์ ( ภาพขาดตอน ) พยายามจับเหรียญลดลง ในสถานการณ์เหล่านี้ โดยใช้ไมโครคอนโทรลเลอร์มาขัดจังหวะสามารถฟรีบางอื่น ๆงานทำในขณะที่ไม่พลาดใส่

เรื่องขัดจังหวะบริการตามปกติ

isrs พิเศษชนิดของฟังก์ชันที่ได้เฉพาะบางข้อ จำกัด หน้าที่อื่น ๆส่วนใหญ่ไม่มี ตัวเดียวไม่สามารถมีพารามิเตอร์ใด ๆและพวกเขาจะไม่กลับอะไร

โดยทั่วไปเป็น ISR ควรจะสั้นและรวดเร็วที่สุด ถ้าร่างของคุณใช้หลาย isrs เพียงหนึ่งสามารถเรียกใช้ในเวลาอื่น ๆ การขัดจังหวะจะถูกประหารหลังจากปัจจุบันเสร็จสิ้นในการสั่งซื้อที่ขึ้นอยู่กับสิ่งที่พวกเขามี millis() อาศัยขัดจังหวะการนับ ก็จะไม่เพิ่มขึ้น ในตัวเดียว ตั้งแต่ delay() ต้องขัดจังหวะในการทำงานก็จะไม่ทำงาน ถ้าโทรมาภายในหนึ่งเดียว micros() งานในตอนแรก แต่จะเริ่มของขึ้นหลัง 1-2 อ.delaymicroseconds() ไม่ได้ใช้ใด ๆนับ จึงจะทำงานเป็นปกติ โดยทั่วไปจะใช้ตัวแปรทั่วโลก

เพื่อส่งข้อมูลระหว่าง ISR และโปรแกรมหลัก เพื่อให้แน่ใจว่าใช้ร่วมกันระหว่างตัวแปรเดียวและโปรแกรมหลักได้รับการปรับปรุงอย่างถูกต้อง , ประกาศพวกเขาเป็นสารระเหย .

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการขัดจังหวะ เห็นบันทึกนิคโกง .



attachinterrupt ไวยากรณ์ ( digitalpintointerrupt ISR ( PIN ) , ,โหมด ) ( แนะนำ )
attachinterrupt ( ขัดจังหวะ , เดียว , โหมด ) ; ( ไม่แนะนำ )
attachinterrupt ( โหมดเดียว ) ) ; ( ไม่แนะนำ Arduino จากศูนย์เท่านั้นค่า )


รบกวน : จำนวนของการขัดจังหวะ ( INT )
pin : หมายเลข pin ( Arduino เนื่องจาก , ศูนย์ เท่านั้น )
ISR : ISR เรียกเมื่อขัดจังหวะเกิดขึ้น ฟังก์ชันนี้จะต้องไม่มีพารามิเตอร์และผลตอบแทนอะไรเลยฟังก์ชั่นนี้บางครั้งเรียกว่าขัดจังหวะรูทีนบริการ กำหนดโหมด :

เมื่อขัดจังหวะควรจะเรียก 4 contstants จะกำหนดเป็นค่าเริ่มต้น :
น้อยไปเรียกขัดจังหวะเมื่อขาต่ำ
เปลี่ยนเรียกขัดจังหวะเมื่อขาขึ้นเพื่อกระตุ้นการเปลี่ยนค่า
เมื่อเข็มไปจากต่ำไปสูง
ตกหลุมรักเมื่อเข็มไปจากสูงไปต่ำ
บอร์ดเนื่องจากช่วยให้ยัง :
สูงเพื่อเรียกขัดจังหวะเมื่อขาสูง .
( Arduino จากศูนย์เท่านั้น )
)





ไม่มีตัวอย่าง int pin = 13 ;
ระเหย INT รัฐ = ต่ำ ช่องว่าง setup() {

pinmode ( ขาออก ) ;
attachinterrupt ( digitalpintointerrupt ( ขา ) , กระพริบ , เปลี่ยน ) ;
} {

เป็นโมฆะ loop() digitalwrite ( pin , รัฐ ) ;
} {

เป็นโมฆะ blink() รัฐ = ! รัฐ ;
}
[ ]
ขัดจังหวะได้รับรหัสตัวเลข

โดยปกติแล้วคุณควรใช้ digitalpintointerrupt ( PIN ) แทนรบกวนหมายเลขโดยตรงลงในร่างของคุณ เฉพาะหมุดกับขัดจังหวะ และจำนวนที่แตกต่างกันไปในแต่ละแผนที่ หยุดยั้ง ชนิดของกระดาน โดยตรงใช้ขัดจังหวะตัวเลขอาจดูเหมือนง่าย แต่มันสามารถทำให้เกิดปัญหาความเข้ากันได้เมื่อร่างของคุณจะทำงานในคณะกรรมการต่าง ๆ

แต่ภาพร่างเก่ามักจะมีโดยตรงรบกวนหมายเลข มักจะหมายเลข 0 ( เข็มดิจิตอล 2 ) หรือหมายเลข 1 ( เข็มดิจิตอล 3 ) สถิติที่ใช้ ตารางด้านล่างแสดงมีอยู่ขัดหมุดในบอร์ดต่าง ๆ .

บอร์ด int.0 int.1 int.2 int.3 int.4 int.5
3
mega2560 โน่ , Ethernet 2 2 21 20 19 18
32u4 ตาม ( เช่น เลโอนาร์โด้ ไมโคร ) 3 2 0 1 7
เนื่องจากศูนย์ ( ดูด้านล่าง )
เนื่องจากบอร์ด Arduino มีที่มีประสิทธิภาพที่ช่วยให้คุณสามารถแนบขัดขวางความสามารถในการขัดจังหวะการทำงานบนหมุดทั้งหมดที่มี คุณโดยตรงสามารถระบุรหัสใน attachinterrupt()

Arduino ศูนย์คณะกรรมการช่วยให้คุณสามารถแนบการขัดจังหวะการทำงานบนหมุดที่มีอยู่ทั้งหมดยกเว้นพิน 4 คุณโดยตรงสามารถระบุรหัสใน attachinterrupt() .




detachinterrupt ดูยังบ้านอิง

แก้ไข ข้อเสนอแนะ และเอกสารใหม่ควรจะโพสต์ฟอรั่ม .

ข้อความของ Arduino อ้างอิงภายใต้ใบอนุญาตครีเอทีฟคอมมอนส์ Attribution อนุญาตแบบเดียวกัน 3.0 ใบอนุญาต ตัวอย่างโค้ดในการอ้างอิงจะถูกปล่อยออกสู่สาธารณะ
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: