- Bemutatkozott a Poco X7 és X7 Pro
- Yettel topik
- Magyarított Android alkalmazások
- Hónap végén érkezik a Xiaomi Band 10, ára is van
- iPhone topik
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Google Pixel topik
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
kesztió
aktív tag
De ha ez megnyugtat: "kommentelés" helyett mostantól nevezd a
//
meg a/*
jelet "kiiktatás"-nak. Problem solved.De ha egyszer NEM komment. Hanem kód! Csak épp inaktív. Nem érzed, hogy nem ugyanaz? Pl. lehetne más színnel jelölni, de az lenne az igazi, ha megmaradna a syntax highlight, csak halványabban, színes háttérrel stb.
Igen, a preprocesszor tökéletes lenne, csak pötyögni kell hozzá és – főleg – nem elég diszkrét, zavarja a szemet. De mindegy, annyit segítettél nekem ez alatt a 3 nap alatt, mint más 3 hónap alatt, nehogy már ezen kapjunk össze.
-
kesztió
aktív tag
Ehhez képest mutass már egy programozót, aki így iktat ki egy sort (vagy akár többet is). Érdekes, hogy mindenki kikommentel. Lehet, hogy nem véletlenül?
Holott mibe kerülne, hogy pl. a//
vagy/*
mellett lenne még olyan „kikommentelés”, ami pl. megőrizné a syntax higlight-ot, lehetőséget nyújtana szelektív find/replace-re stb. -
kesztió
aktív tag
Bizonyos oldalakon eleve úgy árulják ezt a bizonyos relét, hogy 3,3–5V.
De ezzel lenne a legkevesebb baj, mert a relé amúgy is külön egység lesz a szerelődobozban, hogy még véletlenül se kerülhessen 230V a felhasználó közelébe.Szóval akkor meg tudom úszni azt egy ESP32-vel, hogy ne legyen on-board feszültségszabályozó, vagy marad az eredeti ötlet az ESP-12S-sel és mindent én építek hozzá?
-
kesztió
aktív tag
Amúgy kurva jó hír van.
Úgy néz ki, hogy mind az OMRON SSD relé, mint a TM1637 vidáman elmegy 3.3V-on, így gyakorlatilag az egész 5V-os mizériának huss. Nem kell a lapra az AMS3117, a legnagyobb hőgenerátor!
Ha mégsem (pl. nekem történetesen fehér a LED), akkor sincs nagy baj, mert a táp külön van a szerelődoboz alján, és semmibe nem kerül, hogy direkt onnan hozzam mind az 5V-ot, mind a 3,3-at. -
kesztió
aktív tag
Közben egy másik kérdés.
A nagy eufóriában, hogy lesz külön státus LED, megfeledkeztem arról, hogy ennek a fényerejét biza szabályozni kellene. Mert ami nappal éppen csak látszik, az éjjel szétvakítja az embert.
Látom az ESP-12S pin diaramján, hogy néhány (pontosan 4) GPIO mellett fel van tüntetve a PWM (pulse width modulation?) jelzés.
Ez azt jelenti, hogy megfelelő konfiguráció után hardverből képes modulálni a LED fényerejét, nem kell szoftverből kínlódnom vele? -
-
kesztió
aktív tag
Sőt, akkor már a szimmetria kedvéért (és hogy ne legyen fent olyan üres) jöhet egy státus LED is, amúgy is elég idétlen lett volna, hogy egy tizedespontot használjak annak a kijelzésére, hogy épp aktív-e a padlófűtés reléje vagy sem. És esetleg minden billentyűlenyomáskor a pittyenés mellett a LED meg is villanhat. (Remélem, pont 2 mm-es átmérőjű LED-et lehet könnyen kapni.) Ez elvesz még egy GPIO-t, de valahogy megoldom.
-
kesztió
aktív tag
Miért árnyékolná le? Tesztelted?
Tesztelni ugyan nem teszteltem, de három darab, 1cm × 1cm-es tömör rézlapocska pont az antenna útjában nem hiszem, hogy annyira használna. Nem épp egy Faraday-kalitka, de majdnem.
a gomboknak meg mindegy
Sajnos nem annyira mindegy, és az esztétikai szempont csak a kisebb dolog. De képzeld el, milyen, amikor a kezed alatt van az a képernyő, amelyiken épp követed a gombnyomás eredményét. Én megbuktatnám azt a dizájnertanoncot, aki ilyent követne el…
Szóval, próbálok ötletelni, hátha eszembe jut valami értelmes.
-
kesztió
aktív tag
A lineáris feszültségosztók (ahol az ellenállások exponenciálisan nőnek, hogy egyenletes legyen a feszültségtávolság a két szomszédos pont között) eleve asszem VCC/2-nél nem tudnak feljebb menni, így a legfelsőbb ellenálláson kell finomítanom, hogy pont jó legyen.
A hőmérő megfordítása valóban jó ötlet lenne, de ezt már elég nehéz kivitelezni, ráadásul az ESP3566-nak a hőmérő felén kell lennie, mert a másik felén ugye ott van a 3 touch, ami a WIFI-t simán leárnyékolná. De szerencsére úgy van kialakítva, hogy nagyon könnyű leszigetelni, gondolom, 0,5…1 cm vastag szigetelőanyag azért talán elég lesz.
-
kesztió
aktív tag
Igen, az a hőmérő lesz, habár a legüjabb dizájnon a felső virág már csak három függőleges pont, míg az alsó virág egy kör (virág – a középpontja).
Én olyan szempontból nem döntöttem még el, hogy nem vagyok 100%-ban biztos, hogy majdnem olyan jól meg tudom csinálni ,mint a gyári. De egy próbát nagyon-nagyon megér, végülis mi ördöngősség van ebben, 93-ban, amikor befejeztem az egyetemet, ennél komplexebb cuccokat csináltunk már, pedig a 386-os még éppen csak hogy elkezdett terjedni.
Az USB-UART laphoz lesz egy dedikált csatlakozó a NYÁK-on. Akárhányszor szükségem van felprogramozásra/debugra, csak felcsatlakoztatom az USB-UART lapot, megcsinálom, amit kell, majd használat végén kihúzom a csatlakozóból, hótt fölösleges, hogy a ház 16 szerelődobozában egy-egy USB interfész lapuljon.
És az se mindegy, ugye, hogy 1 vagy 16 USB-UART pusztítja a pénztárcámat.
Így sem OK?
-
-
kesztió
aktív tag
Amúgy, ha már ESP8266, az ESP-12S tűnik a legfaszábbnak méret és tudás alapján (ugyanaz az újratervezett antenna, mint az ESP-12F, de felületszerelhető kivitel).
Kérdés viszont, hogy a régebbi ESP-07-nek vajon nem jobb-e a belső antennája. Valószínűleg nem, de inkább rákérdezek, mielőtt belefektetnék a dologba. -
kesztió
aktív tag
Hát ennél már jóval egyszerűbb az analóg bemenet… 4, legtöbb 5 ellenállás kell a létrához talán. És akkor marad még 6 elintéznivaló GPIO, amit már egyszerű kisakkozni.
Amúgy a kijelzők már meg vannak véve, potom 16 darab, ráadásul nem is aliexpresszes áron, mert sürgős volt a dolog. Így az esik. Főleg, hogy semmihez sincs ilyen piszokul jó könyvtár, mint ehhez, gyakorlatilag semmit sem kell csinálnom és működik. -
kesztió
aktív tag
Amúgy nincs gond, csak nem kell agyatlanul olvasni azt a lábat. 50 ms-onként (20 Hz) már biztonságos, legalábbis erről regélnek a nálunk okosabbak, és ez bőven sok egy touch billentyűhöz.
Ettől függetlenül hálás lennék, ha ki tudnád sakkozni kizárólag a digitális lábakkal, akar a Blaha Lujza vacakolni elenálláslétrával.
-
kesztió
aktív tag
Az, hogy mi bemenet, vagy mi kimenet, az ESP8266 nézőpontjából értendő.
– 3 db touch (TTP223): sima TTL bemenet × 3;
– display (TM1637): TTL kimenet × 2, CLOCK + DIO (bár sehol sem írja expliciten, hogy az utóbbi kimenet);
– 433 MHz remote (SF R433D): sima TTL kimenet × 1;
– hőmérő (SHT35): TTL × 2, de sajnos nem tiszta, mi bemenet és mi kimenet;
– passzív piezo speaker, sima TTL kimenet + ellenállás × 1.Ez sajnos 9, akárhogy is számoljuk.
Az biztos, hogy analóg láb nuku, ha van Wifi? nem olvastam sehol ilyesmit. Már beletörődtem az ellenálláslétrás megoldásba… -
kesztió
aktív tag
Köszi mindkettőtöknek a válaszokat (@its_grandpa), segítettetek a döntésben.
Az USB-s dolgot azért csak nem értem továbbra sem.
Programfeltöltéskor logikus, hogy az USB használja mind az RX, mind a TX lábakat. És első látásra az is OK, hogy debug esetén a kommunikáció csak egyirányú, hiszen a debug annyiból áll (sajnos), hogy egy soros konzolra (PuTTY) ki tudok írni értékeket.
De a Windows 10-nek ebben az esetben is tudnia kell, hogy egy nem akármilyen, hanem egy bizonyos USB eszköz csatlakozik, és gondolom, driver szinten időnként ezt le kell dumálnia, magyarán az lenne a logikus, hogy ilyenkor is legyen két irányú kommunikáció. Akkor ez hogy is van?Az is érdekes kérdés, hogy ha mégis csak elég a TX a debughoz, akkor ahhoz, hogy az RX lábat GPIO bemenetként használjam, nem kell mégis leválasztanom galvanikusan az USB to TTL lap TX-jéről? Magyarán jumpereket kell tennem, és minden debug elején piszkálnom kell a laphoz? Vagy van itt valamilyen trükk, ami nem jött át nekem?
(Amúgy, ha mégsem tudom kisakkozni az istennek sem, hogy legyen elég GPIO lábam, megoldhatom, hogy a három TTP223 touch modult ellenálláslétrával bekötöm az analóg bemenetre, ilyent már csináltam. Ezzel nyertem is 3 lábat, de fasza lenne, ha minél egyszerűbb lenne a NYÁK, mert nincs most időm tízszer újracsinálni, amíg megfelelő lesz a lap.)
-
its_grandpa
tag
Egyetértek a #13898-.ban írt véleményeddel, én is a "pucér" ESP12-es megoldást javaslom, így is építek ezt,azt.
Ennek ellenére pontosítanék mert az rx/tx esetén nem igaz, hogy köthet amit akar.
Az rx/gpio3 csak input, a tx/gpio1 csak output lehet, az adott lap pinout reference-et érdemes tanulmányozni. Az ESP-WROOM-32 gpio35-36 közötti 4 láb pl. csak input lehet.
Ha kesztió kolléga a touch modult véletlenül a gpio1-re kötné, nem fog működni neki.@kesztió - csak bátran
-
kesztió
aktív tag
Akkor még egyszer rákérdezek:
1. Az ESP-12S nél pl. bizonyos GPIO lábaknak BOOTOLÁSKOR (tehát, amikor még nincsenek bemenetre vagy kimenetre konfigurálva) egy adott logikai szinten kell lenniük (pl. relatíve nagy értékű ellenállással húzva), de utána azt csinálok velük, amit akarok?2. Normál (tehát debug, nem flash) üzemmódban az USB to TTL igényt tart valamelyik GPIO lábra? Vagy megmarad nekem továbbra is mind a 9?
-
-
gyapo11
őstag
Az évekig elketyegést úgy érted, hogy alvó módban? Mert a pártíz mA-es fogyasztást pártíz óráig bírják az elemek. Azt viszont meg lehet csinálni, hogy amíg van táp addig megy a cucc, amint megszűnik a táp, a diódán keresztül belépnek az elemek, a proci elmenti amit kell és elalszik. Így tényleg évekig el tud lenni egy elemkészlettel.
-
Janos250
őstag
Ezek a holdak a föld körül keringenek. És a föld gömbölyű. Bár ezt manapság újra egyre többen tagadják.
Ha jól emlékszem, a japán az, ami geostacionárius pályán "áll", bár lehet, hogy az indiai. A japánt és az indiait nem tudjuk itt használni.
A műholdak a pillanatnyi helyzetüket kürtölik szét a világba, és ez alapján, ahol fogni lehet, mindenütt használható. -
zsolti_20
senior tag
Akkor ez megint egy "alca" atveres :D nem csinaltak kulon techonologiat aminkepes tavolsagot merni a bal es jobb oldali fules kozott hanem csak a jelerosseg lesz gyenge, bar nem vagyok benne biztos mert a telefonrol siman megy a zene lejatszas akar 5 meter tavolsagbol is.
-
-
evilskati
aktív tag
Pedig rá vagyok állva a Rock zenére. A zajelnyomásban legjobban az Enter Sandman vált be.
Amerikai konyha-nappaliban van a hűtő. Ha a kanapén ülve bámulom a TV-t, akkor a bal fülemre merőleges a hűtő elhelyezése. TV nézéskor szokott zavarni, ha bekapcsol, ilyenkor feljebb nyomom a TV hangerejét, az egy ideig segít, de mivel "szabályos" hangja van, ezért könnyen rá tud állni a zümmögésre a füled, amikor már kihallod minden alapzaj mellett. TV-t is maximum 12-es hangerőn nézek, de akkor már a mosogatógép is be van kapcsolva. Alapból a 6-os hangerő bőven elég.
A hálószoba ablaka egyébként a főútra néz, a forgalom zaja érdekes módon abszolút nem zavar az alvásban.
Igazán akkor zavaró, ha nem megy a TV, csak olvasok vagy valami. Ilyenkor nincs alapzaj sem, ami elnyomhatja.
Nehéz ügy ez. Egyébként érdekes, de telibe ragasztottam a szekrény hátulját hangelnyelő szivaccsal. Ezzel azt értem el, hogy a szekrény teteje és oldala felé szinte megszűnt a hangkisugárzás, viszont a szekrény alja/hátulja ki van vágva a szellőzés miatt, mintha onnan most felerősödtek volna a hangok, minden zaj lefelé távozik.
-
gyapo11
őstag
Csak elfelejtetted hozzátenni, hogy a hallásod nem az igazi, mindenki közelről ordít a füledbe.
Nekem állandóan cseng a fülem, de azért a hűtőt hallom 1-2 m-ről még biztosan. Viszont nem cicereg, de nem is inverteres. Nyáron előfordul, hogy a meleg miatt a fagyasztóládával egy helyiségben alszok, na az már nem jó az éjszakai csendben, pedig napközben alig hallani azt is. -
gyapo11
őstag
Annyiban lehet pontosabb, hogy ha megnézünk egy embert infra képen, nem egyenletes a színe, vagyis mindenhol más a hőfoka. Egy odanyomott szenzor viszont azt a hőfokot veszi át ahova nyomtuk.
Nekem pl. garatba irányított infra simán 37.5 vagy afölötti értékeket is mutat, miközben nem vagyok beteg, semmi bajom, és egy századfokos hőmérővel hónaljban hozom a 37 alatti értéket. Más fülben, homlokon stb. A kontakt lázmérőkhöz is vannak értékek, hogy végbélben, szájban, hónaljban mennyit kell kivonni-hozzáadni, ez is azért van, mert nem egyformák a mérések. Tehát a pontos hőfok mellett az sem mindegy, hogy azt hol mértük. -
repvez
addikt
pro microt használnék, csak olvastam, hogy az UNO chipje kiszedhető éés magában is lehet használni, ezért gondoltam, hogy akkor megsporolhatom a microt,
Shift regiszteren keresztül kapcsolodna a panelhez a gombok.
Sajnos az eredeti panel már roncsolódott, igy nem lehet felhasználni . [kép]
egy ilyen panelem van, de ez fix, ehhez egy plusz PCB kell még ami összefogja a különbözö perifériákat , majd ujra egy csomo tüskesor, hogy a megfelelő helyre tudjam dugni ezen a lapon.
DE nem kaptam ehhez a cucchoz leirást, hogy tudjam mi merre van bekötve ezért kell az követnek ahogy itt van. -
repvez
addikt
akkor erről esetleg egy kicsit részletesebb leirás is jöhetne, hogy milyen kristály hogyan bekötve stb, meg az USB csatit hogyan kell a csiphez kötni board nélkül.
Egyelöre még nem a nagy projektet csinálom, csak egy régi joystiket probálok USB-re alakitani.
4 HALL sensor 7db potméter és 38db mikrokapcsolo. és ehhez van egy progi amivel macrokat is lehet állitani, hogy milyen gombnyomásra mit reagáljon játékban.CSak most azt kell megoldanom, hogy egy arduino chiphez az összes jelet oda tudjam vinni, és ehhez kell egy panel a botkormányba , kell egy a pedálhoz és a föpanel a gázkarba az arduinoval.
-
_q
addikt
Nekem is ESP32-vel deep sleepben megy fél évet kb egy 18650-es aksival erkélyen meg téli időszakban is. Persze itt pár fokkal melegebb van mint messzebb az epulettol, de annak ellenére hogy kaptam pár kritikát hogy a hideget nem fogja bírni, meglepően jól bírja az alirol rendelt 3400mAh-s aksi.
tonermagus
Ezzel egyedül leszek szerintem, de nekem nem jött be a 2 mag. Az oké hogy 2 magja van az ESP32-nek, de az egyiken mennek a perifériák kezelése, másikat amin a "loop" ciklus van még mehet a felhasználói kód. Ha használsz valami perifériás dolgot, mint wifi, Bluetooth, dpi stb. És mellé még beteszem valami hosszabb kódot akkor nem tud stabilan menni, mivel valami perifériás időközönként megtámasztja a kododat. Ezért vagy hanyagolni kell a perifériák használatát és akkor talán megy stabilan, vagy nagyon minimál dolgot szabad oda tenni. -
EvilNside
csendes tag
Nincs semmi gond az infrával, csak kicsit kellemetlen lenne a pontos célzás megvalósítása, ill. optikában se vagyok jártas, meg még nagyon sokmindenben nem
Gyanus nekem, hogy az enyém is így működik, csak esetleg, ha elvétette az ablakot, akkor más stratégiát követ, és többet/hoaaszabban fülel? Lehet, hogy ha a kinti pája nem megy, hamarabb le is merül, nem próbáltam.
-
M@nH.
aktív tag
A 8 bites tárolási kapacitás per cím miatt gondoltam kicsit trükkösnek a dolgot, de annyira valóban nem is vész.
Igen már rendeltem is esp-ket, várom már, hogy kipróbálhassam, valóban ez a lap lesz a legmegfelelőbb erre a feladatra. Az adatbázis is felkeltette az érdeklődésemet, de mindent csak szép sorjábanelkezdem és folyamatosan gyarapítom, tanulok vele és majd jönnek az újabb projektek. Köszönöm a segítségeket
Janos250: Igen erre én is gondoltam, hogy a sok írás megviseli az eepromoz, vagy sd-t, ezért is gondoltam, hogy lenne egy korrekciós beviteli mező a webfelületen, ha túl nagy az eltérés. -
zsolti_20
senior tag
Úgy látszik neked lesz igazad. A probléma az volt hogy D13-at használtam. A ledet át tettem D3-ra ott már serial monitorbol egyből kapcsolt. Örültem is magamnak. Majd mikor próbáltam excel VBA-ból akkor ugyan úgy lassú kapcsolást tapasztaltam. Valószínűleg a kapcsolat újra felállása lesz a gond. Ma már sajnos kifogytam az időből, újra írom a kódot holnap fix értékekkel, aztán meglátjuk mi lesz.
Köszi a segítséget. -
zsolti_20
senior tag
-
zsolti_20
senior tag
A soros kapcsolat letrejotte utan egy loopba fut bele ahol egy excel cella erteket valtoztatja 1-2 kozott. Rgyenlpre egy 1.5mp-s sleepet hasznalok excel vba scriptben. Igy vegre tudja hajtani a led fel es le kapcsolasat. Debha kisebb ertekre veszem mondjuk 0.5-re akkor mar csak kuldozgeti az ertekeket de nincs ideje vegre hajtani. Arduino uno boardot hasznalok az rx visszajelzo lednel latszik higy az adatot egybol fogadja de a parqncs vegrehajtasara mar nem marad ideje.
Arduino oldalon egy sima led villogtato kodot hasznalok ahol serial monitorba keri az utasitast. 1 vagy 2.
A loopban csak a kuldes resz kerult nem epiti fel ujra a kapcsolatot. A bitratat 9600-tol emeltem 2 millioig de ugyan az volt a gond mindig. A sebessegen nem valtoztatott. -
zsolti_20
senior tag
Üdv emberek!
aryes: emlékszem volt itt szó régebben az arduino gyorsításáról az órajel módosításának segítségével. Véleményed szerint segíthet megoldani a lassúság problémáját?
Sikerült megoldani az excel VBA és az arduino közti kommunikációt, tisztán látszik, mikor adatot küldök az arduinora akkor az boardon lévő led egyből felvillan az Rx-nél. De kell neki kb 0.8-1.2mp amíg felvillan a led ami csatlakoztatva van a D13-GND-re. Lehetséges gyorsítani az utasítás végrehajtásán? Vagy magával a kóddal lenne a gond? Van itthon egy ESP8266, lehet inkább arra kellene építenem ha gyorsaságot várok el?
Igazából a lényeg az, hogy szkennelek egy bárkódot, annak be kell érkeznie PC-re, lekéri a bárkód infót egy applikáción keresztül, az infó bekerül az excel A1 cellájába, majd továbbítja az arduionak és így végre hajtja az adott utasítást. Az egésznek a gyenge pont az arduino folyamat végrehajtási sebessége. A többi az villámgyorsan dolgozik. -
Imy
veterán
Köszi, kipróbáltam. A fordító hibaüzenetet dob, és a bekötés honnan derül ki?
Ez a jelenlegi program, de lehet valamit rosszul csináltam:
#define ROTE_CLK GPIO_NUM_xx
#define ROTE_DT GPIO_NUM_xx
#define ROTE_SPCTM 50000 // speed control time limit, not defined no speedctrl
volatile int32_t rotval = 0;
void IRAM_ATTR isrrot() {
volatile static uint8_t pinsta = 0x3, cwi = 0, ccwi = 0;
volatile static uint8_t cwexp[] = {0xD, 0x4, 0x2, 0xB};
volatile static uint8_t ccwexp[] = {0xE, 0x8, 0x1, 0x7};
int32_t rvchg;
#ifdef ROTE_SPCTM
volatile static uint32_t tc = 0, tm = 0;
uint32_t ctm, td;
#endif
pinsta = (pinsta << 2) & 0xf;
if (digitalRead(ROTE_DT)) pinsta |= 0x2;
if (digitalRead(ROTE_CLK)) pinsta |= 0x1;
if (pinsta == cwexp[cwi]) cwi++;
else if (pinsta == ccwexp[ccwi]) ccwi++;
if (cwi == 0x4 || ccwi == 0x4)
{
if (cwi == 4) rvchg = 1;
else rvchg = -1;
pinsta = 0x3; cwi = 0; ccwi = 0;
#ifdef ROTE_SPCTM
ctm = micros();
td = ctm - tm;
tm = ctm;
if (td < ROTE_SPCTM / 2) rvchg *= 7;
else if (td < (ROTE_SPCTM * 2) / 3) rvchg *= 4;
else if (td < ROTE_SPCTM) rvchg *= 2;
#endif
rotval += rvchg;
}
} // isrrot
int16_t getrotv() {
static int32_t lval = 0;
int32_t cval = rotval;
int16_t rotc = 0;
if (lval != cval) {
rotc = cval - lval;
lval = cval;
}
return (rotc);
} // getrotv
void inirotein(gpio_num_t clk, gpio_num_t dt) {
pinMode(clk, INPUT);
pinMode(dt, INPUT);
attachInterrupt(digitalPinToInterrupt(clk), isrrot, CHANGE);
attachInterrupt(digitalPinToInterrupt(dt), isrrot, CHANGE);
} // inirotein
void setup() {
inirotein(ROTE_CLK, ROTE_DT);
}
void loop() {
Serial.print("Encoder_positionp = "); Serial.println(rotval);
}
-
M@nH.
aktív tag
Utána néztem, kicsit trükkös a dolog (az adat max nagysága miatt binárisan), de nem lehetetlen. Köszi
Egy másik dolog. Arra van mód, hogy egy "unsigned int" változót ethernet segítségével weblapon keresztül változtassunk? Pl. egy szövegdobozba bevitt értéket gombnyomásra beíratok? -
Imy
veterán
Beleraktam a programba, de jelen esetben is össze vissza ugrál. Ha csak az encoder van benne, a hőmérséklet mérés ls kiírás nem, akkor jó. Okés, hogy a sok serial print, de az interuptnak nem kellene azt kiküszöbölnie?
#include <Adafruit_MAX31865.h>
// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(5, 6, 7, 8);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);
// Rotary Encoder Module connections
const int PinSW=3; // Rotary Encoder Switch
const int PinDT=4; // DATA signal
const int PinCLK=2; // CLOCK signal
// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF 430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL 100.0
//Resistance meter
float Ra = 0.00385;
float R0 = 20.9;
float Rt;
float T;
///////ENCODER//////////////////////////
// Variables to debounce Rotary Encoder
long TimeOfLastDebounce = 0;
int DelayofDebounce = 0.01;
// Store previous Pins state
int PreviousCLK;
int PreviousDATA;
int displaycounter=0; // Store current counter value
/////////////////////////////// TEMPERATURE_SET///////////////////////////////////////////
int Temp_set_pos;
int Temp_set_last;
int Temp_up;
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 Sensor Test!");
thermo.begin(MAX31865_2WIRE); // set to 2WIRE or 4WIRE as necessary
pinMode(PinCLK,INPUT_PULLUP);
pinMode(PinDT,INPUT_PULLUP);
pinMode(PinSW,INPUT_PULLUP);
// Put current pins state in variables
PreviousCLK=digitalRead(PinCLK);
PreviousDATA=digitalRead(PinDT);
// Set the Switch pin to use Arduino PULLUP resistors
pinMode(PinSW, INPUT_PULLUP);
}
void loop() {
///////////MAX31865////////////////////////////////////////////////////////////////////////////
uint16_t rtd = thermo.readRTD();
//Serial.print("RTD value: "); Serial.println(rtd);
float ratio = rtd;
ratio /= 32768;
Rt = RREF * ratio;
T = ((Rt - R0) / (R0 * Ra));
//Serial.print("Ratio = "); Serial.println(ratio,8);
Serial.print("Resistance = "); Serial.print(RREF * ratio, 2); Serial.println(" ohm");
//Serial.print("Temperature = "); Serial.println(thermo.temperature(RNOMINAL, RREF));
Serial.print("PakaTemp = "); Serial.print(T, 2); Serial.println(" C");
// Check and print any faults
uint8_t fault = thermo.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (fault & MAX31865_FAULT_HIGHTHRESH) {
Serial.println("RTD High Threshold");
}
if (fault & MAX31865_FAULT_LOWTHRESH) {
Serial.println("RTD Low Threshold");
}
if (fault & MAX31865_FAULT_REFINLOW) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (fault & MAX31865_FAULT_REFINHIGH) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_RTDINLOW) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_OVUV) {
Serial.println("Under/Over voltage");
}
thermo.clearFault();
}
Serial.println();
//delay(500);
// If enough time has passed check the rotary encoder
if ((millis() - TimeOfLastDebounce) > DelayofDebounce) {
check_rotary(); // Rotary Encoder check routine below
PreviousCLK=digitalRead(PinCLK);
PreviousDATA=digitalRead(PinDT);
TimeOfLastDebounce=millis(); // Set variable to current millis() timer
}
// Check if Rotary Encoder switch was pressed
if (digitalRead(PinSW) == LOW) {
displaycounter=0; // Reset counter to zero
Serial.print("Counter = "); Serial.println(displaycounter);
}
}
// Check if Rotary Encoder was moved
void check_rotary() {
if ((PreviousCLK == 0) && (PreviousDATA == 1)) {
if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 0)) {
displaycounter++;
Serial.print("Counter = "); Serial.println(displaycounter);
}
if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 1)) {
displaycounter--;
Serial.print("Counter = "); Serial.println(displaycounter);
}
}
if ((PreviousCLK == 1) && (PreviousDATA == 0)) {
if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 1)) {
displaycounter++;
Serial.print("Counter = "); Serial.println(displaycounter);
}
if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 0)) {
displaycounter--;
Serial.print("Counter = "); Serial.println(displaycounter);
}
}
if ((PreviousCLK == 1) && (PreviousDATA == 1)) {
if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 1)) {
displaycounter++;
Serial.print("Counter = "); Serial.println(displaycounter);
}
if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 0)) {
displaycounter--;
Serial.print("Counter = "); Serial.println(displaycounter);
}
}
if ((PreviousCLK == 0) && (PreviousDATA == 0)) {
if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 0)) {
displaycounter++;
Serial.print("Counter = "); Serial.println(displaycounter);
}
if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 1)) {
displaycounter--;
Serial.print("Counter = "); Serial.println(displaycounter);
}
}
Serial.print("Counter = "); Serial.println(displaycounter);
}
-
zsolti_20
senior tag
Össze állt a kép végre a fejemben, hogy mi ez a kommunikáció egész pontosan. A segítségeddel sikerült elindulni.
Látom hogy a serial monitoron megjelenik a szkennelt dolog de csak ??????-et látok, gondolom a baudrate miatt. Egyenlőre minden raten ugyan úgy csak kérdőjelek látok, de az biztos hogy az információt az arduinó megkapja. Igazad volt hogy a jumperes részhez kell forrasztani. Csak logika az egész...
Ha sikerül megoldani a ?????-es problémát akkor van még egy dolog amiben nem vagyok biztos hogy lehet megcsinálni.Folyamatos automata szkennelésre lenne szükségem. De a modul csak akkor szkennel ha megnyomom rajta a gombot. A kérdésem az, hogy ez szoftveresen megoldható? Vagy a gombnyomást szimuláljam inkább arduioval?
Szerk.: 9600baudrateval hibátlanul megy. -
zsolti_20
senior tag
Csupán azt néztem meg, hogy mi hová megy egész pontosan. Próbáltam több módszert is most ott tartok hogy a scanner 3,4 CH340 lábát kötöttem az arduino UNO RX,TX lábára. Kaptak közös GND-t. De valamiért serial monitorban nem látok semmit sem. Egyébként van erre valahol egy egyszerű példakód?
Az igazat megmondva még soha nem foglalkoztam UART-al. Minden kezdet nehéz számomra de bele szoktam jönni miután megértem a működését. -
zsolti_20
senior tag
Kicsit rámértem hogy mi hol van egész pontosan és most jól össze zavarodtam bekötés terén. Bedobok ide egy képet, mi hová vezet, mert nem vagyok biztos benne hogy az arduinonak az s-tx/s-rx-hez kell csatlakonia.
kép:
[link]
Ezeket úgy mértem ki hogy a jumper le volt húzva. -
Dißnäëß
nagyúr
Az ott balra egy piros LED gyűrűvel ellátott pushbutton. A készülék főkapcsolója a fenekén van. Táp bedug, főkapcsoló bekapcsolásra még a kütyü nagy trafója nem indul, egy külön nyáktrafó viszont áram alá kerül, ami fesszabályzott egyenirányítással ad stabil 5V-ot egy Leonardo-nak. Az meg fade-elgeti a LED-et félhalványan ki-be szép lassan. Amint a gombot megnyomom egyszer, ugyanúgy, mint bármilyen gyári eszköz, indul a mandula. Az Arduino egy 5A/250VAC relével zárja a nagy trafó primer körét, éled az összes szekunder (fűtések + anódfeszek) és indul az erősítő. (A relé tekercs áramfelvétele pont az Arduino limitjén belül van). LED gyűrű meg folyamatosan világítóra vált. Amint megint megnyomom a gombot, relé elenged (normally open), a nagy trafó primer köre megszakad és a készülék nagyja kikapcsol, LED megint fade-elget. Kb ennyi egyelőre. Implementáltam még a kódba a fade mellé a debounce-ot is az example-ök közül, ami a nyomógomb zajt semlegesíti, tehát még véletlen sem, illetve akarva sem tudom megcsinálni azt, hogy egymásután többször gyorsan megnyomva a gombot a relé elkezd mint az állat ki-be kapcsolni. Ez küzdős volt, a fade loop-al jól összehozni, de valahogy kiokoskodtam és tökéletes most.Van egy másik Arduino-m, egy Raspberry Pi Meet Aurdino-m (ami szintillesztésre is kiváló Pi és Arduino feszek között), de ezt magában, Pi nélkül fogom szerintem a következő projektbe betenni és jópár dolgot figyeltetni vele az erősítő működésében. (Az nagy erősítő lesz, nem fejhallgató erősítő, mint ez).
Ha meg elég merész lennék, a wifis ESP32-t befognám és írnék hozzá egy appot, de bilibe lóg a kezem, azt majd később
-
Janos250
őstag
Ha Pi-t akarna használni, akkor valóban új dolgokat kellene megtanulnia, de az ESP32 pont ugyanúgy programozható, ugyanaz a program fut rajta, mint az UNO-n, nanon, vagy a többieken.
A interruptos példaprogramok is. Pl. azattachInterrupt
is.attachInterrupt(GPIOPin, ISR, Mode)
Ugyanazok a paraméterek, ugyanaz a sorrend. Az, hogy van még benne lehetőség, azt nem feltétlen kell kihasználni. Például, hogy az ISR --t betehetjük a gyors memóriába (IRAM_ATTR
), ezek csak pluszok, ami az UNOban nincs, ezeket nem feltétlen kell használni, mehet rajta az UNO program, sokkal gyorsabban.
Nem hiszem, hogy pl. a párhuzamos programozás akkora nehézség lenne. Igaz, a következő példában cout van, nem Serial.print, de természetesen a Serial.print is ugyanúgy használható.
http://arduinouser.hu/esp32/AszalakEsAzESP32.pdf -
kesztió
aktív tag
Mondjuk, a szalagkábel pont olyan eszközben lesz, amit ideális esetben egyszer szerelünk és többet el sem mozdítjuk (falba süllyesztett okos termosztát), de ettől még nekem nagyon sérülékenynek tűnik, ha a kábelt sokat mozgatjuk, az előbb vagy utóbb kiszakad a forrasztás helyén. Eltérően a fotón látható jumpertől, amelynél sokkal kisebb mozgási lehetőséget ad a kábelnek. De ha azt mondod, nem fogok hülyeségekkel kínlódni és közvetlenül fogom forrasztani a kábelt.
Ha már itt tartunk, van valami célszerszám a szalagkábel szigetelésének eltávolítására? Vagy egyenként kell lekínlódni őket a végekről forrasztás előtt? Esetleg árulják a kábelt előre pucolva forrasztáshoz?
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! Gigabyte B450M R7 2700X 16GB DDR4 512GB SSD RX VEGA64 8GB CM 690 III FSP 600W
- Honor Pad X8 64GB, Wi-Fi, 1 Év Garanciával
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Pro 24GB RAM 512GB SSD garanciával hibátlan működéssel
- BESZÁMÍTÁS! Gigabyte B760M i5 13400F 16GB DDR4 512GB SSD RTX 3070 8GB Pure Base 500DX fehér 650W
- BESZÁMÍTÁS! ASROCK H310CM i5 9600K 32GB DDR4 500GB SSD RTX 3050 8GB DeepCool Tesseract SW 500W
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest