Hirdetés
- gban: Ingyen kellene, de tegnapra
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Gadomiklos: Sziasztok! Kezdő vagyok, és nem tudom hol tudom megnézni a privát üzeneteimet.
- Meggyi001: Kórházi ellátás: kuka vagy finom?
- WireGuard VPN a mindennapokra
- Kalandor: „Ha engedtem volna a lelkiismeretemnek, az üzlet kevésbé lett volna jövedelmező”
- eBay-es kütyük kis pénzért
-
LOGOUT
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
-
-
-
USB, elvileg ugye úgy menne, hogy Digistump 16,5MHz (gondolom a Digistamp-et hallotta félre valaki), feltöltés gomb, modul rádug, és működik. Simán csak
"A vázlat 700 bájt (11%)-ot használ a program tárhelyből. A maximum 6012 bájt.A globális változók 9 bájtot használnak a dinamikus memóriából.Running Digispark Uploader...Plug in device now... (will timeout in 60 seconds)micronucleus: library/micronucleus_lib.c:66: micronucleus_connect: Assertion `res >= 4' failed.Aborted (core dumped)"
Mondjuk rootként még nem néztem... Mintha nem tudna kapcsolódni. -
Undoroid
őstag
Sajnos valami nem stimmel a rendelkezésemre álló Nano-val! Továbbra is csak az "egysoros-telikarakteres" kijelzést produkálja. Életjel van, mert a kontroláló LED-ek ütemesen villognak a Nano-n. Ugyanazzal az összeállítással* (csak a mikrovezérlő más) Unoval szépen muzsikál minden, ugyanazzal a programmal. Más programmal hibátlanul működik ez a Nano...
* 16x2-es LCD, breadboard, DHT11 szenzor, 10Kohm poti, bekötővezetékek, betáp: PC USB-portja
-
Drótszamár
őstag
Ez egy kombi szenzor modul, SHT-30 és QMP6988 szenzorok ülnek az i2c buszon.
Az SHT-30 rendben működik 3,3V-on és 5V-on is mindkét eszközzel. A gyártó 5V-ot írt a szenzor modulhoz, maga a QMP6988 1.71V és 3.6V között működik a gyári doksi szerint.Viszont adtál egy ötletet. Hétvégén összenézem a nyers légnyomás adatokat mindkét eszközön.
Ha azok egyeznek, akkor a kiolvasás jó.
A nyers adatokkal és a kalibrációs adatokkal még varázsol egy csomó mindent a library. Szorozgat, osztogat, meg shiftel össze-vissza. Nekem még mindig az a gyanús, hogy valahol kicsúszik az érték a longból.Itt rakja össze a végleges értéket:
Egyelőre fingom sincs, mit és miért csinál
QMP6988_S32_t QMP6988::getPressure02e(qmp6988_ik_data_t *ik, QMP6988_S32_t dp, QMP6988_S16_t tx){QMP6988_S32_t ret;QMP6988_S64_t wk1, wk2, wk3;// wk1 = 48Q16 // bit sizewk1 = ((QMP6988_S64_t)ik->bt1 * (QMP6988_S64_t)tx); // 28Q15+16-1=43 (43Q15)wk2 = ((QMP6988_S64_t)ik->bp1 * (QMP6988_S64_t)dp) >> 5; // 31Q20+24-1=54 (49Q15)wk1 += wk2; // 43,49->50Q15wk2 = ((QMP6988_S64_t)ik->bt2 * (QMP6988_S64_t)tx) >> 1; // 34Q38+16-1=49 (48Q37)wk2 = (wk2 * (QMP6988_S64_t)tx) >> 8; // 48Q37+16-1=63 (55Q29)wk3 = wk2; // 55Q29wk2 = ((QMP6988_S64_t)ik->b11 * (QMP6988_S64_t)tx) >> 4; // 28Q34+16-1=43 (39Q30)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29)wk3 += wk2; // 55,61->62Q29wk2 = ((QMP6988_S64_t)ik->bp2 * (QMP6988_S64_t)dp) >> 13; // 29Q43+24-1=52 (39Q30)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29)wk3 += wk2; // 62,61->63Q29wk1 += wk3 >> 14; // Q29 >> 14 -> Q15wk2 = ((QMP6988_S64_t)ik->b12 * (QMP6988_S64_t)tx); // 29Q53+16-1=45 (45Q53)wk2 = (wk2 * (QMP6988_S64_t)tx) >> 22; // 45Q53+16-1=61 (39Q31)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 1; // 39Q31+24-1=62 (61Q30)wk3 = wk2; // 61Q30wk2 = ((QMP6988_S64_t)ik->b21 * (QMP6988_S64_t)tx) >> 6; // 29Q60+16-1=45 (39Q54)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 23; // 39Q54+24-1=62 (39Q31)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 1; // 39Q31+24-1=62 (61Q20)wk3 += wk2; // 61,61->62Q30wk2 = ((QMP6988_S64_t)ik->bp3 * (QMP6988_S64_t)dp) >> 12; // 28Q65+24-1=51 (39Q53)wk2 = (wk2 * (QMP6988_S64_t)dp) >> 23; // 39Q53+24-1=62 (39Q30)wk2 = (wk2 * (QMP6988_S64_t)dp); // 39Q30+24-1=62 (62Q30)wk3 += wk2; // 62,62->63Q30wk1 += wk3 >> 15; // Q30 >> 15 = Q15wk1 /= 32767L;wk1 >>= 11; // Q15 >> 7 = Q4wk1 += ik->b00; // Q4 + 20Q4//wk1 >>= 4; // 28Q4 -> 24Q0ret = (QMP6988_S32_t)wk1;return ret;} -
Undoroid
őstag
Remek!

" a NANO ugyanazt a μC-t tartalmazza, minden UNO példaprogram változtatás nélkül fut " Pont ezzel próbálkoztam az UNO után! A méretre vágott próbapanelon szépen el tudtam volna tenni a mikrovezérlőt a kijelző mögé, de sajnos valami nem stimmelt (dugaszolós panelon) . A kijelzőn csak egy sor "telekarakteres" kijelzést tudtam megjeleníteni. Nyilván itt Én rontottam el valamit.
Újra fogom próbálniszerk: Kalapács... Neeem, de láttam pár olyan megoldást a világhálón, ami kb. ezen szerszám használatával egyenértékű volt! Pusztítás és azután csodálkozás, hogy nem megy a masina!
-
Undoroid
őstag
Üdvözöllek!
" ...komponenseket némileg "hülyeállóvá" kell tenni, vagyis, hogy ne lehessen fordítva összedugni... " Ez pontosan így is van! Nem szimmetrikusan helyezkednek el a csatlakozások, ezért fordítva nem lehet összerakni! ...bár megfelelő méretű kalapács segítségével mindent meg lehet szakérteni!
Tehát az UNO két oldalán vannak elhelyezve a csatlakozások. Két-két csatlakozó aljzat van felszerelve. Az első pár között a szabványos 2.54mm távolság van és ezért ez akár lehetett volna egy, folyamatos...viszont a másik csatlakozó (szintén két nem egyforma darabból áll) viszont az egymással határos pontjai nem 2.54mm-re vannak egymástól, hanem legalább 0.5mm-el messzebb! Így a szabványos raszterre -előre kifúrt- próbapanel pontjai sohasem fognak egyszerre stimmelni! Holnap délelőtt -ha kell- akkor lefotózom a problémát! Úgy látni fogod a gondot!
Ha van kéznél egy UNO és egy tolómérő, akkor mérj meg minden csatlakozási pontot, egyforma távolságra lesznek egymástól az egymás mellett lévő pinek...KIVÉVE a 7. és a 8. pin! Itt van elválasztva egymástól a két csatlakozó aljzat, és ha akarod sem tudod úgy összerakni, ahogyan azt kellene! ...esetleg kalapáccsal...
-
Tomika86
senior tag
-
Tomika86
senior tag
GPIO12 és 0: FET kapcsol 12V-os Relét
GPIO14 és 15: Egyik 10kohm-al földre van húzva és nyomógomb van a 3,3 és bemenet között.
Másikon az LM1815 IC kimenete van sorosan 1kohm-al.
SD kártya többi lába olyan GPIO lábon van ami nem ad semmit boot esetén
GPIO 2: 470ohm előtéttel földre van kötve a LEDJó lenne ha még 5db GPIO lenne a panelon

-
gyapo11
őstag
Esetleg a fw-rel azonos nagyságú tesztprogramot futtatni, ami végiglépked és ír mindent serialra? Hátha flash hiba, ramhiba, eepromhiba, szóval valami időnkénti hw hiba. Ha igen, akkor akár egy másik arduino, beletöltve a fw, és már jó is. Ha az egyéb részekben van hiba, akkor persze ez nem segít.
-
doberman
senior tag
Nagyon köszönöm a gyors választ! (weiss-nek is).
ez már 3.0.3 verzió.. elméletileg a gyerekbetegségeken már túl van. akkor marad a szerelési hiba - kalandra fel, elő a forrasztó állomást, végig nézem mikroszkóppal... ja egyébként akkuról megy -mikor épp olyan kedve van. (egyébként többen panaszkodnak egy fb fórumon, de még többen megelégedve használják - megoldást meg nem nagyon írtak)
még1x köszi!
-
Undoroid
őstag
Köszönöm a válaszokat!
Egy "kis" változás lesz az egészben, mert képbe került egy 4x20-as kijelzőmodul, i²c -csatolással. Így viszont simán megférne a kijelzőn egyszerre is a 4db mért érték!
A riasztási kimenetek pedig felejtősek! Így talán egyszerűbben megoldható lenne a projekt... -
ekkold
Topikgazda
Nem tudom mennyire extra, vagy értékes az a program, de lehet, hogy a hardver ismeretében viszonylag könnyen megírható egy másik program az adott funkciókra. A programozó lábak levágása a prociról némi hekkeléssel még kezelhető: pl. kis köszörülés a tokon, ahol a láb befelé folytatódik, és vékony szál odaforrasztása... Némelyik kollégámnak ez sima rutinfeladat lenne

A lényeg: a védelemnek csak olyan szintűnek kell lennie, ami a program értékének megfelelő. Tehát elegendő ha a védelem megkerülése több munka, mint másik programot írni, és akkor nem fog senki sem foglalkozni a feltörésével - egyszerűen azért, mert nem éri meg.
Amit Géza írt lentebb, általában az is elegendő, és teljesen jó megoldás. -
-
Tomika86
senior tag
-
Tomika86
senior tag
Erre gondolok hogy az Unoból ered a 0ra ugrás.
De a bonyolultabb program nem mozog, csak 0ra ugrik letekerésnél. A letekerést úgy érsd hogy 6000es fordulatról hirtelen 4000re,akkor leesik 0ra egy pillanatra.A másik viszont ugrál kettő érték között.
Adcre tettem aluláteresztő szűrőt, de gondolom nem elég.
-
Tomika86
senior tag
Kipróbáltam több értékkel a tömb elemeit, most már csak annyi van, ha hirtelen tekerem le a potmétert akkor leesik egy pillanatra a mutató, akár 0-ra is.
De szerintem ez az uno baja, amivel a négyszögjelet állítom be, a frekvenciát pedig analóg úton változtatom.
Ez viszont ugrál két pont között, pl 1500-1800 két értéken. [link] -
Tomika86
senior tag
// Fordulatszám méréshez
const int hallPin = 2; // pin 2 = int 0
volatile unsigned long cntTime = 0;
volatile unsigned long cnt = 0;
volatile unsigned long rpm = 0;
unsigned long readings[numReadings];
unsigned long readIndex;
unsigned long total;
unsigned long average;
const byte numReadings = 2;
unsigned long measureTime = 0, curTime, startTime = 0;
int dispCnt = 0, measureCnt = 0;
const int resetTime = 2000;
const int minRotNum = 1; // 1 - calc after every rotation
void loop()
{
curTime = millis();
if ( curTime - cntTime > resetTime) // reset when less than 30RPM (dt>2s)
{
cnt = measureCnt = 0;
rpm = 0;
}
if (cnt == 1) startTime = cntTime;
if (cnt - measureCnt >= minRotNum) {
rpm = 60000L * (cnt - measureCnt) / (cntTime - measureTime);
measureCnt = cnt;
measureTime = cntTime;
}
// Smoothing RPM:
total = total - readings[readIndex];
readings[readIndex] = rpm;
total = total + readings[readIndex];
readIndex = readIndex + 1;
if (readIndex >= numReadings)
{
readIndex = 0;
}
average = total / numReadings;
}
void doCount()
{
cnt++;
cntTime = millis();
} -
Tomika86
senior tag
Ehhez [link]pedig ezt a részét használtam fel:
// Smoothing RPM:
total = total - readings[readIndex]; // Advance to the next position in the array.
readings[readIndex] = RPM; // Takes the value that we are going to smooth.
total = total + readings[readIndex]; // Add the reading to the total.
readIndex = readIndex + 1; // Advance to the next position in the array.
if (readIndex >= numReadings) // If we're at the end of the array:
{
readIndex = 0; // Reset array index.
}
average = total / numReadings; // The average value it's the smoothed result.RPM a bemeneti nyers fordulat. average a kimeneti megjelenített, de ugrál a mutató
Egyébként pontos, Frekvencia * 60 jelenik meg mindkettő esetében -
Tomika86
senior tag
Ez a bonyolultabb mérés, ez a hirtelen változásokra van hogy lemegy 0-ra is, meg összevissza ugrál ilyenkor:
const byte PulsesPerRevolution = 2;
const unsigned long ZeroTimeout = 100000; // For high response time, a good value would be 100000.
// For reading very low RPM, a good value would be 300000.
// Calibration for smoothing RPM:
const byte numReadings = 2; // Number of samples for smoothing. The higher, the more smoothing, but it's going to
// react slower to changes. 1 = no smoothing. Default: 2.
/////////////
// Variables:
/////////////
volatile unsigned long LastTimeWeMeasured; // Stores the last time we measured a pulse so we can calculate the period.
volatile unsigned long PeriodBetweenPulses = ZeroTimeout+1000; // Stores the period between pulses in microseconds.
// It has a big number so it doesn't start with 0 which would be interpreted as a high frequency.
volatile unsigned long PeriodAverage = ZeroTimeout+1000; // Stores the period between pulses in microseconds in total, if we are taking multiple pulses.
// It has a big number so it doesn't start with 0 which would be interpreted as a high frequency.
unsigned long FrequencyRaw; // Calculated frequency, based on the period. This has a lot of extra decimals without the decimal point.
unsigned long FrequencyReal; // Frequency without decimals.
unsigned long RPM; // Raw RPM without any processing.
unsigned int PulseCounter = 1; // Counts the amount of pulse readings we took so we can average multiple pulses before calculating the period.
unsigned long PeriodSum; // Stores the summation of all the periods to do the average.
unsigned long LastTimeCycleMeasure = LastTimeWeMeasured;
unsigned long CurrentMicros = micros();
unsigned int AmountOfReadings = 1;
unsigned int ZeroDebouncingExtra; // Stores the extra value added to the ZeroTimeout to debounce it.
// The ZeroTimeout needs debouncing so when the value is close to the threshold it
// doesn't jump from 0 to the value. This extra value changes the threshold a little
// when we show a 0.
// Variables for smoothing tachometer:
unsigned long readings[numReadings]; // The input.
unsigned long readIndex; // The index of the current reading.
unsigned long total; // The running total.
unsigned long average; // The RPM value after applying the smoothing.
void setup() // Start of setup:
{
Serial.begin(9600); // Begin serial communication.
attachInterrupt(digitalPinToInterrupt(2), Pulse_Event, RISING); // Enable interruption pin 2 when going from LOW to HIGH.
delay(1000); // We sometimes take several readings of the period to average. Since we don't have any readings
// stored we need a high enough value in micros() so if divided is not going to give negative values.
// The delay allows the micros() to be high enough for the first few cycles.
} // End of setup.
void loop() // Start of loop:
{
LastTimeCycleMeasure = LastTimeWeMeasured; // Store the LastTimeWeMeasured in a variable.
CurrentMicros = micros();
if(CurrentMicros < LastTimeCycleMeasure)
{
LastTimeCycleMeasure = CurrentMicros;
}
// Calculate the frequency:
FrequencyRaw = 10000000000 / PeriodAverage; // Calculate the frequency using the period between pulses.
// Detect if pulses stopped or frequency is too low, so we can show 0 Frequency:
if(PeriodBetweenPulses > ZeroTimeout - ZeroDebouncingExtra || CurrentMicros - LastTimeCycleMeasure > ZeroTimeout - ZeroDebouncingExtra)
{ // If the pulses are too far apart that we reached the timeout for zero:
FrequencyRaw = 0; // Set frequency as 0.
ZeroDebouncingExtra = 2000; // Change the threshold a little so it doesn't bounce.
}
else
{
ZeroDebouncingExtra = 0; // Reset the threshold to the normal value so it doesn't bounce.
}
FrequencyReal = FrequencyRaw / 10000; // Get frequency without decimals. This is not used to calculate RPM but we remove the decimals just in case you want to print it.
// Calculate the RPM:
RPM = FrequencyRaw / PulsesPerRevolution * 60; // Frequency divided by amount of pulses per revolution multiply by 60 seconds to get minutes.
RPM = RPM / 10000; // Remove the decimals.
// Smoothing RPM:
total = total - readings[readIndex]; // Advance to the next position in the array.
readings[readIndex] = RPM; // Takes the value that we are going to smooth.
total = total + readings[readIndex]; // Add the reading to the total.
readIndex = readIndex + 1; // Advance to the next position in the array.
if (readIndex >= numReadings) // If we're at the end of the array:
{
readIndex = 0; // Reset array index.
}
average = total / numReadings; // The average value it's the smoothed result.
Serial.print("\nRPM: ");
Serial.print(RPM);
Serial.print("\tTachometer: ");
Serial.println(average);
}
void Pulse_Event() // The interrupt runs this to calculate the period between pulses:
{
PeriodBetweenPulses = micros() - LastTimeWeMeasured; // Current "micros" minus the old "micros" when the last pulse happens.
// This will result with the period (microseconds) between both pulses.
// The way is made, the overflow of the "micros" is not going to cause any issue.
LastTimeWeMeasured = micros(); // Stores the current micros so the next time we have a pulse we would have something to compare with.
if(PulseCounter >= AmountOfReadings) // If counter for amount of readings reach the set limit:
{
PeriodAverage = PeriodSum / AmountOfReadings; // Calculate the final period dividing the sum of all readings by the
// amount of readings to get the average.
PulseCounter = 1; // Reset the counter to start over. The reset value is 1 because its the minimum setting allowed (1 reading).
PeriodSum = PeriodBetweenPulses;
// Remap period to the amount of readings:
int RemapedAmountOfReadings = map(PeriodBetweenPulses, 40000, 5000, 1, 10); // Remap the period range to the reading range.
// 1st value is what are we going to remap. In this case is the PeriodBetweenPulses.
// 2nd value is the period value when we are going to have only 1 reading. The higher it is, the lower RPM has to be to reach 1 reading.
// 3rd value is the period value when we are going to have 10 readings. The higher it is, the lower RPM has to be to reach 10 readings.
// 4th and 5th values are the amount of readings range.
RemapedAmountOfReadings = constrain(RemapedAmountOfReadings, 1, 10); // Constrain the value so it doesn't go below or above the limits.
AmountOfReadings = RemapedAmountOfReadings; // Set amount of readings as the remaped value.
}
else
{
PulseCounter++; // Increase the counter for amount of readings by 1.
PeriodSum = PeriodSum + PeriodBetweenPulses; // Add the periods so later we can average.
}
} -
-
-
Janos250
őstag
Nekem kifejezetten nagyobb áramú, 150-200 W teljesítményű fűtéshez kell konkrétan. Lehetne persze 230-al, az egyszerűbb lenne, de azért megharapnak a biztonságtechnikások. Meg ha valami marha megbontja és agyoncsapja, egyből az a kérdés, van-e villanyszerelői végzettsége az illetőnek aki szerelte, van-e üzembehelyezési engedély. Egyik sincs, így én csak 50V-ig vagyok hajlandó bármit csinálni, mert addig szabad villanyszerelői végzettség nélkül is, és nincs kedvem beiratkozni egy OKJ tanfolyamra. Meg börtönbe menni se.

Egy ilyen eszköz tervezési papírokkal, engedélyes céggel legyártatva, bevizsgáltatva több százezer Ft lenne minimum, de lehet, hogy a milliót is verné az egyedi papírmunka, engedélyek, stb. miatt. -
Janos250
őstag
Viszont azt legalább sikerült azonosítanom, hogy milyen kinézetű az, ami tényleg tudja az IRLB4030 paramétereit, bár lehet ez is hamis, de akkor a fene bánja.
Amelyikben ott van középen egy bekarikázott E betű.
Pl.:
https://www.ebay.com/itm/392380507977
És ugyanezek a sorozatszámok vannak rajta:
P912D
B9P0
Ez valóban nagyon jó. Valószínű persze, hogy hamisítvány, mert Németországban 1-et lehet annyiért kapni, mint itt 10-et, de a paraméterei ugyanolyanok.
Mérésem eredményei:
Körülmények: 48 V-t kapcsol 100 ohmos ellenállásra.
eredmények:
VGs: ESP32 alacsony szintje , 1 mA-nél kisebb átfolyó áram, vagyis gyakorlatilag tökéletesen lezár. (nincs kéznél mikroA-t mutató műszerem)
VGs: ESP32 magas szintje , a FET-en (D-S) esik 7 mA, vagyis gyakorlatilag teljesen kinyit. -
Jaa oké, #15446Aryes hozzászólásból indultam ki, ahol 2AA elemet írtál: "Amúgy az UNO 3V-os meghajtása nem ördögtől való, hobbistáknál láttam, hogy 2db AA elemről hajtják az UNO alapú robotjaikat, konverter nélkül."
Azt tapasztaltam, hogy az AA nem újratölthető és NiMH újratölthető (utóbbi még inkább) elemek gyorsabban merülnek, mint egy litium aksi illetve akkor ezek szerint a litíum elemek. Tudom más kapacitás, de a 18650 időjárás állomásban fél évig bírja erkély körülmények között.
-
Janos250
őstag
Ilyenek:


Csak abban különbözik, hogy ezen már meg vannak vastagítva az átvezetések.
Választható fesz szabályozóként van rajta két DC/DC conv, egy LDO, valamint négy FET hely, négy cstlakozó hellyel kifelé,
serial, I2C, SPI csatlakozó hely kifelé, EEPROM hely, SD kártya olvasó, az ESP32 két oldalán plusz csatlakozó sor
a külső egyéb csatlakozásokhoz, és GND, 5V, 3.3V csatlakozások a külső eszközök csatolásához.
Én ezt a saját igényeim szerint készítettem. -
tonermagus
aktív tag
Természetesen a masik szamitasnal az iranyokat megforditottam. A te altalad felvazolt kod tenyleg sokkal rovidebb! Csak nemigen ertem a logikajat. Mi az elmelet mogotte?
Valahogy lehet skalazni is? Arra gondolok, hogy 60 fok elteres felett a kormanyt is csutkara forditanam, 60 fok elteres alatt pedig csak enyhen fordulok...
Mindenesetre nagyon köszönöm a valaszod!
-
Dißnäëß
nagyúr
Az, amiről nem tudok
De amúgy ja, azért azt nem gondolom, hogy a chip nélkülünk is elrejteget valamit előlünk és megy a háttérben valami olyan, amit nem lát se driver, se OS, se semmi... Csak meg ne lepődjünk egy következő nagy Snowden teregetésen, hogy ja, minden, ami elektronika, be van kiskapuzva az eneszéjnek
Windows ? 2 éve tiszta vagyok, kösz, soha.
Tartom virtuális gépben, megvett licensszel, Photoshop és pár hifitervező meg ilyesmik miatt, amik istennek se moccannak meg Linuxon, de ennyi.Debian, minimál install, és majd én felextrázom, igénytől függően. IoT-ben meg Raspbian (uaz).
-
Janos250
őstag
Egy verziója kész van, de még nincs igazából könyvtárosítva.
Van hozzá .ino program tutorialnak, kétféle (C, illetve C++) file kezeléssel. Mindkét minta ott van a setupban, az egyik ki van kommentelve, de átrakva a kommentet, másik is kipróbálható.
Erre böngészőből be lehet lépni, és a WiFi-ről mint fájlról beolvassa, amit a böngésző küld, majd szintén fájlra írással válaszol neki egy Hello Worlddel.
arduinouser.hu/esp32/ESP32_VirtualFileSystem_to_WiFi_Server_Tutorial.zip
Aki akarja, kipróbálhatja.
A kliens verzióra is majdnem kész a tutorial program.
Akkor a kliens konnektál a szerverre, és utána fájlra írással kokettálhatnak. Ennek értelme is van talán. -
Janos250
őstag
vagy:
ifstream file_ifstream;
ofstream file_ofstream;
file_ifstream.open ("/server_fs/fajl.txt", std::fstream::in );
uint32_t cikl2 = 0 ;
while ( !file_ifstream ){
file_ifstream.open ("/server_fs/fajl.txt", std::ofstream::in );
cikl2++ ;
if( (cikl2%100) == 0){
printf ("\n file_fstream.open = false\n");
};
delay(100);
};
printf ("\n file_ifstream.open = OK\n");
Serial.println("ez erkezett a szerverre:");
char s[150] ;
do {
file_ifstream.getline (s, 100 );
Serial.println(s);
} while ( ! (s[0] == (char)13 ) );
Serial.println("a szerverre erkezett vege");
file_ifstream.clear();
file_ofstream.open ("/server_fs/fajl2.txt", std::fstream::out );
file_ofstream << WEB ;
file_ofstream.flush();
file_ofstream.close();
file_ifstream.close(); -
Janos250
őstag
FILE* c_style_file_read;
FILE* c_style_file_write;
do {
c_style_file_read= fopen("/server_fs/file1","r");
delay(1000);
Serial.println("wait c_style_file_read fopen");
} while (c_style_file_read == NULL);
Serial.println("c_style_file_read fopen OK!");
char c;
char buff [250] ;
do {
uint8_t i = 0 ;
do {
c = fgetc (c_style_file_read);
// Serial.print(c) ;
buff[i]= c ;
i++ ;
} while (c != (char)10 );
buff[i]= 0 ;
Serial.print(buff);
} while( (buff[0]!= 13) );
Serial.println("Ennyi jott a szerverrol") ;
c_style_file_write= fopen("/server_fs/file2","w");
fwrite ( WEB, sizeof( WEB), 1, c_style_file_write );
fflush ( c_style_file_write );
Serial.println("kiirta");
fclose(c_style_file_read);
fclose(c_style_file_write); -
Janos250
őstag
Az igaz, de ha lehetne, elkerülném.
Márcsak azért is, mert ha ezt sikerült volna megoldani, akkor semmi a lib-ből nem kellene a programba, minden a szabályos C, vagy C++ file kezeléssel menne a WiFi, így meg hiába a szabályos file open, read, write, close, ha fileként akarom kezelni a WiFi-t, kell az init.
Szabályos file műveletekkel tudok írni egy távoli gépre, vagy tudok onnan olvasni, mindenféle plusz nélkül.
Nem tragédia, de jobb lett volna, ha nem kellett volna. -
Janos250
őstag
"nem lehet azt az init függvényt a könyvtár részévé tenni?"
Dehogynem! Annak része. Csak kissé slampos, ha azt kell mondanom a usernek, hogy ha használni akarod ezt, akkor a setupba tedd be, hogy init().
"nem igazán látom a problémát. "
Nem csoda, hisz nincs is különösebb probléma, csak gondoltam, hátha a guruk tudnak valami titkos, szabadkőműves megoldást, és azt eltanulom tőlük.
-
valkesz93
csendes tag
Köszi a valaszt!
Es ha maga a napelem lenne 12V, akkor kilehetne hagyni a stepup/stepdown konvertert?
A tul alacsony tolto feszultseg okozhat problemat a litium cellaknak?
Regota megakartam mar kerdezni, hogy valtozo feszultsegbol pl 6-12 volt, elolehet allitani stabil feszultseget ami pl mindig 5 voltot ad le?
Koszi! -
vegyszer
addikt
De a WiFi access point teszten létre Jon új WiFi.
Az általam linkelt kóddal nem. Roszzul lenne benne valami megadva?Próbáltam összenézni a példa és a kódom WiFi-re vonatkozó részét. Teljesen máshogy van deklarálva, megadva. De ha azt átemelem, a fordító hibára fut.
Ennek a kódnak van egy előzménye. Abban soros porton megy ki az infó nem teló, hanem PC számára. De azzal se jutok előrébb.
Na most érzem, hogy el kell mélyedni sok olyanban, amit nem terveztem eredetileg.
-
vegyszer
addikt
Ez a ESP8266 szerinted jó lesz nekem?
Ahogy nézem a WiFi adott, az elég nekem.
Ilyet, vagy hasonlót melyik pesti/szolnoki boltokban érdemes keresni? -
biker
nagyúr
ezen dolgoztam, de olyat találtam, hogy telepítés, de telepített library törlése nem, így agresszív kismalac bement a file kezelőbe, és kitörölte a felesleges libeket, és most felment

Tényleg nincs könyvtár törlése az arduino ide-ben?előtte csak adogattam hozzá, mert nem jó, másik joy, nem jó másik joy, és fel se tűnt elsőre a duplikálás
-
-
Lesz helye, csak fura volt, hogy ez ilyen
Nem tudtam, hogy van ilyen változat. A nyöszörgéssel nincs is gond, de valami borzalmas nehezen mozog 5V-ról.
Ja, meg nem erről volt szó az ebay-es hirdetésben
Majd 2db 66rpm-es kis motor+áttétel lesz, ami lehet feleslegessé válik, arról lehet szó.
-
Ööööööö
ööööööööööööööööööööööö
Ezek körbeforognak
Ilyet még nem láttam
Tehát
- 2A-es USB tápról már úgy elmozog, de akkor is visít, meg kelletlen
- több teljes fordulatot is megtesz az Arduino Servo-s Sweep példaprogival
Az eddigiek azért egy akármilyen 5V-ról simán mentek.Mi a franc...

(Meg köszi a segítség, persze.) -
-
-
bear_
aktív tag
Már értem, köszi a tanácsot.
@#15215 weiss neked is köszi, hétvégén kipróbálom.
"Miért van a digits1/2/3/4, és miért különböznek, ha mindegyik egy sima 7 segmenses kijelzőt vezérel? "
Mert nem egyesével vezérli a kijelzőket, hanem egyszerre. Itt van hozzá a kapcsolás: [link]
De az is lehet, hogy én gondoltam túl
Új hozzászólás Aktív témák
- Azonnali játékos kérdések órája
- Path of Exile (ARPG)
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Blu-ray lejátszók
- Mobil flották
- gban: Ingyen kellene, de tegnapra
- Arc Raiders
- Apple HomeKit smart home / okos otthon
- Székesfehérvár és környéke adok-veszek-beszélgetek
- Tesla topik
- További aktív témák...
- Nvidia Quadro P400/ P600/ P620/ P1000/ T400/ T600/ T1000 - Low profile (LP) + RTX A2000 6/12Gb
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Eladó Samsung Galaxy S22 8/128GB / 12 hó jótállás
- GYÖNYÖRŰ iPhone 12 mini 256GB Blue -1 ÉV GARANCIA -Kártyafüggetlen, MS3625, 100% Akkumulátor
- Gyári garanciával Digitalizáló tábla XP-PEN Artist Pro 24
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
Mert feltölteni tudok, csak nem látom az eredményt.


Újra fogom próbálni
én is ezért használtam egy külső ADC-t hiába lett volna teljesen elég az ESP32 a gyakorlatban sajnos nem tudta a század pontos kijelzést.
Tartom virtuális gépben, megvett licensszel, Photoshop és pár hifitervező meg ilyesmik miatt, amik istennek se moccannak meg Linuxon, de ennyi.

ekkold
