- Yettel topik
- Mobil flották
- Második bétánál jár a One UI 8
- CMF Phone 2 Pro - a százezer forintos kérdés
- Xiaomi Mi 11 Ultra - Circus Maximus
- Xiaomi 11 Lite 5G NE (lisa)
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy A54 - türelemjáték
- Tokba kerülnek a Pixel 10 mágnesei
- Motorola Edge 50 Neo - az egyensúly gyengesége
-
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
-
gyapo11
őstag
válasz
Atamano #13696 üzenetére
Az elektronikai fejlesztéssel foglalkozó emberek már 20 éve is saját nyákot terveztek, gondolom jó minőségű alkatrészeket ültettek a proci mellé, jó minőségű csatlakozókat, és assemblyben, esetleg c-ben, basicben, pascalban programozták. Akkor én is vettem egy ilyen beültetett, tesztelt nyákot, de mai napig sem használtam, túl bonyolultnak éreztem. Ez a helyzet az arduinoval változott, ez az IDE-vel, az usb kapcsolattal elérte azt az egyszerűséget, ami ahhoz kellett, hogy tudjam használni.
Hosszú távra és fontos helyre én sem merném használni az olcsó kínai arduino másolatokat, de egyrészt lehet kapni, eredeti arduinot is, talán jobb minőségű alkatrészekkel, másrészt az arduino teljesen ingyenes, tehát 0-ról le lehet gyártani, gondolom sokkal többe kerül úgy, de jó minőség érhető el jó minőségű alkatrészekkel, forrasztásokkal, csatlakozókkal. És a bootloader beégetése után akár az IDE-t is lehet használni programozásra. -
válasz
Atamano #13696 üzenetére
Jók a meglátásaid! Ezek alapján ha tartós, netán szélsőséges körülmények közötti használatra készít az ember arduino alapú készüléket, akkor a prototipizálás után, ha kész a program is, a készen vehető UNO vagy klónjai helyett kell egy saját nyákterv, kell bele pl. egy külső programozóval felprogramozott atmega328p meg minőségi alkatrészek, fixre szerelt csatlakozásokkal és perifériákkal, esetleg táppal, gondosan dobozolva.
-
zsolti_20
senior tag
válasz
Atamano #13696 üzenetére
Hmm erdekes a tema. Az arduino 0-rol valo felpitese tehat magasabb minoseget kepes garantalni, ha kihagyunk minden olyan alkatrreszt ami nem szukseges az adott feladathoz.
Igy eredemesebb lenne inkabb megepiteni a sajat arduinonkat?
Ha ez sem garantal megfelelo szintu minoseget akkor mivel erdemes megoldani? -
Atamano
csendes tag
válasz
daninet #13687 üzenetére
Az Arduino az egy fejlesztő környezet. Ezzel a fejlesztő környezettel kompatibilisek az Arduino-t fejlesztő cég saját lapjai és ezek kínai klónjai.
A fejlesztő lapon található mikrokontrollerek pl atmega328p normál körülmények között 20 éves időtartamra számolva alacsony meghibásodási százalékot garantál a gyártója (Atmel).
Csak gondolj bele,hogy mennyi 20-30 éves 8 bites konzol muzsikál jól még manapság is.
Természetesen a várható élettartamot erősen befolyásolja a nyáklapon található egyéb alkatrészek száma,fajtája. Pl szerintem az elektrolit kondenzátorok hamarabb adják meg magukat.
Azonban leszögezném,hogy minden egyes kínai klón alapvetően egy nagy big black box,mert ezeket a költséghatékonyság jegyében állították elő.Tehát a legolcsóbb készleten lévő alkatrészekből. Amivel nincs is baj addig,amíg az ember csak led villogtatásra használja a lapokat.Ahhoz aztán tényleg csak annyi kell,hogy működjön.
Itt csak,akkor kezdődik a baj,amikor mindenre is ezeket akarjuk felhasználni.Az oke lenne,ha a prototípust tervező asztalon próbapanelon összerakjuk, teszteljük.Arra viszont felvonnom a szemöldökömet ,amikor egy uno nyáklap dupont csatlakozóit + egy rakat ragasztót felhasználva készülnek komoly feladatok kivitelezésére eszközök.
Ettől ne várjunk már megbízhatóságot,hosszú élettartamot meg minőséget. -
Janos250
őstag
válasz
tonermagus #13693 üzenetére
Az M8 tudtommal 10 Hz-es adatokat tud adni, ha úgy állítod be.
Az adatátvitelnek bírni kell az ESP8266 esetén is. Nem hiszem, hogy hamis, nem hallottam, hogy ezeket hamisítanák. A kínaiak saját, külön neveken kerülnek forgalomba. -
válasz
tonermagus #13693 üzenetére
Szerintem ezek az olcsó modulok ilyen sebességgel képesek számolni. Lehet a kommunikáció bármilyen gyors, ha a modul 2mp-ig ugyanazokat a koordinátákat adja vissza.
-
tonermagus
aktív tag
Sziasztok!
Befejeztem az GPS projektem, amit már többször taglaltam itt.
Szerencsére a pontosság nagyon jó lett! Sík terepen jó időben 0-1m közötti. Meglepően pontos. 200-300m-re teszteltem, a 200 és a 300m-es távot is mindig ugyan oda jelzi.Semmi extrát nem használok, sima Neo M8N (valszeg hamis) és egy külső antenna.
Számítok rá hogy rossz időben, felhős éggel drasztikusan rosszabb lesz az eredmény, de eddig mindig jó idő volt
Egy kérdés maradt hátra: Az ARduino 1-2 másodpercenként frissíti csak a távolságot. Ugye egy kijelzőn nézem hogy éppen mennyit ment az eszköz, és csak 1, de inkább 2 másodpercenként frissül a távolság. Ezt lehet valahogy gyorsítani? Arduino Mega-t használok és annak a Serial3-as portját. Illetve még használom mellette a Serial1-et is.
Ez így normális, vagy esetleg programozási hiba? Esetleg eszköz a szűk keresztmetszet?
Tervezem hogy méret miatt ESP32-re váltok, esetleg ezzel gyorsabb lehet a frissítés? -
gyapo11
őstag
válasz
zsolti_20 #13689 üzenetére
Vba ügyben semmit nem tudok mondani, de soros port bitjeinek billegtetésére már írtam programot. Egész pontosan egy hw kulcs volt, kifelé küldtem x db impulzust, és befelé is figyeltem egy másik bitet, hogy mikor változik. Mi lenne, ha két pinnel vinnéd át a biteket handshake-kel, egyik a clock másik a data. Ezt realtime megkapja az arduino, a bitidő szerintem lehet mondjuk 10 μs, tehát ha nem regényt akarsz átküldeni, akkor simán mehet egy függvénybe és addig más nem kapja meg a vezérlést, míg kész nincs.
-
gyapo11
őstag
válasz
tibi-d #13686 üzenetére
De ugye az irq hívás verembe ment adatokat, és ha ez első után nincs letiltva az irq, akkor ezt a prell jó sokszor meg tudja tenni pár ms alatt, ami nem egészséges. És ezen a delay sem segít. A delay akkor jó, ha nem irq-t indít a nyomógomb, hanem beolvassuk az állapotát.
-
Dißnäëß
nagyúr
válasz
daninet #13687 üzenetére
Nemrég lettem kész egy picivel, erősítőbe standby gomb on/off implementáció, zajszűréssel (Examples -> Debounce) együtt, mivel az nyomógomb. (Görgess lentebb, megtalálod a nagy üdvrivalgásomat).
Eddig jó, sokat megy.
Cimbi geotermikus, napenergiás és mindenféle vegyes modern rendszert vezérel Pi-kkel meg egy raklap Arduino-val egy hotelnek és a teljes "rancsnak" (minden melléképület, uszoda, stb). Hőmérséklet, pára, mindenféle figyelések, szivattyúk, stb. komplett a teljes hóbelevanc vezérlése. Hibátlanok, betonstabil évek óta az egész. Fontos a jó táp, áramfelvételekre ügyelni, ha relék is vannak, + környezeti jellemzőkre, ha nem csak házon belül lesz 21 fokon, azért ezek alapjáraton nem durván Szibériába szánt kütyük. Ilyen alap dolgokat betartva teljesen megbízhatóak, elmondása szerint. Ahol kell, olyan dobozba tette őket, medence közelben, párás helyen, ilyesmiknél, de ez a már említett alapdolgok tartozéka, szóval ha gyári speckókon belül maradsz (bőven belül), elvileg hibátlan.
-
zsolti_20
senior tag
Sziasztok! Minden lehetőséges bejártam már soros porton PC---> arduino soha nem fog tudni kommunikálni egymással olyan gyorsan mint arduino IDE-ből. Ki is fogytam hirtelen az ötletekből, van valakinek ötlete, hol kereshetnék még megoldást?
A lényeg annyi, hogy excel cella tartalmát kell úgy átjuttatnom arduinora, hogy az utasítást egyből végre tudja hajtani. Gondolkodtam azon, hogy az ESP8266 nem lenne elég gyors vagy nincs neki olyan rejtett funkciója amit felhasználhatnék? -
daninet
veterán
válasz
tibi-d #13683 üzenetére
Köszönöm mindenkinek a válaszokat, ebből már megoldom
Még egy kérdés, bár ez nem programozás:
Használ valaki arduino-t hosszabb távon? Például én most egyet kapunyitás csengőnek készítek, és mondjuk csak áramszünetnél lesz kikapcsolva, de egy jó 10 év munkának néz elébe. Van hosszú távú tapasztalata ezekkel a kontrollerekkel valakinek?
-
válasz
tibi-d #13683 üzenetére
Hát az pergésmentesítés nélkül elég sok meglepetést tud okozni, ha a bemeneten mondjuk kapcsoló lesz, de az egyszerű loop-os megoldásba is érdemes a
delay(5);
helyett inkább egy
delay(50);
vagy akár 100 is, a pergés kiküszöbölése érdekében. Ha kapcsoló/nyomógomb lesz a bemeneten.
-
Ittnemaz
aktív tag
üdv.
vállal valaki "projekt munka" elkészitését pénzért? -
M@nH.
aktív tag
válasz
daninet #13679 üzenetére
Szia
Szintén kezdő vagyok, de ha jól értem valami ilyesmit szeretnél.bool buttonState = 0;
bool lastButtonState = 0;
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
buttonState = digitalRead(2);
if (buttonState != lastButtonState)
{ if (buttonState == HIGH)
{
Serial.println("on");
}
else
{
Serial.println("off");
}
delay(5);
}
lastButtonState = buttonState;
}
-
válasz
daninet #13679 üzenetére
Állapotgép. Egy végtelen ciklusban minden alkalommal beolvasod a bemenet értékét. Kell egy változó, amit még a ciklus előtt deklarálsz, és amiben az előző állapotot tárolod. A beolvasás után összehasonlítod az aktuális állapotot az előző ciklusban elmentett állapottal, ha nem egyforma, akkor végrehajtod a feladatot, amit változáskor kell lefuttatni, felülírod az előző állapotot a mostanival és kész.
-
daninet
veterán
Sziasztok!
Kezdő kérdés:
Példát keresek arra, hogyan tudok egy loopot futtatni ha egy figyelt láb HIGH-ról LOW-ra vált vagy fordítva.
Csak akkor futhat le ha váltott, tehát a == HIGH nem működik, mert ugye akkor folyton fut amíg az high. Nekem a váltás pillanatában kellene egyszeri futtatás.Köszi
-
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. -
And
veterán
válasz
Janos250 #13673 üzenetére
Ez nem jó elképzelés. Mindkét (A, B) jel minden szintváltozására megszakítást kell kapni, és ezekből ideális esetben négy, de minimum három vagy kettő darab szükséges az irány egyértelmű detektálásához (ha nincs meg a 3 db. él, akkor 'félútról' visszatekerve kaphatunk egy ellenkező irányú jelzést is, ami nem feltétlenül korrekt). Amíg nincs meg az irány, addig nem lehet / szabad felhasználni a beérkezett éleket, mert addig csak annyi bizonyos, hogy az enkódert megmozdították, de még nincs feldolgozható és egyértelmű (üzembiztos) működtetés valamelyik irányban. Az nem elegendő, hogy az első megszakításban olvassuk a másik fázis jelét, mivel ha a futás kellően gyors és/vagy a rotary-t lassan tekerik, akkor nagyságrendekkel gyorsabban fut le az IRQ, mint ahogy az összes szükséges él beérkezne az inputokra.
Van rotary enkóder olvasásra bevált kódom, de nem arduino-ra, hanem más uC-re. -
Janos250
őstag
Én encoder ügyben eléggé a partvonalról kiabálok be, de nem nagyon értem, hogy miért van mindkét pinre megszakítás.
Én úgy képzelem, hogy az egyik pinre megy a megszakítás, és a másikat csak az irány miatt olvasod a megszakításon belül.
https://playground.arduino.cc/Main/RotaryEncoders/#Waveform -
Imy
veterán
Van valakinek ötlete, hogy az encoder megszakítással hogyan képes megfelelően működni? Van valakienk egy működő programja? Nekem sehogyan sem akar összejönni... Ha ezzel zsákutcába jutok jobban járok egy potméterrel, de az encoder jobb lenne.
-
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. -
Janos250
őstag
"Pl. egy szövegdobozba bevitt értéket gombnyomásra beíratok?"
ESP8266, és ESP32 esetén WiFin természetesen, elég egyszerű, ezeket szoktuk használni. Lehetőleg EEPROM-ot használj, mert ahogy elnézem, rengetegszer kell újraírni. A flash , SD kártya nagyon sok újraírást kibír, de ennyit azért nem, kivétel, ha nem mindig ugyanarra a helyre írod, vagy csak mondjuk N-ik impulzus érkezésekor írsz, de akkor
áramszünet esetén elveszhet max. N impulzus számlálása. -
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. -
válasz
zsolti_20 #13658 üzenetére
Szerintem félreértés van, az lehet a lassúság oka, hogy a serial kapcsolat felépülésekor az arduino reseteli magát!
Tegyél egy 10 uF kondenzátort a reset és a gnd közé, és nézd meg, hogy megszünteti-e a késleltetést. (Programozás előtt ezt nyilvánvalóan ki kell húzni, mert nem fogod tudni feltölteni a programot)
Ha nem, akkor sem tartom valószínűnek, hogy az arduino lassúsága lenne az oka, bár nem írod, milyen boardról nem szó, de az uno 16MHz sebessége azért nem annyira lassú, hogy ilyen késést okozzon. Mekkora bitrátával küldöd az adatot? Jó lenne látni a kódot a küldő és a fogadó oldalhoz is (ha a kondenzátor nem oldja meg a dolgot). -
Tankblock
aktív tag
-
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. -
Nem tudom mire gondolsz, de annyira nem trükkös.
Van lehetőség ethernet-re is, de nem annyira bevett szokás vezetékes netet használni, viszont az említett esp wifi-képes, úgyhogy úgy látom az lesz a neked való lap.
ESP8266 vagy ESP32. A rajtuk lévő flash-t nagyon sokféleképpen lehet használni, akár egy szöveges fájlban is tárolhatod az adatokat, de van rá sqlite adatbázis (!) is. Úgy emlékszem eeprom emulációt is láttam, ami úgy ír a flash memóriába, mintha eeprom lenne, de azt most nem találom. -
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? -
M@nH.
aktív tag
Sziasztok.
Nem régóta foglalkozom arduinoval, de nagyon tetszik. Sok minden alap kapcsolást/programot kipróbáltam már és most az első tényleges projekt is alakulóban van. A lényege, hogy 2 fogyasztásmérő s0 pulzusait számlálja a program, ami azt jelenti hogy 2000 impulzus számlálása után, hozzá ad 1-et a kW számláló értékéhez, majd nullázza az impulzus számlálót. Így számolva külön a 2 fogyasztásmérőn lévő fogyasztást. A két értéket majd egy weblapon akarom megjeleníteni. Viszont az első probléma ami eszembe jutott, hogy ha áramszünet van akkor a változók nullázódnak. (tudom lehetne szünetmentes is, de most erre a problémára a megoldás nagyon érdekel)
Szóval a kérdésem az lenne, hogy hogyan lehetne eltárolni úgy a két számláló értékét, hogy ha visszajön az áram, akkor az utolsó állapottól folytassa a számlálást?
Elsőre egy SD kártyára gondoltam, hogy kW-onként frissíti egy txt file tartalmát, majd áramszünet után ugyanabból a fileból olvasná be a változók értékét, így folytatva a számlálást.
Ez így megvalósítható? Vagy van egyszerűbb módja is ennek? -
zsolti_20
senior tag
Üdv emberek! Egy merész dolog jutott eszembe a mai napon munkában de nem vagyok benne biztos hogy működne. Van itt egy USB-UART programozóm, ami még annak idején arduino pro minihez vettem.
Mivel USB-UART rogramozó, ezért lehetséges felhasználni arra, hogy egy excel file mondjuk A1 cellájából adatot küldjek arduinóra VBA segítségével? -
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);
}
-
válasz
zsolti_20 #13640 üzenetére
Nagyon szívesen.
Arra figyelj még oda, hogy ha UNO-val használod, annak 5V-osak a kimenetei, a scanner pedig ha jól értem 3.3V. Nézd meg, hogy van-e szintillesztés gyárilag a s-rx s-tx pineken, pl szimpla feszültségosztó is megteszi, és ha nincs, tegyél rájuk (elég a tx-et összekötni az arduino-val, mert küldeni úgysem fogsz neki adatot soros porton), különben kockáztatod, hogy esetleg megsütöd a szerkezetet, és kár lenne érte, elég drága cucc. -
zsolti_20
senior tag
válasz
Janos250 #13635 üzenetére
Nincs semmi probléma, csupán ismeretlen volt az UART számomra, de pár információ után már megértettem így tudok vele dolgozni.
Köszönöm szépen a manualt és a példa kódokat is mindenkinek.
Innentől már feltudom építeni azt amit szerettem volna.
AZ új modulokkal mindig problémám van a kezdetekkor de amint ráérzek minden sima.
Köszönöm nektek még egyszer, innen már boldogulok.
Ez a szkenner pedig a lehető legjobb választás volt a következő projektemhez, mivel elég pontosan,gyorsan tud szkennelni hozzá. Pont amire szükségem volt/van/lesz. -
Janos250
őstag
válasz
zsolti_20 #13619 üzenetére
Igen, én ajánlottam, de már nagyon megbántam. Nem gondoltam, hogy belegabalyodsz. Még én se használtam, de a leírások alapján úgy tűnt, megy rendesen. Elolvastad a manualt, és a kódok leírását? Tudod, ha minden húr szakad, olvassuk el a használati utasítást. Ott ugyanis le van írva, hogy használható HID és USB-n sorosport üzemmódban. Ha nem akarod egyiket se, akkor jumperrel közvetlenül az UART-ját kötheted az arduino panelhoz. Van a neten számos leírás.
Videó is van róla, igaz, valami hottentotta nyelven, de mutatja a bekötést.
https://www.facebook.com/econtec/videos/572034406744537/Az arduino.cc-n is van róla szó:
"Instead of soldering, you may be able to remove the two jumpers on the scanner and connect a cable between the pin marked S-RX to the TX of one of your mega's serial ports and also the pin marked S-TX to the RX of the same mega serial port.
You need also a common ground connection between the mega and the scanner.
Write a sketch to read the chosen mega serial port and write the data read (at 9600baud) to the serial console."
Mutatja is, hol a lábak:
https://forum.arduino.cc/index.php?action=dlattach;topic=692554.0;attach=370803Egy mintaprogram is van rá:
void setup() {
Serial.begin(19200) ;
Serial.println("starting") ;
Serial1.begin(9600) ;
}
void loop() {
if (Serial1.available() > 0) {
Serial.print(char(Serial1.read())); // !!! x 2
}
}
Nem gondoltam, hogy ilyen galiba lesz belőle.
-
válasz
zsolti_20 #13632 üzenetére
Én szeretem a rejtvényeket, ezért nem bánom, hogy nem olvastam el korábban az Ali oldalon a leírást, de magadnak spórolhattál volna egy kis időt, ha elolvasod.
"Support for setting module parameters by scanning the setup code (see the specification for details)
Settable parameters include (read mode, baud rate setting, command mode, prompt tone output adjustment, output format, barcode selective setting)"
Még a baud rate is le van írva.Olvasd át a manualokat:
[link]
Benne vannak a vezérlő kódok!Van benne Continuous mode és night vision is.
-
válasz
zsolti_20 #13632 üzenetére
Na akkor szuper.
Nézd meg, hogy mit csinál a gomb, általában földre szokott zárni egy i/o lábat, de lehet, hogy tápra, ezt mérd ki, és utána arduino-val te is meg tudod tenni, de ettől még nem fog neked folyamatosan szkennelni. Gondolom van egy timeout, ha egy bizonyos ideig nem lát kódot, abbahagyja a szkennelést. Tapasztald ki, mennyi ez az idő. Az is lehet, hogy serial-on vmi kóddal is lehet vezérelni (mivel ott az rx láb, csak van funkciója), de ehhez már kéne dokumentáció. Esetleg próbálj neki karaktereket küldeni, hátha beletrafálsz.A gomb folyamatos nyomvatartását is próbáld ki, hátha.
-
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. -
válasz
zsolti_20 #13630 üzenetére
Feltételezem, hogy ch340 driver már telepítve van a gépeden, a kínai klón arduino-k általában ezzel vannak szerelve.
Mikor gépre dugod, felismerte? Megjelent egy új com port a gépen?
Az ide-ben ki kell választani a megfelelő COM portot, és utána fog csak működni a serial monitor. Feltételezve, hogy nem kell neki tx-en vmi inicializáló parancsot küldeni, hanem bedugás után küldi sorban az adatot.
Eredetileg mivel is kötötted össze a SDA, SCL lábakat, milyen lappal?Látom van a nyákon egy csipogó, mikor kódot mutatsz neki, visszajelez?
-
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. -
Janos250
őstag
válasz
fecske13 #13611 üzenetére
De!
Látom, a link már nem él, mert azt a szervert közben leállították. A program valamelyik verziója megvan, majd felteszem valahova, hátha valamikor valakit érdekel. Elég bonyolult, mert sok mindent kell csinálnia, így tutorialnak nem alkalmas.
Azért írja ki induláskor az árvíztűrő tükörfúrógép szöveget, mert ez az értelmetlen szó tartalmaz minden magyar ékezetes karaktert, így ezzel szoktuk ellenőrizni, hogy minden magyar karakter helyesen jelenik-e meg.
Amit a programhoz szöveget leírtam, azt ma is tartom. -
zsolti_20
senior tag
Sziasztok! Megérkezett végre az MH-ET live scanner v3.0
[link]
Sajnos nem találok egy leírást sem hogyan csatlakoztatható arduinohoz vagy hogyan használható. Valaki jártas ilyesmiben? Esetleg tud segíteni elkezdeni? -
Janos250
őstag
válasz
gyapo11 #13605 üzenetére
Igen.
Én az ESP8266WebServer-t használom, mert szerintem az a legkényelmesebb.
A fejlesztője aktualizálta, változtatás nélkül fut ESP32-n is.#include <WiFiClient.h>
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);
server.begin(); // start the HTTP server
server.on("/", handle_index);
void handle_index() {
// ide irom, hogy mit csinaljon
}
A paramétereket név szerint is, sorszám szerint is lekérdezhetem.
Majd ha lesz időm, írok valami tutorialszerűt.
Régebben itt valakinek csináltunk egy elég összetett programot, valami locsolás vezérlésre, de már nem találom itt.
Soros porton továbbítást nem tudom, nekem a fordított kellett: soros portról jövőt továbbítani wifi/router/nyilvános net segítségével adott IP című eszközre. -
gyapo11
őstag
válasz
Janos250 #13604 üzenetére
Elég a html forrást küldeni, a GET vagy POST küldéseket feldolgozni és kész? Láttál-e megoldást soros porttal? Úgy képzelem, hogy a pc össze van kötve az arduinoval soros porton, és fut valamilyen program a pc-n, ami átrelézi a routerre, innentől ugyanaz (persze sebesség nem) mintha wifi kapcsolat lenne.
-
Janos250
őstag
válasz
Dißnäëß #13590 üzenetére
Tetszik!
"Ha meg elég merész lennék, a wifis ESP32-t befognám és írnék hozzá egy appot"
Én nem kedvelem az appokat, mert így minden alkalmazásnak külön app kell, végül tele lesz vele a telefon. (meg a ...)
Mellesleg nem is használható máson, csak telefonon.
Én egyszerűen WEB lapot küldök ki, abban benne vannak a gombok, miegymás. Szerintem ez a legegyszerűbb.
Egy - akár netről letöltött, vagy kapott - univerzális WEB lap rutinba beírható a saját változtatás, és már kész is.
Én is azt csinálom, hogy előveszek egy már használtat, azt átírom az éppen aktuálisra, és már mehet is.
Új hozzászólás Aktív témák
Hirdetés
- Yettel topik
- Mobil flották
- Második bétánál jár a One UI 8
- Tőzsde és gazdaság
- HTPC (házimozi PC) topik
- Milyen hangkártyát vegyek?
- Azonnali notebookos kérdések órája
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Azonnali fotós kérdések órája
- További aktív témák...
- Beszámítás! Apple iPad Pro 13 2024 M4 512GB Cellular tablet garanciával hibátlan működéssel
- MSI CreatorPro Z16P - i7-12700H, RTX A5500, értintőkijelző
- Telefon felvásárlás!! Samsung Galaxy S25, Samsung Galaxy S25 Plus, Samsung Galaxy S25 Ultra
- Bontatlan SteelSeries QcK 3XL egérpad
- LG 32SQ700S-W - 32" VA Smart - 3840x2160 4K UHD - 62Hz 5ms - WebOS - Wifi + BT - USB-C - Hangszórók
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged