Onderbrekings in Arduino  Wat is dit? + Effekte en funksies ‚Ė∑ 2021

Arduino is een van die tegnologie√ę wat ons kan gebruik om groot innovasies te programmeer en te skepen bygevoeg dat dit heeltemal prakties is om deur een van ons ontwikkel te word sonder dat ons ‘n paar certificerings in programmering of elektronika benodig.

Daar is soveel besonderhede oor Arduino, dat u tans onderbrekings in u proses kan implementeer. Gedurende hierdie artikel sal ons duidelik en breedvoerig verduidelik wat hierdie onderbrekings werklik is en die belangrikheid daarvan.

Ons sal ook praat oor die funksies daarvan en hoe u vinnig en maklik een kan skep. As u hierna u eie onderbreking wil skep, kan u dit gebruik as basis vir sommige van die projekte wat ons hier noem.

Wat is onderbrekings in Arduino en waarvoor is dit nodig om ‘n toestel te ontwikkel?

Arduino onderbreek

As ons praat oor onderbrekings ons bedoel ‘n kragtige meganisme wat gebruik kan word vir veilige stop, of stop enige toerusting of stelsel onmiddellik. Omdat Arduino dit is ‘n elektroniese stelsel, u moet ook van hierdie meganisme gebruik maak.

Op ‘n meer illustratiewe manier, Ons kan ons voorstel dat ons ‘n tegnologie het wat ons toelaat om ‘n sentrifugale pomp vanaf ‘n PLC te beheerOns het egter nodig om te stop en dit reageer nie op die optrede van die PLC nie, dit is waar ons vinnig na die stop- of onderbrekingsknop moet gaan, dat hy dadelik in hegtenis geneem moet word.

Die groot waarde van hierdie stop l√™ nie net in ‘n veilige werk vir ‘n operateur nie, maar dit kan ook voordele bied, soos:

  • Ingryping om die korrekte verbruik van energie en hulpbronne te kontroleer, wat deur die invoerstatus gevra kan word.
  • Om ‘n stelsel op die punt van botsing te h√™, wat onmiddellik moet ingegryp word, sodat regstellende stappe uitgevoer kan word.
  • Gaan die pulse na wat vanaf die verwerkers gestuur word, As gevolg van stelselmatige konsultasie, sal ons dalk nie verkorte voorraadpulse opmerk nie.

Aan die ander kant, hierdie onderbrekings as dit nie geprogrammeer en geaktiveer word nie kan ‘n ernstige probleem wees, wat die stelsel en verwerker onstabiliteit veroorsaak, die onderbreking van gebeure wat perfek uitgevoer is. Hierdie tipe onderbrekings kan ISR genoem word volgens die akroniem in Engels, “Onderbrekingsdiensroetine.”

Vanuit ‘n meer tegniese oogpunt, hierdie onderbrekings werk deur ‘n normale verwerker en programvloei wat onderbreek word, waarvan die take en aksies wat gestuur word nie in ag geneem word nie, die enigste funksie van die ISR uit te voer.

Effekte van onderbreking in Arduino Hoe be√Įnvloed dit die werking van ‘n projek?

Arduino onderbreek

Onderbrekings het ‘n positiewe invloed op alle projekte, hoewel dit wel duidelik as gevolg van die korrekte gebruik daarvan. ‘N Stelsel kan meer as een onderbrekingslyn bevat, die gebruik daarvan hang af van die behoeftes en prioriteite. As ons ‘n stelsel en verwerker het wat ‘n stel take op ‘n normale en deurlopende manier uitvoer, maar ons wil h√™ dat dit ander aktiwiteite moet uitvoer waarvan die waarde en belangrikheid groter is as die vorige, die ISR moet bestuur word.

Hoe dit werk, kan op ‘n basiese manier deur middel van die volgende lyste verduidelik word:

  • Kanselleer alle opdragte van die masjiene wat aan die skakelaar gekoppel is.
  • Alle boodskappe en waardes wat deur die verwerker vrygestel word, word beskerm en in ‘n register gestoor sodat kan voortgaan om te hardloop wanneer die aksie weer aangevra word.
  • Die verwerker of SVE oorslaan al die adresse wat gestoor word vir roetineopsporing, en voer ‘n enkele teikenparrie uit. Dit is een van die veiligste stoppe vir beide die stelsel en die operateur.
  • Sodra ons die onderbreking voltooi het, die SVE sal alle take wat voorheen ge√Įgnoreer is, uitvoer, dus word dit hervat vanaf die vorige gebruikspunt.

Tipes onderbrekings

bestaan meer as een tipe stelsels en verwerkersDaarom is daar ook verskillende soorte onderbrekings.

Sodanige noem ons hulle hieronder:

  • HW of eksterne onderbrekings: Dit is asynchrone onderbrekings van die aksies wat deur die verwerker uitgereik word. Met ander woorde, dit is stoppe wat te eniger tyd uitgevoer kan word, ongeag of die SVE op die oomblik werk.
  • SW onderbreek: Dit is die beroemde sagtewareonderbrekings, waarvan die proses veroorsaak word deur die programmering van ‘n kode en aksie. Arduino ondersteun tans nie hierdie tipe onderbrekings nie.
  • Geskeduleerde gebeure of tyd stop: Soos die naam aandui, is dit stop in tydfaktor, dit word volgens ‘n spesifieke werktyd geprogrammeer.
  • Uitsonderings: Dit is die tipe stop wat voorkom elke keer as ‘n operateur onbehoorlike of geblokkeerde aksies wil uitvoer, waar die stelsel onmiddellik reageer.

ISR-funksie Wat is dit en wat is die doel daarvan in Arduino-onderbrekings?

Ons kan ongeveer s√™ dat die funksies van ‘n onderbreking ISR genoem word, en is gebaseer met die doel om nie ‘n ander funksie te stuur of te ontvang nie, om die terugkeer van enige data te voorkom. In die vorige afdeling het ons genoem dat daar egter verskillende soorte ISR is nie een kan gelyktydig bestuur word nie omdat dit ‘n gebrek aan beheer kan veroorsaak. Die regte manier daarvoor is om een ‚Äč‚Äčuit te voer in voortsetting met ‘n ander.

As u behoorlik in die w√™reld van Arduino-tegnologie√ę ingaan, sal u sien dat dit voortdurend herhaal word ‘n onderbreking hoe korter hoe beter. As ‘n ISR die kortste moontlike lopietyd het, stel die stelsel in staat om vinnig en effektief sy aktiwiteite terug te gee, en die generering van foute is minder.

Andersins kan ons dit op ‘n illustratiewe manier sien; as ons ‘n voorwerpversamelingsproses het met die implementering van ‘n enjin, kan ‘n lang stop foute veroorsaak as gevolg van dat die motor krag verloor en ophou om druk op die arm te plaas, wat veroorsaak dat dit die voorwerpe vrylaat.

Veranderlikes

As ons ‘n veranderlike wat aan die eksterne deel van die onderbreking behoort te wysig, moet ons altyd rekening hou met die belangrikheid van die maak van ‘n vlugtige verklaring, waarvan die aanwyser die gebruikte is om na ‘n veranderlike te verwys wat geoudit of bevraagteken kan word.

‘N Veranderlike aanwyser is die een wat al die rekords opstel, en dit skakel ook ‘n paar optimeringsfunksies uit word beskou as doeltreffendheidslekkasies. Wanneer ons veranderlikes moet skep, hoef ons slegs die kenmerke wat regtig nodig is as vlugtig te merk vir die skep van die hooflus binne onderbrekings.

Leer stap vir stap hoe om vinnig en maklik ‘n onderbreking op ‘n Arduino te skep en te toets

As u u eie onderbreking in ‘n arduino bord, dit is die regte plek vir u. In hierdie afdeling Ons gaan verduidelik wat u moet doen om te leer hoe om ‘n onderbreking te skep en te toets op Arduino, op die maklikste manier daar buite.

Gaan vir dit:

Skep onderbreking

Om ‘n onderbreking te bewerkstellig, moet u die taal en die sintaksis in ag neem, waarvan die meeste met die volgende hanteer word:

attachInterrupt (digitalPinToInterrupt (pin), ISR, modo); //(recomendado)

attachInterrupt (Interrupt, ISR, modo); //(no recomendado)

attachInterrupt (pin, ISR, modo); //Arduino SAMD Boards, One WiFi Rev2, Due y 101

Omdat ons die bogenoemde ken, gaan ons voort met die skep van ons eie ISR met behulp van die gelyste parameters:

  • Onderbreek: Dit dui die aantal onderbrekings aan wat ons wil h√™. Die sintaksis wat ingevoer moet word om hierna te verwys, is ‘int‚ÄĚ.
  • Speld: Soos sy eie naam aandui, is dit slegs die Arduino-pinnommer.
  • ISR: Hierdie keer as ons oor ISR praat, wil ons slegs verwys na die oproep wat die onderbreking maak. Dit is ‘n funksie wat sonder parameters is en lewer niks op nie, maar in baie gevalle is dit net ‘n roetine van die diens.
  • Wyse: Met hierdie funksie bepaal u wanneer die onderbrekings geaktiveer moet word, en dit is gebaseer op vier konstantes van toegelate waardes, Wat:
  • Laag: Dit word gebruik as ons die onderbreking wil aktiveer solank die pen laag is.
  • Verander: Dit word gebruik om die onderbreking te aktiveer wanneer die waarde van die pen verander.
  • Styg: As die pen verander, van laag na hoog, word hierdie pen gebruik.
  • Val: Anders as die vorige, is dit wanneer die waarde van die pen van hoog na laag gaan.

Toets onderbreking

Ons moet nie net ‘n onderbreking skep nie, ons moet ook toets op ‘n manier wat bevestig dat die algoritme korrek werk. Omdat dit ‘n toets is, sal ons die maksimum van alles, sowel as die minimum, moet waardeer, ons moet alle moontlike stoppe uitvoer, beide lank en kort, as ons iets ongewoon in die stelsel opmerk, moet die ISR verander wordInteendeel, as alles goed gaan, moet ons onsself gelukwens met die goeie werk.

Lys die beste Arduino-projekte met Interrupts wat u self kan doen om te oefen

In hierdie laaste afdeling Ons sal gesels oor die projekte wat u kan gebruik om te oefen en oefen al u verworwe kennis om onderbrekings te skep.

Die volgende is eenvoudige projekte wat geskik is vir programmering:

Parkeer sensor

Parkeer sensor

Ten einde sorg vir die integriteit van die motor wanneer ons parkeer, is dit gerieflik om ‘n sensor met ‘n Arduino-bord te skep. Met hierdie toestel sal ‘n alarm hoor elke keer as die motor ‘n voorwerp nader tydens die manoeuvre, maar dit is belangrik dat dit ‘n onderbrekingsmeganisme het om die geluid te stop nadat die taak uitgevoer is.

Om die sintaksis te ken en die ISR van hierdie projek te skep, is baie maklik om te programmeer voer eenvoudige take uit, en aan die ander kant die onderbreking moet lank wees, sodat dit al die uitgevoer take staak. U sal ‘n Arduino UNO-model in hierdie projek moet gebruik, drie ultrasoniese sensors, ‘n broodbord, ‘n kabelset en twee mini-batteryskerms. As u al hierdie elemente het, sal u dit moet saamstel volgens die beeld wat u wys.

Dan moet u IDE oopmaak en die volgende instruksies vir programmering skryf:

#include <TM1651.h>

#define CLK 3 // Cableado de la pantalla derecha

#define DIO 2

#define CLK2 5 // Cableado de la pantalla izquierda

#define DIO2 4

#define trigPin 6 // Cableado de los módulos de ultrasonido R = Derecha L = Izquierda el otro es el medio

#define echoPin 7

#define trigPinR 8

#define echoPinR 9

#define trigPinL 10

#define echoPinL 11

#define Maxdistance 20 // Distancia m√°xima 20cm

larga duración ;

int distancia ;

TM1651 DisplayR ( CLK, DIO ) ;

TM1651 DisplayL ( CLK2, DIO2 ) ;

configuración vacía () {

pinMode ( trigPin, SALIDA ) ; // Pinmodes del HC-SR04 e inicio de las pantallas

pinMode ( echoPin, ENTRADA ) ;

pinMode ( trigPinR, SALIDA ) ;

pinMode ( echoPinR, ENTRADA ) ;

pinMode ( trigPinL, SALIDA ) ;

pinMode ( echoPinL, ENTRADA ) ;

init () ;

set ( M√ĀS BRILLANTE ) ;

init () ;

set ( M√ĀS BRILLANTE ) ;

}

bucle vacío () {

int distanciaM = CDistancia ( trigPin, echoPin ) ;       // Calculando todas las distancias llamando a la función de abajo

int distanciaR = CDistancia ( trigPinR, echoPinR ) ;

int distanciaL = CDistancia ( trigPinL, echoPinL ) ;

int R = min ( distancia M , distancia R ) ; // Tenemos dos pantallas R y L, primero tomamos la distancia mínima entre M / R y M / L

int L = min ( distanciaM, distanciaL ) ;

if ( R> 0 && R <Maxdistance ) {

Nivel corto R = mapa ( R, 0, Distancia m√°xima, 0,7 ) ;

displayLevel ( LevelR ) ;

}

if ( R> Maxdistance )

displayLevel ( 7 ) ;

if ( L> 0 && L <Maxdistance ) {

Nivel corto L = mapa ( L, 0, Distancia m√°xima, 0,7 ) ;

displayLevel ( LevelL ) ;

}

si ( L> Maxdistance )

displayLevel ( 7 ) ;

retraso ( 50 ) ;

}

int CDistance ( int a, int b ) { // Calculando la función de distancia

digitalWrite ( a, BAJO ) ;

delayMicroseconds ( 2 ) ;

escritura digital ( a, ALTA ) ;

delayMicroseconds ( 10 ) ;

digitalWrite ( a, BAJO ) ;

duración = pulseIn ( b, HIGH ) ;

distancia = duración * ( 0 .034 / 2 ) ;

distancia de regreso ; // Devuelve la distancia calculada

}

Slim verkeerslig

Slim verkeerslig

Die tipiese Arduino-semafoor, is die tweede eenvoudigste Arduino-projekDie moeilikheidsgraad l√™ egter wanneer ons ‘n onderbreking moet skep wat ‘n aksie en laat ‘n ander proses loop. Dit beteken dat die sirkulasie kleur verander kan word. Hiervoor moet die tipe ISR wat gebruik word, kort wees en in tydsfaktor geprogrammeer word.

Met inagneming van bogenoemde, is u nodig om ‘n slim verkeerslig te skep Arduino Nano R3, generiese geleide ligte, fotovolta√Įese weerstande, kabels en ‘n weerstand van 100 Ohm. Wanneer jy klaarmaak kyk na die diagram wat ons aan u toelaat om die komponente aan te sluit.

Maak dan die programmeringsplatform oop en voer die volgende kodes in:

// Elige el pin de entrada para el sensor LDR al lado del led

int ledSensor  =  A1  ;

// Elige el pin de entrada para el sensor LDR en la parte superior de la l√°mpara que siente la luz del sol

int sunSensor  =  A0  ;

// Elige el pin de entrada para el LED

int led  =  13  ;

int pirSensor  =  2  ;

int ledSensorValue  =  0 ;

// Esta es la variable para almacenar el valor proveniente del censor, en la parte superior de la l√°mpara que siente la luz solar

