- iPhone topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Milyen okostelefont vegyek?
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Milyen hagyományos (nem okos-) telefont vegyek?
- Samsung Galaxy A56 - megbízható középszerűség
- iGO Primo
- Amazfit Active 2 NFC - jó kör
- CMF Phone 2 Pro - a százezer forintos kérdés
-
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
-
erni1
friss újonc
Sziasztok,ennek esetleg megvan valakinek a megoldása?Nagyon fontos lenne!
http://www.inf.u-szeged.hu/~nistvan/prog1/kotprog/5.pdf -
Janos250
őstag
Az alapvető gond az volt, hogy összekevertem a PN532 (ami nekem van) chipet egy 522 leírással, így az egyszeri inicializálás miatt volt a gond.
Ez a verzió ESP32-n működik a PN532 chippel.
Van egy 522-es is, de az ugyanezzel a programmal nem megy, majd ha lesz kedvem, tökölök azzal is.
Az egy kisebb téglalap alakú, ez, amit most használtam, az meg egy piros négyzet alakú.
Van persze a komplett Adafruit szoftver, ami jó, és elég sok mindent tud, de hát az ember meg akarja ismerni a részleteketAkkor is, ha az nem lesz olyan univerzális.
Elvileg tud a panel soros és I2C protokollt is, de azt nem próbáltam.
Ez 15.36 Mhz-es, van korábbról 125 kHz-es, de azoknak a megbízható használata nem ment.
Azzal elvileg semmit nem kéne csinálni, mert feltalálták a spanyol viaszt: semmit nem kell vele csinálni, ha közelíted a kártyát, UART-on küldi a kódot. Semmi mást, csak a kódot.
Az első példány, amit vettem, hol küldte, hol nem.
Vettem másikat, gondolván, gyári hibás. Az meg egyáltalán nem küld semmit.
Más:
Ha már megvan, megnéztem pár dolgot:
1. magyar személyi: olvassa, de randomos, azaz mindig mást ad. Ezt a módszert , ha jól tudom, az amerikai útleveleknél vezették be először. Kell hozzá ismerni a titkosítást, hogy visszanyerd a tényleges infót. Csak a kód első jegye állandó:08, ez jelzi, hogy random titkosított.
2.bankkártya: olvassa, és mindig ugyanazt a kódot adja vissza, nincs rajta randomizáló titkosítás (Erste és Revolut kártyákkal próbáltam.) -
Istv@n
aktív tag
-
válasz
Janos250 #15192 üzenetére
Tőlem is megy a lájk! 👍
No, ezt akkor ha időm engedi, én is kipróbálom, van ugyanis egy rfid olvasóm, vagy 3 éve rendeltem, de életjelet még nem bírtam belőle kicsikarni, pedig rajta van a "QC ok" vagy hasonló matrica, és nem hiszem, hogy én öltem volna meg, talán az van nálam is, ami nálad.
Apropó: mi is volt a gond, megosztanád?
-
Janos250
őstag
Ha valakit később érdekel, tettem fel egy mintaprogramot a PN532-es chipen alapuló 13.56 Mhz-es RFID panelok használatára ESP32-n, hardver SPI-vel megoldva:
https://arduinouser.hu/esp32/PN532_RFID/ESP32_RFID_PN532_SPI_Arduino_Budapest2021apr24.ino -
válasz
ekkold #15190 üzenetére
Ez a piezo-s lifehack nagyon eredeti ötlet, megjegyzem későbbre!
A hall szenzorhoz annyit tennék hozzá, hogy az esp32-ben beépített hall szenzor van (hogy milyen célból, arról fogalmam sincs), ha feltétel a vezetéknélküli működés, akkor egy ilyennel egymagában is meg lehet oldani.
-
ekkold
Topikgazda
válasz
Istv@n #15187 üzenetére
A legbiztosabb egy átfolyásmérő, mert biztos, hogy csak akkor ad jelet, ha megy a szivattyú.
Az átfolyó áram érzékelése is informatívabb mint a szivattyún megjelenő feszültség érzékelése. Ha az áram bizonyos határok közötti, az utalhat a normál működésre, ha a határokon kívül van akkor nem működik vagy rendellenesen működik. Arduinohoz kaphatók hall érzékelős áram szenzorok, amivel leválasztott módon mérhető az áram (bár nem túl pontosan, de erre a feladatra elegendő). [pl. ACS712 szenzor, vagy arra épülő modul]
Illetve létezik kicsi nyákba ültethető áramváltó is, amivel szintén leválasztott módon mérhető az áramfelvétel.
Szintén közvetett módszer, de a motorra szerelt kontakt piezo érzékelő (piezo mikrofon) is érzékelheti a szivattyú motor üzem közbeni rezgését.
-
gyapo11
őstag
-
Istv@n
aktív tag
Sziasztok!
Keringető szivattyúk működési állapotát szeretném ellenőrizni arduino-val. Milyen lehetőségek vannak erre?
220V-os relével tudok ki-be jelet adni a szivattyú tápjáról, de nem tudom, hogy lehet e gond a gyengeáram - erősáram "közösítésből" adódóan.
A programozással nem lenne gond, a hardveres megvalósítás a kérdés.Köszi!
-
Tomika86
senior tag
válasz
Tomika86 #15183 üzenetére
Mit jelentenek a következők:
-String indata = Serial.readStringUntil('#');
Addig olvas amíg '#' karakter nem érkezik?
-if (indata.indexOf("on") > -1)
Itt gondolom Ha a beérkezett string az on, mi a > -1 ?
- illetve az utolsó kettő sor érdekelnebyte position_ = indata.indexOf("start");
timeValue = indata.substring(0, position_).toInt();
// Soros porton érkező adat figyelése ha sorosport elérhető
if (Serial.available())
{
String indata = Serial.readStringUntil('#');
// Ha "on" string érkezik
if (indata.indexOf("on") > -1)
{
digitalWrite(output_pin, HIGH); // Kimenet bekapcsolása
}
// Ha "off" string érkezik
else if (indata.indexOf("off") > -1)
{
digitalWrite(output_pin, LOW); // Kimenet kikapcsolása
}
// Ha "start" string érkezik
else if (indata.indexOf("start") > -1)
{
byte position_ = indata.indexOf("start");
timeValue = indata.substring(0, position_).toInt();
}
}
Köszönöm!
-
Tomika86
senior tag
1. Touch gomb a HMI felületen Touch press eventnél: print "on#"
Touch release eventnél: print "off#"
2. Utolsó 2 sorban egy érték beolvasása történik, number mezőből Gomb megnyomására ahol print "start#" kód van az eventnélEzeket lehet ennél egyszerűbben is csinálni, vagy így kell library nélkül adatot olvasni a soros portról?
-
Janos250
őstag
válasz
Tomika86 #15180 üzenetére
Kirészletezve:
ESP321 SPI vonalai összekötve a 13.56 MHz-es olvasó megfelelő lábaival, közben a madzagok "megcsapolva", hogy a SALEAE digitális analizátoron lássam a forgalmat. SALEAE is, és ESP is USB-n gépbe.
Adafruit programját feltöltve az ESP32-be, rendesen működik. Kikapcsolás nélkül feltöltök az ESP32-re egy programot, ami az ESP saját SPI hardverjét használja. Szintén működik.
Kikapcsolás után ugyanez a program nem működik, úgy, mintha az Adafruit valamit átállított volna a slaven. Viszont digitális analizátoron nézve, az Adafruit, és a saját UGYANAZOKAT a jeleket küldi, ugyanolyan időzítéssel. Mi a fenét kellene még vizsgálni, hogy kiderüljön, mi állítódik át az Adafruit hatására, hogy utána a kikapcsolásig működik a másikkal is. -
Janos250
őstag
válasz
Tomika86 #15177 üzenetére
Valaki használta már ESP32-n a saját SPI-vel valamilyen 13.56 MHz-es olvasót? Van két olvasóm. Az egyikbe eddig nem sikerült életet lehelni, de a másik hibamentesen működik az Adafruit programjával, viszont ESP32-n vannak gondok. Saleae-n nézve PONTOSAN ugyanazt küldöm ki, időzítések is pont ugyanazok, mégsem tudja olvasni. Érdekes, hogy ha előtte az Adafruit programmal olvastam, akkor jó az ESP SPI driverrel is, de áramtalanítás után már nem. Tanácstalan vagyok. Mit lehet még nézni, ha az analizátor ugyanazt mutatja?
-
válasz
gyapo11 #15174 üzenetére
rémálom használni őket a kapacitív kijelzőhöz szokott ujjammal
Dehogy maradtam, volt PDA-m, és az jó is volt akkor és ott.
De 10 éve csak kapacitív kijelző volt a kezemben, az ujjam ahhoz van szokva, hogy finoman simogatni kell az üveget, nem körömmel benyomni egy puha műanyag lapot. Egy szauna kezelőfelületénél pedig eleve nem is lehet elvárás a stylus használata.
Bár kétségtelen előnye a rezisztív kijelzőnek, hogy nedves ujjal talán jobban kezelhető.
-
Tomika86
senior tag
válasz
WinZol #15176 üzenetére
Még sehonnét,debug van még csak.
Alin van 20-25eft körül ez 35-40eft lenne. Vám az attól függ posta vagy futár.
Ali-n nem hiszem hogy eredetiek lennének, piros panel. Hestore oldalán kék paneles.Tény és való a 7"os nem olcsó a Magyar árával már.
A te 4,3"os kijelződ annyira nem vészes.
Egyébként nézegettem mas 7"os kijelzőket is de amit uC vezérel és csak soros porton kommunikál, mindegyik drágább a Nextionnál
-
gyapo11
őstag
válasz
WinZol #15172 üzenetére
Kijelzőre ötlet a régebbi Nokiák közül valamelyiknek a kijelzője. Nem túl nagy és fekete-fehér, de legalább olcsó ha sikerül találni. Hogy pontosan melyik azt nem tudom, de google biztos segít.
Amúgy esp-hez a web felület jó, amit János250 szokott ajánlani, és akkor bármivel nézheted, amin fut egy böngésző. -
gyapo11
őstag
Lemaradtál a Palm korszakról? Meg pocket windowsos pda-król? Nekem van mindkettőből, használtam is, megszokás kérdése. Teljesen jó a rezisztív is, ha nem ujjbeggyel akarod használni, hanem a pda-khoz adott pálcikával, amit nem véletlenül adtak hozzá, mert a rezisztív képernyőt meg kell nyomni, és minél kisebb ponton nyomom, annál jobban veszi a behatást. Esetleg körömmel is lehet, ha nem rágja az ember a körmét tövig.
-
WinZol
aktív tag
Hi,
Egy szauna vezérlést akarok magamnak összerakni.
A vezérlő egy ESP8266 / ESP32 lesz.A "vezérlő" képernyővel vagyok bajban.
Két variáció jutott eszembe:
1. Nextion 4,3
2. Egy androidot futtató kijelző, amin az MQTT DASH app futna.
Minta project hozzá.A második mellett szólna, hogy telefonról is ua. a felület működhetne.
Persze egy kiszuperált telefon is jó lehetne erre a célra, ha esztétikusan tudnám rögzíteni. (de szerintem az nem megy)Valami más ötlet?
Arduinót futtató kijelző ember áron (max 20 eHUF)?Köszi
WinZol
-
WinZol
aktív tag
válasz
Tomika86 #15112 üzenetére
Hi,
Szauna vezérléshez akarok Nextion 4,3-as kijelzőt venni.
Itead.ccHonnan érdemes beszerezni?
Van Magyarországon forgalmazó? (Akkor céges beszerzés)
Ha Kína, akkor honnan / hogyan megy áfa mentesen? (Akkor nem céges)
(nem szeretnék clone-t venni) és jó lenne néhány héten belül átvenni.Mennyire éri meg a Capacitive? (+ 7 USD)
Köszi
WinZol
-
válasz
gyapo11 #15165 üzenetére
Ezen alapul az én javaslatom is, de ehhez elég egyetlen bit is. Ha például csak pozitív egész számokat szeretne kiírni, akkor a legfelső bit lesz a marker. Bekapcsolás után végig kell olvasni az adatokat. Ha az első adat negatív (magas marker bit), megkeresem az első olyan adatot, ami pozitív (alacsony marker bit), és azt írom felül. Ha az egész EEPROM végig csak pozitív, akkor kezdem elölről, negatív számmal. Első használatnál, feltételezve, hogy csupa 0 van az EEPROM-ban, az első kiírt adat negatív szám lesz. Ha megtelt, akkor jönnek a pozitív számok. Nem tudom mennyire sikerült érthetően leírnom.
A pozitív-negatív átváltás persze nem közvetlenül értendő, mivel a 0-nak nincs negatív alakja, ezért egy 0 elrontaná az egész rendszert. Emiatt kettes komplemens helyett egyes komplemens alakot kell használni, vagy csak egyszerűen állítgatni a legfelső bitet.Ha több adatot kell kiirni, akkor adatblokkokban kell gondolkodni, egy blokk több változót fog tartalmazni, a marker a blokk legelső byte-jának legfelső bitje, ha megoldható, hogy olyan adat kerüljön oda, aminek az értéke sosem haladja meg a 127-et. Ha ez nem megoldható, akkor egy byte-ot fel kell áldozni markernek.
-
gyapo11
őstag
válasz
Tomika86 #15162 üzenetére
Egyszer csináltam hasonlót, csak nem arduino volt hanem pc, és nem c hanem assembly. Pénztárgép fekete doboza volt, epromba írt. Már nem tudom mi volt az elválasztó jel, de valami olyan, ami biztosan nincs a kiírt adatokban. Ha csak számokat vagy betűket írsz ki, akkor jó a % vagy # meg ilyenek. Én nem használtam pointert, hanem bekapcsoláskor addig olvastam az epromot, míg az utolsó elválasztójelet megtaláltam, ez után jöhetett a következő írás. Így akármilyen változó hosszúságú adatot írhatsz, az elválasztójel egyértelműen meghatározza, hogy hol a vége és a következőnek az eleje. Ez egyben a wear levelinget is megoldja, mert teleírod az összes byte-ot, utána persze törölni kell, ha akarsz bele írni.
-
-
válasz
Tomika86 #15162 üzenetére
A PLC-ről sajnos csak annyit tudok, hogy létezik.
csak szeretem megérteni amit csinálok
Teljesen jogos igény.Wear leveling az lenne mint ssd esetében, hogy összevissza rakja az adatokat?
Nem összevissza, hanem sorban, egymás után, mivel itt mindig szekvenciálisan írsz, és nem kell random törölni adatot a sorból.
-
Tomika86
senior tag
Akkor nem jól gondoltam.
Nekem a double integer van plc oldalról az 32bites egész 😀
Akkor long lesz nekem a jó, ezeket nem próbáltam, csak a double-t és volt tizedes pont 🙂Ja csak szeretem megérteni amit csinálok, azért mondtam. Meg mondjuk ez a belső eepromra van, de legalább ki tudtam próbálni.
Wear leveling az lenne mint ssd esetében, hogy összevissza rakja az adatokat? -
válasz
Tomika86 #15159 üzenetére
A double az is lebegőpontos érték, ráadásul mega board-on ugyanúgy 32bites, mint a float. Szerintem te az int vagy long típust keresed.
Mi az, hogy nem működik?
Légyszi, ha kódot illesztesz be, válts át a régi szerkesztőre (a szövegbox fölött jobbra), mert ott olvasható lesz a kód, az új szerkesztő szétbarmolja az egészet...
-
válasz
Tomika86 #15157 üzenetére
Nem kell a mutatókkal törődnöd, ez a függvény belügye.
Én a mai napig nem igazán értem a mutatókat, mindig elolvasom, megértem, aztán két nap, és totál elfelejtem az egészet.Ha átállsz erre a megoldásra, és eldőlt, hogy milyen adatokat szeretnél menteni még az EEPROM-ba, akkor javaslom, hogy implementálj némi wear levelinget is. Ha aktuális, és érdekel, akkor leírom a módját.
-
Tomika86
senior tag
Ez így double számmal miért nem működik? Floating működik.Nem kellene a tizedes nekem. 16 vagy 32bites egész szám elég lenne
Köszönöm
void EEPROM_writeDouble(int ee, double value) { byte* p = (byte*)(void*)&value; for (int i = 0; i < sizeof(value); i++) EEPROM.write(ee++, *p++); } double EEPROM_readDouble(int ee) { double value = 0; byte* p = (byte*)(void*)&value; for (int i = 0; i < sizeof(value); i++) *p++ = EEPROM.read(ee++); return value; } -
-
-
válasz
Tomika86 #15154 üzenetére
Használd azt a két függvényt, amit korábban javasoltam. Az mindig 4byte-ot fog írni.
Ha külön 7805 lesz a kijelzőnek, az úgy jó, csak ne felejts el egy diódát tenni a pufferkondi elé, hogy a többi fogyasztó ne szívja le idő előtt a benne tárolt kraftot a másik irányból.
-
Tomika86
senior tag
Akkor legyen 11V 🙂 másik 7805 van neki.
Még küzdök a kiolvasással, nem értem hogyan lehet kiolvasni ha nem tudom mennyi byte-ot írtam be előzőleg, tehát beírtam a 0val kezdődő címre 5 charactert, mert annyi számjegyből állt. Ezt elmentem.
Következő bekapcsolásnál honnét tudom, hogy a 0-val kezdődő címen 5byte van egymás után?
-
Tomika86
senior tag
Akkor igazából van egy megoldásom.
Az akku feszültségét úgy is mérem, gyújtás kábel lesz csak használva. Ha az akku feszültsége egy bizonyos feszültség alá csökken akkor mentek egyet. 6,5V a minimum feszültsége a 7805-nek, úgyhogy 7V alá csökkenve menthet.
Így akku se kell, 7805 elött ott lesz egy pufferkondenzátor, annyi elég szerintem -
válasz
Tomika86 #15150 üzenetére
Ez jó kis feladat, kétféle megoldási javaslatom van, külön-külön vagy együtt is alkalmazható:
1. kikapcsoláskor szeretnél menteni, ezt úgy lehet megoldani, ha a tápfeszültség elvétele esetén pár másodpercig még működni tud. Ezt vagy egy akkumulátorral, vagy egy szuperkondenzátorral tudod megoldani. Az egyik pinnel figyeled a tápfeszültséget, mikor megszűnik, azonnal mented az adatokat.
2. wear levelinget alkalmazol az EEPROM-ba írásnál, erre van készen library, de egy nagyon egyszerű módszerrel házilag is meg lehet oldani. Ezek után tetszőleges gyakorisággal mented a menteni való adatokat, mert néhányszor 10 byte-nyi adatot 64kbyte területre kb. az idők végezetéig el lehet osztani. -
Tomika86
senior tag
Üzemórát és percet szeretnék menteni, de nem 10ms-onként. 5perces intervallum van jelenleg megadva a blokkra, csak még nincs benne a megfelelő függvény.
Olyan lehetőség van esetleg, hogy kikapcsoláskor mentsen? (Ami nálam a Mentes_gomb, az igazából az esemény lenne amire ment, ez csak próba)Jelenleg ez a kettő adat van, de lenne még pár érték amit HMI-ről módosíthatóra szeretnék tenni, ezeket is menteni kellene. De csak akkor lenne mentve ha változtatom az értékét.
ui.: Jó lenne itt is egy kis retentív memória terület mint PLC-k esetében, ami nem felejt
-
válasz
Tomika86 #15147 üzenetére
Most jöttem rá, hogy a kód az egész "hatalmas" EEPROM-ba csak ugyanarra az egyetlen címre írja ki az értéket, aztán azt írja felül újra és újra. Így végülis mindegy, hogy milyen hosszú a szám. Azt hittem, hogy folyamatosan írja egymás után, log-ba.
Megjegyzem, hogy ez a módszer elég gyorsan el fogja használni azt az egy memóriacellát a folyamatos írással. Ha a cella élettartama során 1000000 írási műveletet bír elviselni, 10ms-onkénti írással durván 3 óra alatt ez be is fog következni. -
válasz
Tomika86 #15146 üzenetére
Ha esetleg meggondolnád magad, ezzel az erről az oldalról vett példával így is ki lehetne íratni a float értékeket:
void EEPROM_writeFloat(int ee, float value)
{
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
writeEEPROM(xAddr, ee++, *p++);
}
float EEPROM_readFloat(int ee)
{
float value = 0.0;
byte* p = (byte*)(void*)&value;
for (int i = 0; i < sizeof(value); i++)
*p++ = readEEPROM(xAddr,ee++);
return value;
} -
Tomika86
senior tag
Ez így?
#include <Wire.h>
#define xAddr 0x50 // külső EEPROM címe
unsigned int eepromAdd = 0; // Adatmentés címe az EEPROM-ban
float adat = 123456; // Adat próbaként
String ertek_1; // Adat átalakítva
int Mentes_gomb = 5; // Mentés gombnyomásra
void setup()
{
pinMode(Mentes_gomb, INPUT);
Serial.begin(9600);
Wire.begin();
}
void loop()
{
// Int konvertálása stringbe és EEPROM-ba írása
if(digitalRead(Mentes_gomb))
{
ertek_1 = String(adat, 0);
int hossz_1 = ertek_1.length();
// Átalakított string írása:
for(byte i = 0; i <= hossz_1; i++) // i ciklusváltozó a string hosszáig lépteti a címet
writeEEPROM(xAddr, eepromAdd+i, ertek_1[i]); // xAddr: Eszköz címe, eepromAdd+i: Írási cím + kezdőcím, ertek_1[i]: sztringnek a karakterei sorban
}
}
// Egy byte írása
void writeEEPROM(int devAddr, unsigned int eeAddr, byte data )
{
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // Legnagyobb helyiértékű byte írása, LSB-t jobbra shifteljük, hogy megszabaduljunk tőle
Wire.write((byte)eeAddr & 0xFF); // Legkisebb helyiértékű byte írása, LSB kimaszkolása bitekkel ÉS 0-kkal
Wire.write(data);
Wire.endTransmission();
delay(5); //5ms várakozás
}
-
Tomika86
senior tag
Még én se, de ez valahogy számomra megfogható volt, hogy string, ami i darab characterből áll, amik pont byte-ok és ezeket tudom írni.
strcat nem tudom miért kell.
Annyira nagy gyakorlatom nincs még a C programozásban, 2 hete kezdtem el az arduinot
Igazából int és float számokat kellene megadott címre menteni, nem kell automata címzéssel.Köszönöm!
-
válasz
Tomika86 #15142 üzenetére
Én azt nem értem, hogy
1. minek astrcat( chrFloat, buffer); //
a kódba, felesleges művelet.
2. minek kell egyáltalán az EEPROM-ba kiírás előtt a float-ot string-gé alakítani és úgy kiírni? A float minden esetben 4 byte, nem kell gondolkodni, hogy mennyit kell visszaolvasni, ráadásul ha két számjegy+tizedespont+két tizedes esetén már kevesebb írásmennyiséggel is jár (4byte vs. 5byte). -
Tomika86
senior tag
válasz
Tomika86 #15141 üzenetére
Ha jól gondolom akkor
- a float értéket átalakítja character tömbre
- összefűzi stringbe
- megnézi a hosszát és ez alapján byte-onként írjaKiolvasásnál
- azt nem értem, hogy amikor kiolvasok akkor miért a "chrFloat" hossza alapján ?
ez alapján tudjuk, hogy mennyit írtunk, ugyanennyit olvasunk vissza, de mi van akkor ha nem tudjuk mennyi byte-ot kell visszaolvasni (tehát mitől meddig tart egy összetartozó érték) -
Tomika86
senior tag
Ezt a példaprogramot kommenteztem be:
#include <Wire.h>
#define xAddr 0x50 //külső EEPROM cím definiálása
byte i;
char buffer[10];
char newStr[10];
unsigned int eepromAdd = 0;
float adat = 123.321;
void setup()
{
Serial.begin(9600);
Wire.begin();
}
void loop()
{
//Float konvertálása stringbe és EEPROM-ba írása
char chrFloat[] = "";; // string létrehozása
char buffer[10]; // character tömb létrehozása
dtostrf(adat, 6, 4, buffer); // 6 szélesség, 4 a precizitás; adat float átalakítása a buffer változóba
strcat( chrFloat, buffer); // buffer character tömb összefűzése stringbe?
// Átalakított string írása:
for(byte i=0; i<=strlen(chrFloat); i++) // i ciklusváltozó a string hosszáig
writeEEPROM(xAddr, eepromAdd+i, chrFloat[i]); // 1 byte írása a
// Adat kiolvasása és átalakítása float-ra:
for(i=0; i<=strlen(chrFloat); i++)
newStr[i] = readEEPROM(xAddr, eepromAdd + i); // 1 byte olvasása
newStr[i] = 0;
Serial.println(atof(newStr),2); // ASCII konvertálása float-ba 2 tizedessel
}
// Egy byte írása
void writeEEPROM(int devAddr, unsigned int eeAddr, byte data )
{
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // Legnagyobb helyiértékű byte írása, LSB-t jobbra shifteljük, hogy megszabaduljunk tőle
Wire.write((byte)eeAddr & 0xFF); // Legkisebb helyiértékű byte írása, LSB kimaszkolása bitekkel ÉS 0-kkal
Wire.write(data);
Wire.endTransmission();
delay(5); //5ms várakozás
}
// Egy byte olvasása
byte readEEPROM(int devAddr, unsigned int eeAddr )
{
byte readByte = 0;
Wire.beginTransmission(devAddr);
Wire.write((byte)eeAddr >> 8); // A legnagyobb helyiértékű byte írása
Wire.write((byte)eeAddr & 0xFF); // A legkisebb helyiértékű byte írása
Wire.endTransmission();
Wire.requestFrom(devAddr,1);
if (Wire.available())
readByte = Wire.read();
return readByte;
}
-
-
Tomika86
senior tag
Sziasztok!
EEPROM írás és olvasásos kérdésem lenne.
Mega2560 esetén van 4096 byte beépített, nem ezt szeretném használni, hanem külső 24LCxx EEPROM-ot I2C buszon.
Kerestem, de nem igazán találtam(vagy nem tudtam hogy az) olyan példaprogramot ahol több változó van elmentve a megadott címre (int változók).Ha egy memória címen volt adat akkor újabb írással teljesen felülíródik, vagy törölni kell elötte?
Köszönöm! -
Janos250
őstag
Kösz megnéztem, de ezt egyelőre hanyagolom.
Nincs benne a portable lehetőség, legalábbis nem úgy, mint a korábbiakban.
Valahonnan a tartalékból előszedett egy archivált programom, és egyből el is rontotta.
Bemásoltam egy másik működő programot, de rengeteg hibajelzés. Még a Serial.print-et is hibának jelezte. Nyilván aktiválni kéne a könyvtárakat, de az macera lenne, meg azt se tudni, hogyan kell.
Fordítási hiba:
"Compilation error: Error: 2 UNKNOWN: exit status 1"
Hát, ez egy "sokatmondó" hibajelzés.
Leírást a linkelt videón kívül nem találtam róla. Arra is alig jöttem rá, hogy a kihalványított OK gomb nem vált világosabbra, hanem így halványan kell megnyomni. Szóval egyelőre maradok a réginél. -
-
Janos250
őstag
Kijött az Arduino 2 beta. A szerkesztője más, a többit még nem próbáltam.
-
válasz
Tomika86 #15129 üzenetére
Az árkülönbségből ítélve nagyjából ugyanez lehet. 5500+haszon+magyar áfa.
A tápot illetően szerintem tehetsz vele egy próbát, esetleg a regulátorra tegyél hűtőbordát, ha érezhetően melegszik.
Ha mégis megsülne: semmit nem veszítesz, úgyis kívülről akartad adni neki az 5V-ot. -
válasz
stopperos #15123 üzenetére
Ez csak az eredeti arduino lapokra igaz, a kínai másolatokra nem! Korábban volt róla szó, hogy a gagyibb lapokon elég gyenge a regulátor, 9V tápfeszültség fölött hajlamos megsülni. Egy kínai UNO lapot én is megsütöttem így (a uC maga működik azóta is, USB-ről és 5V tápról, csak a regulátor sült meg rajta).
-
stopperos
senior tag
válasz
Tomika86 #15124 üzenetére
Igen. Én egy ideig a projektemet számítógép tápegységről tápláltam meg (5V és 12V), de utána átálltam egy egyszerűbb 12V-os led tápegységre. Nálam egy kétsoros lcd kijelző, 2 relé, 4 pwm csatorna + szűrés megy az aruinoról meg annak 5V-jéről. A 12V a műveleti erősítőnek és a tranzisztoroknak kell.
-
stopperos
senior tag
válasz
Tomika86 #15119 üzenetére
Az arduinohoz nem kell 7805, mert ha azt megtáplálod 7V-15V között, akkor az előállítja magának az 5V feszültséget és nem táplál vissza USB-n. Ez elég a megának és a szenzoroknak amit írtál. A kijelzőt külön kell megoldanod.
Az előállított 5V feszültségre és a bemenő feszültségre raknék esetleg egy-egy 10-100uF mérettartományból kondenzátort. -
And
veterán
válasz
Tomika86 #15119 üzenetére
Persze. Az adatlap 21. oldalán láthatsz is egy példát (Fig. 34) az opcionális szűrésre, ami egy plusz aluláteresztő LC-tagból áll. Amúgy a tervezett konfigurációhoz nagy valószínűséggel 1A-es terhelhetőség is bőven elegendő lesz, én olyan 6-700 mA körüli fogyasztásra tippelnék.
-
-
And
veterán
válasz
Tomika86 #15112 üzenetére
Rosszul tudom, hogy a 'hagyományos' 7805-ösökből - ezzel a típusmegnevezéssel - csak 1 vagy 1,5 A terhelhetőségű létezik?
"Nextion 7" kijelző (erre 2A áramfelvételt írnak)."
Mindegyik 7"-os típusra (basic, enhanced, intelligent) 430..530 mA-es fogyasztást írnak. Javasolt tápellátás címén említenek lehetőleg minimum 2A terhelhetőségű tápot, de a valós fogyasztás annak a negyede lesz még maximális háttérfényerőnél is.
Ha valóban 3A-t közelítené az áramfelvétel - a valóságban az összes említett csingilingivel együtt sem fogja -, akkor a 20W-ot meghaladó disszipáció miatt sokkal jobban járnál egy kapcsolóüzemű megoldással (mellesleg azt is meg lehet toldani szűréssel). -
gyapo11
őstag
Lehet hogy nem, attól függ mekkora áramot képes felvenni az a valami. Lehet, hogy 5 A-t, lehet hogy 10-et, és akkor a stabilizátor mégsem tudja tartani a feszültséget, de egy megfelelően kis belső ellenállású elkó meg igen.
Az elkó megfekteti bekapcsoláskor, ez igaz. Azonban ez még mindig jobb, ha fél másodperccel később indul az arduino, mint ha menet közben resetel. De ha nincs ilyen nagy áramimpulzust előállító fogyasztó az arduino tápján, akkor nem kell az elkó, elviszi a cuccot a stabkocka. -
And
veterán
válasz
gyapo11 #15109 üzenetére
Csakhogy nem fog megroggyanni. Az LM78xx adatlapok szerint a Load regulation paraméter értéke teljes (1,5 A-es) impulzusszerű terhelésnél tipikusan 9 mV (!), ami azért nem jelentős. Ennek az adatlapnak a 11. oldalán grafikusan is látható (fig. 13, bár tévesen Line regulation a neve, egyértelműen a terheléstől való függést ábrázolja): [link]. Amitől - bekapcsoláskor - a stabkocka kimenete fulladhat, az épp a túlzottan nagy kapacitású elkó lehet. Nem véletlenül nem ajánlanak ilyesmiket egyik alkalmazási példán / adatlapon sem. Kifejezetten low esr kapacokat (kerámia, esetleg tantál) javasolnak a kimenetre, legfeljebb 1...10 μF-os nagyságrendben.
-
gyapo11
őstag
válasz
Tomika86 #15104 üzenetére
Ha a stabilizátor közel van az arduinohoz, akkor csak előtte kell az impulzusokat szűrni, és utána a nagy elkóval minél közelebb az arduino betáp pontjához. Rövid vezetéken nem tud tüske keletkezni, mert nincs induktivitása mint egy antennának. Az akkufesztől lesz egy vezeték az első stabilizátorhoz, ha az hosszabb, akkor ott már lehet tüske, a stab előttre kell a 100 nF és a puffer. A stab után már ne tegyél elkót, vagy ha mégis, akkor kell egy dióda párhuzamosan a stabbal fordított irányban, hogy ha a stab betápja megszűnik, akkor a kimenete ne kerüljön magasabb szintre mint a bemenete, azt nem szereti. Ha az arduino szed össze impulzusokat, akkor fémdobozba kell tenni és testelni, a táp maradhat kívül, hogy ne fűtse.
-
And
veterán
válasz
Tomika86 #15106 üzenetére
Függ a várható terhelőáramtól, amúgy annál is jóval - egy nagyságrenddel - kisebb kapacitásértéket szoktak használni. Viszont egy autóban a feszültségtüskék csúcsértéke szélsőséges esetben akár sokszor 10V is lehet, úgyhogy a bemeneti kapacitás tűrési feszültsége is ennek megfelelően választandó, illetve az induktivitás helyétől függően be lehet tenni a körbe szupresszort is. Ötletek: [link], [link].
-
And
veterán
válasz
Tomika86 #15104 üzenetére
Erős túlbiztosításnak tűnik. A kétlépcsős stabilizálás a hőtermelés szempontjából sokat nem segít, valószínűleg nem lesznek túlságosan távol egymástól a stabok. A 4700 μF-os puffer a bemeneten is soknak tűnik (elvégre nem egy trafó a forrás), a második stabkocka kimenetén pedig egyenesen ellenjavallt, egy stabilizátor vagy LDO eleve nem szereti az ilyesmit. Stabilabb nem lesz tőle, a bekapcsolási áramlökés pedig nem kívánatos. Oda bőven elegendő egy 0,1 / 1 μF-os kerámia, elvégre a 78xx-ek hullámosság elnyomása - bár nyilván frekvenciafüggő - nem annyira rossz érték.
-
Tomika86
senior tag
A következő gondolatom az 5v előállítására, javítsatok ha valami máshogy kellene:
Akkufeszültség - biztosíték - dióda nyitóirányban - 47uH 3A induktivitás - 4700uF elektrolit kondenzátor - 100nF kerámia kondenzátor - 7808 stab - 100nF kerámia kondenzátor - 7805 stabilizátor - 100nF kerámia kondenzátor - 4700uF elektrolit kondenzátor - 5v kimenetRemélem rajz nélkül is érthető
Köszönöm
-
válasz
gyapo11 #15100 üzenetére
A kondenzátor viszont annál kisebb ellenállású minél gyorsabb az impulzus, szóval mindenképpen jobb mint a zéner. Együtt a kettő jó csapat.
Azon gondolkodom, hogy ha egy zener és egy kondenzátor párhuzamosan van kötve, mindenképpen lesz olyan tüske, ami átjut: a rövid impulzusokat a kondenzátor elvezeti, de ezalatt a feszültség sem emelkedik, tehát a zenerben a lavina effektus így is csak akkor kezd el kialakulni, amikor már a kondenzátor fel van töltve.
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! ASUS ROG CROSSHAIR VI EXTREME alaplap garanciával hibátlan működéssel
- Felújított szerverek, storage-ok, hálózati eszközök Enterprise szinten, minden gyártótól
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- AKCIÓ! MSI B450 R5 5500 16GB DDR4 512GB SSD RTX 2070 8GB GDDR6 Rampage Shiva Zalman 500W
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest