Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Arduino IDE + NodeMCU v1.0 + Interrupt

Arduino IDE + NodeMCU v1.0 + Interrupt

C,C++,C#

Moderátori: psichac, Moderátori

Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 14 J├║n 2017, 13:38

Ahojte páni/dámy.

Chcel by som V├ís poprosi┼ą o radu.

Pracujem na jednom mojom projekte kde z Externych zdrojov prijimam json data a zobrazujem si ich na LCD. Vsetko mi funguje ale potrebujem do projektu pridat prepinanie stran co sa ma zobrazovat a chcem to sporavit pomocou tlacitka a prerusenia .

Toto je moj problem . Neviem co robim zle ale precital som si u┼ż kopec str├ínok a pr├şkladov na interrupt pre ESP a ani jeden mi nefunguje.

Idem od zakladu a sna┼ż├şm sa zapnut led a zaroven vypisat na Serial monitor ON a OFF ale po stlacen├ş tla─Ź├ştka mi to vodec do prerusenia neskoci a ja neviemprist na to pre─Źo.

K├│d: Vybra┼ą v┼íetko
#include <ESP8266WiFi.h>

const byte led = LED_BUILTIN;
const byte but = D2;
volatile byte state = LOW;

void setup() {
  Serial.begin(115200);
  delay(100);

  Serial.println();
  Serial.println("Serial OK");
  pinMode(led, OUTPUT);
  pinMode(but, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(but), prerus, LOW);
}

void loop() {

}

void prerus() {

  digitalWrite(led, HIGH);
  Serial.println("ON");
  delay(500);

  digitalWrite(led, LOW);
  Serial.println("OFF");
  delay(500);
}


Po staceni tlacitka by malo zapnut LED napisat ON a serial monitor a Vypnut led a napisat OFF.

Napada vas preco mi to nejde?

─Äakujem
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod maskrtnik01 » 14 J├║n 2017, 14:27

Dobr├Ż de┼ł,

https://www.arduino.cc/en/Reference/Interrupts

Sk├║ste, ─Źi nem├íte n├íhodou vypnut├ę preru┼íenia - aj ke─Ć pod─ża uvedenej str├ínky by nemali by┼ą vypnut├ę.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 493
Vek: 20.84
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 2

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 14 J├║n 2017, 14:46

Dakujem za reakciu.Skusil som ale nepomohlo. Uplne to je hluche. Je daky sposob ako zistit co to vlastne robi ked stalcim tlacitko?
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod maskrtnik01 » 14 J├║n 2017, 14:50

https://www.arduino.cc/en/Reference/AttachInterrupt

E┼íte sa pohrajte s nastaven├şm re┼żimu. Na tla─Ź├ştko proti zemi by som odpor├║─Źal FALLING.

EDIT: Len pre istotu sa sp├Żtam. Tla─Ź├ştko m├íte d├║fam pripojen├ę na spr├ívny pin a proti zemi.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 493
Vek: 20.84
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 2

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 14 J├║n 2017, 15:05

Ano Pin som si niekolko krat prekontroloval a vychadzam z tohoto zoznamu.

    static const uint8_t D0 = 16;
    static const uint8_t D1 = 5;
    static const uint8_t D2 = 4;
    static const uint8_t D3 = 0;
    static const uint8_t D4 = 2;
    static const uint8_t D5 = 14;
    static const uint8_t D6 = 12;
    static const uint8_t D7 = 13;
    static const uint8_t D8 = 15;
    static const uint8_t D9 = 3;
    static const uint8_t D10 = 1;

A skusil som aj FALLING aj CHANGE a nic.Stale bez zmeny.
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod lucky62 » 15 J├║n 2017, 07:56

Sk├║s v preru┼íovacej rutine nepou┼ż├şva┼ą delay().... a ani Serial.print/println...

citujem odtia─żto: https://www.arduino.cc/en/Reference/AttachInterrupt
Since delay() requires interrupts to work, it will not work if called inside an ISR.


Pou─Źn├ę ─Ź├ştanie tu: http://gammon.com.au/interrupts

Na stla─Źenie tla─Źidla pou┼ż├şvaj interrupt mode FALLING namiesto LOW. LOW vyvol├íva preru┼íenie opakovane, k├Żm tla─Źidlo bude stla─Źen├ę...
Na tom linku je aj pr├şklad - ├║plne na spodku str├ínky. Preru┼íovacia rutina m├í by┼ą ─Źo najkrat┼íia...
Ja by som to riešil nejako takto...

K├│d: Vybra┼ą v┼íetko
volatile bool stlacene = false;

void loop() {
  if (stlacene == true) {
    stlacene = false;
    digitalWrite(led, HIGH);
    Serial.println("ON");
    delay(500);
    digitalWrite(led, LOW);
    Serial.println("OFF");
  }
}

void prerus() {
  stlacene = true;
}
....m├┤j bazar....

...Nikdy sa nehádaj z blbcom...
lucky62
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1017
Zalo┼żen├Ż: 14.02.2012
Bydlisko: Liptovsk├Ż Mikul├í┼í, SK
Karma: 7

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 15 J├║n 2017, 11:59

Dakujem za odpoved.
Vcera sa mi podarilo spojaznit aspon to aby mi prerusenie zacalo fungovat.
Co sa tika delay () tak tiez som postrehol ze to robi hluposti ked je v rutine pre prerusenie pouzite ale niekde som cital ze sa aj na zaciatku rutiny zakazuje prerusenie a na konci sa zase povoluje.
Dnes mam este cas tak idem si to nastudovat.

Teraz ma napadlo. Dufm ┼że sa bavime o preruseni pre ESP8266. Pretoze prerusenie na Arduine mi funguje tak ako ma len s ESP mam problem.

A pre─Źo ta rutina ktoru ste napisal je v void loop ? To co chcem spravit v preruseni by malo byt mimo viod loop. Alebo sa m├Żlim ?

Dakujem
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod lucky62 » 15 J├║n 2017, 19:46

Ide o to, ┼że ISR teda obsluha preru┼íenia by mala by┼ą ─Źo najkrat┼íia, aby neblokovala in├ę preru┼íenia a neovplyv┼łovala ve─żmi ostatn├ę veci...

Tak┼że v preru┼íen├ş sa len nastav├ş pr├şznak, ┼że bolo stla─Źen├ę tla─Źidlo a zbytok vykon├í hlavn├í slu─Źka.
....m├┤j bazar....

...Nikdy sa nehádaj z blbcom...
lucky62
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1017
Zalo┼żen├Ż: 14.02.2012
Bydlisko: Liptovsk├Ż Mikul├í┼í, SK
Karma: 7

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 15 J├║n 2017, 19:48

Aha tak tomu rozumiem a ako by ste vyriesil osetrenie zakmytu tlacitka ked sa snima cez prerusenie?

Dakujem
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod lucky62 » 15 J├║n 2017, 20:05

Ide├ílne o┼íetri┼ą na ├║rovni hardware. :-)

Pr├şpadne softv├ęrov├ę rie┼íenie je, ┼że v hlavnej slu─Źke sa ten pr├şznak bude nulova┼ą s oneskoren├şm. To ┼że ho preru┼íovacia rutina nastav├ş nieko─żkokr├ít, nebude vadi┼ą. Tu je upraven├í hlavn├í slu─Źka, ktor├║ som uviedol predt├Żm. Pr├şznak sa teraz bude nulova┼ą a┼ż po 500ms, ─Źo je ur─Źite dostato─Źn├Ż ─Źas...

K├│d: Vybra┼ą v┼íetko
void loop() {
  if (stlacene == true) {
    digitalWrite(led, HIGH);
    Serial.println("ON");
    delay(500);
    digitalWrite(led, LOW);
    Serial.println("OFF");
    stlacene = false; // toto bolo presunut├ę
  }
}
....m├┤j bazar....

...Nikdy sa nehádaj z blbcom...
lucky62
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1017
Zalo┼żen├Ż: 14.02.2012
Bydlisko: Liptovsk├Ż Mikul├í┼í, SK
Karma: 7

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 15 J├║n 2017, 20:14

Aha tak u┼ż to ch├ípem. Dakujem
Len predsa sa e┼íte sp├Żtam.

Ale pokial bude kod v hlavnej smy─Źke dhl┼í├ş tak tam bude oneskorenie po stla─Źen├ş tla─Źidla pokila pr├şde k vyhodnoteniu a vykonaniu danej funkcie pre tlacidlo, teda pokila pr├şde k podmienke if pre tla─Źidlo ako ste nap├şsal.

Dakujem
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod lucky62 » 15 J├║n 2017, 21:24

trochu krkolomne polo┼żen├í ot├ízka.. skoro som nepochopil, na ─Źo sa p├Żta┼í...

Ale sn├í─Ć ├íno.

Ke─Ć bude v hlavnej slu─Źke k├│d, ktor├Ż bude trva┼ą dlho, tak samozrejme odozva na stla─Źenie tla─Źidla, bude oneskoren├í.
Je na program├ítorovi, aby to naprogramoval vyhovuj├║cim sp├┤sobom. Ten pr├şznak stla─Źenia tla─Źidla m├┤┼że┼í testova┼ą aj po─Źas dlh├Żch slu─Źiek.
Ak sa zist├ş, ┼że bolo stla─Źen├ę, zavol├í┼í obslu┼żn├║ rutinu, ak nebolo, pokra─Źuje┼í v programe...
....m├┤j bazar....

...Nikdy sa nehádaj z blbcom...
lucky62
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1017
Zalo┼żen├Ż: 14.02.2012
Bydlisko: Liptovsk├Ż Mikul├í┼í, SK
Karma: 7

Re: Arduino IDE + NodeMCU v1.0 + Interrupt

Odosla┼ąod bebeno28 » 15 J├║n 2017, 21:41

Dakujem za rady.
Mne sa zatial podarilo spravit to na com som pracovl aj klasicky aj bez prerusenia.

Pracoval som na zobrazovacej jednotke pre meteostanicu ktora je zostavena z ESP modulu + ESP easy firmweru a cidla BME280 a zaroven aj zobrazenie teploty a ci je zanuty ohrav v nadrzi pre vodu ( tiez ESP easy a DS cidlo).

Vsetko komunikuje cez Wifi a pomocou json su prijimane data.

Link pre nazornu ukazku - https://youtu.be/HnH88P5zECw
kod pre ukazku v prilohe.
Pr├şlohy
Meteostation-External_LCD_by_ESP8266.rar
ESP+LCD+json
(6.25 KiB) Stiahnutá 7 krát
bebeno28
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 175
Zalo┼żen├Ż: 16.09.2012
Bydlisko: Trnava
Karma: 0


Nasp├Ą┼ą na C,C++,C#

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 0 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.48 sek├║nd