int sunSensorValue  =  0  ;

int pirSensorValue  =  0  ;

configuración vacía () {

Serial . comenzar ( 9600 );

pinMode ( led , SALIDA );

pinMode(pirSensor, INPUT);

}

void loop() {

sunSensorValue = analogRead(sunSensor);

if (sunSensorValue > 900 )

{

pirSensorValue = digitalRead (pirSensor);

if (pirSensorValue == 1)

{

digitalWrite(13, HIGH);

print(String(1));

print(",");

print(String(sunSensorValue));

print(",");

ledSensorValue = analogRead(ledSensor);

print(String(ledSensorValue));

print(",");

println(String(pirSensorValue));

}else if (pirSensorValue == 0){

digitalWrite(13, LOW);

print(String(0)); //led is off

print(",");

print(String(sunSensorValue));

print(",");

ledSensorValue = analogRead(ledSensor);

Serial .print(String(ledSensorValue));

print(",");

Serial . println(String(pirSensorValue));

}

}

// Si  (sunSensorValue < 900)

{

escritura digital ( 13, LOW);

Serial . imprimir ( Cadena ( 0));

Serial . impresión(",");

Serial . imprimir ( Cadena (sunSensorValue));

Serial . impresión(",");

ledSensorValue =  analogRead(ledSensor);

Serial . imprimir ( Cadena (ledSensorValue));

Serial . impresión(",");

pirSensorValue =  digitalRead (pirSensor);

Serial . println ( String ( pirSensorValue));

}

retraso ( 10000 ); // Demora 10 segundos y luego vuelve a tomar la lectura. Es aquí en donde se produce la interrupción

}

Skets motorliggies

Skets motorliggies

Dit is een van die Arduino-projekte die meeste gekies deur beginners, omdat dit ons nie net toelaat om die motor te versier nie en gee dit ‘n gevoel van luuksheid, maar u sal ook die IDE kan oefen. Die programmering daarvan is eenvoudig, dus u kan nie hierdie elektroniese werk opsy sit nie. Onderbrekings speel ‘n belangrike rol, omdat die rigting of vloei van die proses van elk van die ligte volgens ons smaak moet verander, sodat die ISR die verandering toelaat om die taak wat tans uitgevoer word, te kanselleer.

U het ‘n Arduino Nano R3 nodig om die projek uit te voer, ‘n geleide strook van 120 stuk, 3 mm-koker, manlike tot manlike kabels en drie 400-punt naatlose broodbordborde. U sal hierdie materiaal kan saamvoeg, met inagneming van die beeld hierbo.

Ten slotte is daar die programmeringsdeel van die Arduino Nano Rev3-bord, dus u sal die rye moet laai wat ons hieronder aandui:

byte ledPin[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

int ledDelay = 300 ;

int direccion = 1;

int LEDActual = 5;

unsigned long TiempoCambio;

void setup() {

for(int x=0; x<10 ; x++){

pinMode(ledPin[x], OUTPUT);

}

TiempoCambio = millis();

}

void loop() {

if ((millis() - TiempoCambio) > ledDelay){

cambioLED();

TiempoCambio = millis();

}

}

void cambioLED() {

for(int x=0; x<10 ; x++){

digitalWrite(ledPin[x],LOW);

}

digitalWrite(ledPin[LEDActual],HIGH);

LEDActual += direccion;

if (LEDActual == 9) {

direccion = -1;

}

if (LEDActual == 0) {

direccion = 1;

}

}

As u vrae het, laat dit in die kommentaar, ons sal u so spoedig moontlik antwoord, en dit sal sekerlik tot groot hulp wees vir meer lede van die gemeenskap. Dankie! ūüėČ

Mario Jose

Skrywer: Mario José

Afgestudeer in joernalistiek, gespesialiseerd in ondersoek, soek ek die waarheid van alle dinge. Nou is 100% gefokus op tegnologie, rekenaars en die internet.

U mag ook belangstel:

Leave a Comment