Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   464 / 855
(#) devilke3000 válasza berkesandor hozzászólására (») Júl 25, 2018 /
 
is csak interupt pin ébreszti fel!

  1. #include "LowPower.h"
  2.  
  3. // Use pin 2 as wake up pin
  4. const int wakeUpPin = 2;
  5.  
  6. void wakeUp()
  7. {
  8.     // Just a handler for the pin interrupt.
  9. }
  10.  
  11. void setup()
  12. {
  13.     // Configure wake up pin as input.
  14.     // This will consumes few uA of current.
  15.     pinMode(wakeUpPin, INPUT);  
  16. }
  17.  
  18. void loop()
  19. {
  20.     // Allow wake up pin to trigger interrupt on low.
  21.     attachInterrupt(0, wakeUp, LOW);
  22.    
  23.     // Enter power down state with ADC and BOD module disabled.
  24.     // Wake up when wake up pin is low.
  25.     LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  26.    
  27.     // Disable external pin interrupt on wake up pin.
  28.     detachInterrupt(0);
  29.    
  30.     // Do something here
  31.     // Example: Read sensor, data logging, data transmission.
  32. }
(#) berkesandor válasza devilke3000 hozzászólására (») Júl 26, 2018 /
 
Hány dolognak kell ébreszteni? Az alap felvetés az volt, hogy ne a 2,3 láb ébresszen.
(#) Kera_Will válasza devilke3000 hozzászólására (») Júl 26, 2018 /
 
Idézet:
„már foglaltak szenzorokal”

Akkor szervezd úgy hahrdver környezetet , hogy ne ott beszélgessenek a hardveres valóba élő interupt porton .
(#) berkesandor válasza devilke3000 hozzászólására (») Júl 26, 2018 /
 
2,3 pinken kívüli interruptoknak vannak korlátai. A pinek csoportokba vannak osztva, egy csoportból egyet használhatsz. Bővebben: Link Bővebben: Link
Ez a megoldás? :Bővebben: Link
A hozzászólás módosítva: Júl 26, 2018
(#) Kovidivi válasza devilke3000 hozzászólására (») Júl 26, 2018 /
 
Vajon rákerestél erre a _BV dologra? Valószínűleg nem. Google-n temérdek oldal van róla.
(#) vargham válasza devilke3000 hozzászólására (») Júl 26, 2018 /
 
Valamiért ATTiny85-re emlékeztem.
Itt van ugyanaz ATMega328-ra:
https://gist.github.com/Wollw/2598827

PCICR = Pin Change Interrupt Control Register, datasheet 17.3.4
0, 1, 2 bitje használható. A 328-ban 3 porton lehetséges PCINT-et használni. Ezzel a három bittel lehet ezt a három PCINT mezőt ki/be kapcsolni.

PCMSK0 = Pin Change Mask Register 0, datasheet 17.2.8
Ezzel a regiszterrel lehet beállítani, hogy a nullás PCINT mezőn belül melyik lábakon legyen bekapcsolva a PCINT. Van belőle PCMSK1 és PCMSK2 is a másik két mezőhöz.

De ez mind le van írva az adatlapban.
ATMega328 datasheet

Aztán, hogy melyik PCINT melyik lábhoz (Port / pin) tartozik, az a datasheet 5.1 ábrán látható.
A hozzászólás módosítva: Júl 26, 2018
(#) Moderátor hozzászólása devilke3000 hozzászólására (») Júl 27, 2018
 
A hozzászólásaid eltávolításra kerültek, mert figyelmeztetés ellenére sem voltál hajlandó még a legelemibb helyesírási szabályokat sem betartani.
(#) MsDw hozzászólása Júl 27, 2018 /
 
Sziasztok!

Van egy arduino mega 2560 panelem, egy WAVGAT Smart Electronics ESP-12E WAVGAT D1 WiFi uno based ESP8266 shield for arduino Compatible (wifi panel link) wifi panelem, és találtam a fiókban egy 5V-3.3V szintillesztőt.
A wifi panelt és a mega-t sz.gépről külön külön tudom programozni, teszik is a dolgukat, hanem szeretném összekötni őket, hogy a wifi panelről tudjam vezérelni a mega panel i/o lábait.
Konkrét softrawe-es dolgokat sem igazán találtam hozzá, de a hardware részben teljesen bizonytalan vagyok. Többen azt írják, nem kell közéjük szintillesztő, mások szerint pedig kell.
Kérnék szépen egy teljes útbaigazítást, hogy akkor most mit és hová is kellene kötni. Ha valaki tud esetleg ilyen jellegű kész arduino lib.-et, akkor azért külön hálás lennék, de a lényeg a hardware-es rész lenne.
Előre is köszönöm a segítségeket!
(#) KoblogPerGyok válasza MsDw hozzászólására (») Júl 27, 2018 /
 
Szia!

Meg szabad kérdezni mért kell rá az UNO?

Amit láttam leírást az szerint ez 3.3V -os, míg az UNO 5V. Szerintem jobb ha használsz szintillesztőt.
(#) tbarath válasza MsDw hozzászólására (») Júl 27, 2018 /
 
Ha mindkettő egységesen 3v3 vagy 5v IO jelszinttel dolgozik, akkor nem kell szintillesztő. Ha az egyik 5v és a másik 3v3, de a 3v3 IO "5V toleráns" (azaz kibírja az 5 Voltot) ÉS az 5V eszköznél a 3v3 jelszint stabilan magas szintet jelent, akkor se kell.
Más esetben kell valamilyen szintillesztés a kettő közé.
(#) sargarigo válasza tbarath hozzászólására (») Júl 27, 2018 /
 
Sőt, ha az 5V-os tud menni 3.3V-ról, akkor sem kell illesztő. A 328p datasheetje szerint akár 1.8V-ról is elketyeg, szóval mennie kellene. Mondjuk ebben az esetben a sebességgel gondod lehet, ennek azért utána kell járni. Az arduino keretrendszer nem tudom mennyire toleráns ebben az ügyben. Bővebben: Link
Egyszerűbbnek tűnik ha használsz illesztőt. Kevesebb szívásnak teszed ki magad.
A hozzászólás módosítva: Júl 27, 2018
(#) MsDw válasza KoblogPerGyok hozzászólására (») Júl 27, 2018 /
 
Sziasztok!
Azért szeretném rá a mega panelt, mert több funkciót szeretnék kezelni, és kevés az i/o láb a wifi panelen.

Fogalmam sincs, hogy a wifi panel bírja e az 5V-ot.
A mega panel és az i/o lábai 5V-osak, de a wifi-t nem tudom. A wifi panelen van 3.3V-os stabilizátor az biztos.
Mi történik ha a wifi panel i/o lábai bírják az 5V-ot, de én teszek be szintillesztőt? Mindkét panel 5V-ot kap, de az ESP wifi chip 3,3V-ról megy.
(#) lalca válasza MsDw hozzászólására (») Júl 27, 2018 /
 
A d1 tx lábát összekötöd a mega rx lábával. A gnd közös. Ennyi.
Ha a megáról küldenél akkor kellene szintillesztő.
A hozzászólás módosítva: Júl 27, 2018
(#) MsDw válasza lalca hozzászólására (») Júl 27, 2018 /
 
Sziasztok!
Köszönöm a segítségeket!
Értem, ha megával csak adatokat fogadok a wifi-ről, akkor nem kell illesztő. Ha viszont küldeni is szeretnék a wifi panelnak adatokat, akkor mindkét körbe(rx - tx) kell a szintillesztő?
Előre is köszönöm!
(#) lalca válasza MsDw hozzászólására (») Júl 27, 2018 /
 
A mega tx - d1 rx közé mindenképp kell szintillesztő, akkor meg már rakhatsz a másikra is de nem muszály.
(#) MsDw válasza lalca hozzászólására (») Júl 27, 2018 /
 
Köszönöm szépen mindenkinek a segítségét!
(#) tbarath válasza MsDw hozzászólására (») Júl 27, 2018 /
 
Ha minden pin "egyirányú", ez a szerencsésebb eset. Ha csak adatokat fogadsz és a mega biztosan magas szintnek érzékeli a 3v3 feszültséget, akkor a wifi tx -> arduino rx irányba semmi nem kell. Ha küldesz jelet mega TX -> wifi RX irányban, akkor oda egy ellenállásosztó is elég szintillesztőnek (pl. 22k és 33k ellenállásokkal).
Komolyabb szintillesztésre akkor van szükség, ha a 3v3 az 5V eszközöd "bizonytalan" sávjában mozog, vagy ha egy pin kétirányú kommunikációban vesz részt (mint pl. i2c esetén).

Az atmega datasheet azt írja, hogy 2,4-5,5V tápfeszültség között a 0,6*VCC-t már magasnak veszi, ami 5V esetén 3 Volt fölötti jelet jelent, szóval a 3,3V elvileg elég. Szóval 3 tized Volttal a jó jelszint biztos határa fölött vagy, elvileg legalábbis.
De az a 0,3 Volt nem is annyira sok, mert esik valamennyi feszültség a kábelezésen és a csatlakozókon, lehet picivel nagyobb a Mega tápfesz, picivel kisebb a wifi tápfesz, és ilyen esetben már könnyen a határ közelébe, netán alá is kerülhetsz. Ami nem feltétlenül jelent problémát, mert nyilván ezek a határok elég konzervatívan vannak meghatározva. De jelenthet.

Szóval ha cél az üzembiztosság és "úgyis csak a helyet fogja" a fiókban a szintillesztő, akkor én használnám.
(#) TavIR-AVR válasza tbarath hozzászólására (») Júl 28, 2018 /
 
Korrekt eset:
építesz jelszintillesztőt.
Így mind a Low, mind a high oldal a szabvány tartományba esik bele.
Az ESP nem 5V toleráns! Azaz a Mega->ESP esetén ne legyen közvetlen bekötés, jelszintillesztő kell.
Kérdés: egyirányú, vagy kétirányú kell?

Én nem sorosportok beszélgetnék a két holmi közt. Az ESP sorosportja _foglalt_ az USB feltöltés/debugra. Amega-n meg a másodikat pazarlod el...
Szoftveres sorosportot inkább ne.

Akkor én inkább I2C master: ESP, I2C slave meg a mega legyen....
(#) neogeo2 válasza MsDw hozzászólására (») Júl 28, 2018 /
 
Ha az IO pinek száma a kevés, akkor szerintem célszerű lenne valamilyen portbővítő IC-t használni (pl. 74hc595). Az ESP nem tolerálja az 5V-ot, direktben semmiképpen se adj neki annyit a bemenetére, mert meghal tőle!
(#) MsDw válasza TavIR-AVR hozzászólására (») Júl 28, 2018 /
 
Sziasztok!
Próbáltam megfogadni a tanácsod az I2C kommunikációt illetően, de nem megy, reggel óta kínlódom vele. Az arduino.cc oldalról való az alábbi kód is; nem változtattam rajta. Eredeti kód itt
Esp master kód:
  1. #include <Wire.h>
  2.  
  3. void setup() {
  4.   Wire.begin(); // join i2c bus (address optional for master)
  5. }
  6.  
  7. byte x = 0;
  8.  
  9. void loop() {
  10.   Wire.beginTransmission(8); // transmit to device #8
  11.   Wire.write("x is ");        // sends five bytes
  12.   Wire.write(x);              // sends one byte
  13.   Wire.endTransmission();    // stop transmitting
  14.  
  15.   x++;
  16.   delay(500);
  17. }

Mega panel slave:
  1. #include <Wire.h>
  2.  
  3. void setup() {
  4.   Wire.begin(8);                // join i2c bus with address #8
  5.   Wire.onReceive(receiveEvent); // register event
  6.   Serial.begin(9600);           // start serial for output
  7. }
  8.  
  9. void loop() {
  10.   delay(100);
  11. }
  12.  
  13. // function that executes whenever data is received from master
  14. // this function is registered as an event, see setup()
  15. void receiveEvent(int howMany) {
  16.   while (1 < Wire.available()) { // loop through all but the last
  17.     char c = Wire.read(); // receive byte as a character
  18.     Serial.print(c);         // print the character
  19.   }
  20.   int x = Wire.read();    // receive byte as an integer
  21.   Serial.println(x);         // print the integer
  22. }


Természetesen szintillesztővel van összekötve:
mega 20 és 21 láb rajta a 2db 10K ellenállással felhúzva 5V-ra
esp D3 és D4 itt is 10K ellenállásal felhúzva 3,3V-ra
Szintillesztő:
LV = 3,3V
GND = 3,3V GND
HV = 5V
GND = 5V GND
LV1 = 3,3V SCL
HV1 = 5V SCL
LV2 = 3,3V SDA
HV2 = 5V SDA

SoftwareSerial-on beszélgetnek, de nem tudom normálisan lekezelni a string adatokat, ezért sok a "mócsing" az átvitel során; valahogy tudnom kellene RX oldalon, hogy milyen hosszú a venni kívánt szöveg, és még arra is rá kellene jönnöm, hogy az 1db küldést miért veszi RX oldal 2-3 alkalommal is (igaz már hiányosan). Használom a:
  1. while (mySerial.available() > 0)
eseményt.
Az oda-vissza kommunikáció megvalósítása lenne a legjobb.
Nem tudom, itt nem lehetne használni a Bridge library-t? Bár igaz az a Yun shield -hez való.
Max 15 karakter hosszú adatokat kellene átvinnem ESP-ből Mega-ra, visszajelzéssel, hogy rendben vettte az adatokat a másik fél, és tudta értelmezni, vagyis nem bla-bla érkezett.

Portbővítés? Nem is butaság! Már csak az ESP memóriája marad a kérdés, mert ha portot bővítek akkor azt MCP23017 ic-vel, mert az mindjárt konfigurálható, és van benne megszakítás is.
Köszönöm az ötleteket!
(#) vargham válasza MsDw hozzászólására (») Júl 28, 2018 /
 
Idézet:
„Már csak az ESP memóriája marad a kérdés”

RAM és ROM is jóval több van benne (mellette), mint az ATMega2560-ban.
(#) Kovidivi hozzászólása Júl 28, 2018 /
 
Sziasztok!
Eldobom az agyam az Arduino IDE-től.
Ha be van csukva minden függvény, ami csak lehetséges, időnként magától kinyílik az összes, megnehezítve a keresést, a programozást (azt tapasztaltam, ha új ablakot nyitok meg, akkor!
Már egy ideje szenvedek a több lapfüles programozással.
Ma rájöttem, hogy miért!
Az IDE jobb felső részén van egy lenyíló nyíl, Új fül parancs, megadom a fájlnevet, és rakok bele változókat. Ellenőrzésnél jön a hibaüzenet, hogy "redefined", és ki van emelve ez az új fül első sora. A redefined üzenet azért jött, mert a főprogramomban megtalálhatóak voltak ugyanazok a változók, ugyanis én, mint egy rendes programozó, beincludoltam a létrehozott új fülön található fájl nevét. Teljes logikai káosz ez az IDE. Ha kitöröltem az include részt, akkor is betöltődött a másik fájl is...
Ha kétszer nyomsz && egymás után, majd CTRL+V-vel beillesztesz valamit, valami formázott html kódot másol be! Ha az ember csak szimplán, követve a szabályokat programoz, hibát kap! Ki kell kerülni a program hibáit is, csak mondjuk jó lenne, ha ezek köztudottak lennének...
További hiba: elindítom a feltöltést, majd ebben a pillanatban csatlakoztatom az Arduino lapot (az ellenőrzés alatt), akkor nem töltődik fel a program, de hibajelzés sem jön.
De ez a lapfüles hiba, ez vitte a pálmát! Folyamatos redefinition hiba, és nem találja az ember, hogy miért. Nagyon bosszantó.
A hozzászólás módosítva: Júl 28, 2018
(#) Kovidivi hozzászólása Júl 28, 2018 /
 
Azt hogyan lehet megoldani, hogy egy másik fülön (fájlban) van egy nagy méretű tömböm deklarálva, és egyből adok is neki kezdőértékeket (const), de ezt a tömböt lássam is a főprogramomban? Az egyik probléma, hogy ha extern kulcsszót használok, akkor nem adhatok neki kezdőértéket, ha először deklarálom a főprogramban, akkor másik fájlban már nem tölthetem fel függvényen kívül a tömböt, mert akkor jön a redefinition hiba, vagy készítek egy fv-t, ahol szépen egyesével föltöm a tömböt... Köszi.
(#) sargarigo válasza Kovidivi hozzászólására (») Júl 28, 2018 /
 
Az arduino ide egy érdekes jószág!
Azért követeli meg a projekt könyvtárat, mert minden amit abba másolsz azt egy fájlnak tekinti. Tehát amit az egyik lapon beírsz, azt a másikon is látja. Nem kell include-olni! Meg lehet szokni, bár kicsit bizarr..
Próbáld úgy írni a programot, hogy minden fájlt egyetlen fájlnak tekintesz!
A hozzászólás módosítva: Júl 28, 2018
(#) KoblogPerGyok válasza MsDw hozzászólására (») Júl 28, 2018 /
 
Szia!

Wire.beginTransmission(8); // transmit to device #8

Nem tudom miért 8 a címe. Mindenképpen annyi? Ez szerintem változó. Kapcsold össze mindkettőt, majd a master-re tölts fel egy i2c scannert. Azért megnézném a pontos címét a slave-nek.
A hozzászólás módosítva: Júl 28, 2018
(#) krauszkrisztian14 hozzászólása Júl 28, 2018 /
 
Üdv!
Van valakinel egy példája arra, hogy egy arduinot elküldünk, majd egy DS3231 RTC felébreszti azt?
(#) TavIR-AVR válasza MsDw hozzászólására (») Júl 29, 2018 /
 
ESP esetén:
wire.begin(SCL,SDA);

Mivel szoftveres Wire-t használ! Tetszőleges lábra tehető. Te meg nem definiáltad...
(#) MsDw válasza KoblogPerGyok hozzászólására (») Júl 29, 2018 /
 
Sziasztok!

KoblogPerGyok:
Miért 8 a wire.begin()??
Idézet:
„Az arduino.cc oldalról való az alábbi kód is...
  1. Wire.begin(8);                // join i2c bus with address #

Fogalmam sincs, miért 8, de egyedül van az I2C buszon. Így van a mintapélda is az arduino mintaprogram könyvtárban is, és a weboldalon is (nem az arduino fórumon volt a példa).

Köszönöm az infót TavIR-AVR, ki fogom próbálni, bár nem értem, hiszen a panelon is fel vannak tüntetve, az: SCL/SDA/SCK/MOSI..RX-TX kivezetések, feltételeztem...mint a mega panelen, hogy adott, mint a serial port is az ESP-n.
(#) tbarath válasza MsDw hozzászólására (») Júl 29, 2018 /
 
Minden i2c eszköznek van egy - ha jól emlékszem 7 bites - címe, ami azért kell mert több eszköz is ülhet ugyanazon a buszon, ráadásul multimaster és/vagy multislave is lehet. Szóval az i2c kommunikáció úgy néz ki, hogy a csomagokban benne van az, hogy ki beszél kihez, ehhez kell tudnod - master-ként - a megszólított slave eszköz címét.
Következő: »»   464 / 855
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem