Fórum témák
- • Kapu távirányító hatótáv növelése. (Belső antennával)
- • Mosógép vezérlők és általános problémáik
- • KDC kaputelefon loggolás
- • Házilag építhető fémkereső
- • Quad 606, 707 és 909-es erősítő tapasztalatok és hibák
- • Vicces - mókás történetek
- • Erősítő építése elejétől a végéig
- • Készülékek kapcsolási rajzai
- • Felajánlás, azaz ingyen elvihető
- • Tápegység
- • Autóriasztó és központi zár
- • Muzeális készülékek-alkatrészek restaurálása
- • Savas akkumulátor
- • Ki hol gyártatja a NYÁK-ot ?
- • TV hiba, mi a megoldás?
- • Fejhallgató erősítő
- • EMG TR-0463 funkciógenerátor
- • Elfogadnám, ha ingyen elvihető
- • Dansk 3f-T3535, és minden, ami vele kapcsolatos
- • Elektronikai témájú könyvek újságok
- • Lemezjátszó beállítása, javítása
Régi elektronikai építőkészletek- • Villanyszerelés
- • Hegesztő inverter javítás
- • Érdekességek
- • Műszerjavítás jogi háttér
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • PC táp átalakítás
- • Napelem alkalmazása a lakás energia ellátásában
- • Kapcsolóüzemű (PWM) végfok építése
- • Hangszórójavítás (otthon)
- • Quad 405-ös erősítő tapasztalatok és hibák
- • Alternativ HE találkozó(k)
- • Mobiltelefon hiba
- • Légkondi készítése
- • Golf IV elektronika
- • Hűtőgép probléma
- • 13,8V-25A-es táp
- • LCD TV probléma
- • WiFi antenna készítés
- • Kontaszet doboz átépítése
- • Számítógép hiba, de mi a probléma?
- • Toroid transzformátor
- • Espressif mikrokontrollerek
- • Arduino
- • Léptetőmotorok (vezérlése)
- • Labortápegység készítése
- • STK erősítők javítások
- • Klíma szervizelés, javítás
- • Univerzális távirányító
- • Castone erősítő javítás
- • Rendelés külföldről (eBay - Paypal)
- • Kávéfőzőgép hiba
- • Elektronikus hangszerek
- • Villanymotor bekötése
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Megígértem, h megosztom a többiekkel is az írásodat. Köszönöm. Itt lesz a leírásod:
Ha USB-s soros (serial) porton keresztül szeretnél Putty-val csatlakozni egy eszközhöz, akkor az eszközkezelőben (Device Manager) látható COM port számot kell megadni. Itt a pontos lépések a helyes beállításhoz:
? 1. USB-soros adapter csatlakoztatása
• Csatlakoztasd a számítógéphez az USB-soros adaptert.
• Ha szükséges, a megfelelő driver is automatikusan települ (pl. Prolific, FTDI, CH340 típusú chipek esetén).
? 2. COM port szám megnézése az Eszközkezelőben
• Nyisd meg az Eszközkezelőt (jobb klikk a „Start” gombra → Eszközkezelő).
• Keresd meg:
„Portok (COM és LPT)” menüpont alatt egy ilyesmit kell látnod:
• USB Serial Port (COM3)
• vagy Prolific USB-to-Serial Comm Port (COM4)
(Ez jelöli, hogy az adapter melyik COM porton van.)
? Jegyezd meg a COM számot (pl. COM3, COM4 stb.)
? 3. Putty beállítása
• Indítsd el a Putty programot.
• A bal oldali menüből válaszd a Session részt.
• Jobboldalon:
• Connection type: jelöld be a Serial opciót.
• Serial line: ide írd be a COM port nevét, pl. COM4
• Speed (baud): ez a kommunikációs sebesség, amit az eszköz igényel, pl. 9600, 115200, stb. (Ez az eszköztől függ — nézd meg a dokumentációját!)
⚙️ 4. További soros port beállítások (ha kell)
A Putty bal menüjében:
• Menj a Connection → Serial részhez.
• Itt beállíthatod:
• Data bits (általában 8)
• Stop bits (általában 1)
• Parity (általában None)
• Flow control (általában None vagy XON/XOFF, eszköztől függ)
✅ 5. Csatlakozás
Kattints a „Open” gombra. Ha minden jól van beállítva, meg kell jelennie a soros kommunikációs felületnek.
Ha valami nem működik:
• Ellenőrizd, hogy valóban a jó COM portot adtad-e meg.
• Próbáld újracsatlakoztatni az adaptert.
• Nézd meg, hogy más program nem használja-e a COM portot.
Sok sikert!
Kösszi!
Amire nem vàlaszoltál, form feed , lapdobás funkciót escape12 szekvenciát sikerült-e használnod?
Ok forrást át kell nézzed, küldtem 1 2 minta kódot is ... azokon láttad-e a változásokat?
Redőnyvezérlés Redőnyvezérlést akarok készíteni esp 8266-al. A vezérlés már működik, csak bizonyos idő után a relét ki kellene kapcsolni, de az nem akar sikerülni. Ahhoz kérnék segítséget.
unsigned long elozoIdo = 0;
long keslIdo = 3000;
if (header.indexOf("GET /5/fel") >= 0) {
Serial.println("GPIO 5 fel");
output5State = "felhuzott";
digitalWrite(output5, LOW);
digitalWrite(output6, HIGH );//output6 bekapcsolás
unsigned long jelenlegiIdo = millis();
if (jelenlegiIdo - elozoIdo >= keslIdo); // Ellenőrzés, hogy eltelt legalább a késleltetési idő.
{
digitalWrite(output6, LOW ); //output6 kikapcsolása
}
elozoIdo = jelenlegiIdo; //(az időbélyeg frissítése)
} else if (header.indexOf("GET /5/le") >= 0) {
Ebben a programrészben kérném a segítséget, ezt kellene működőképessé tenni.
Köszönettel.
| (#) |
meslac válasza (Felhasználó 32034) hozzászólására (») |
Nov 13, 2025 |
 |
/ |
 |
|
A program működik, csak a relé nem kapcsol ki. Két relé van az egyik a fel, a másik a le működtetést végzi. Az a probléma hogy, az aktuális relé mindig bekapcsolva marad, ami felesleges. Azt kellene megoldani, hogy egy idő után kikapcsolja.
Ezért kell jól átgondolni,mit akarok,hogy kell működnie a programnak.Érdemes egy flowchartot rajzolni,
vagy fejben jól átgondolni. Szóban:
loop
FEL? ha igen R2 off, R1 on, oldmillis = millis, IDŐ on
LE? ha igen R1 off, R2 on, oldmillis = millis, IDŐ on
IDŐ on? ha igen lejárt? (millis - oldmillis > 3000?) ha igen R1 off,R2 off,IDŐ off
A lényeg, az időt a loopban kell vizsgálni. Én még beraknék egy STOP-ot is,hogy bármikor meg lehessen állítani.
STOP? ha igen R1 off, R2 off, IDŐ off
Közben eszembe jutott egy hiba
FEL & IDŐ off és LE & IDŐ off - ot kell vizsgálni.
A programodban a hiba, nem
if (jelenlegiIdo - elozoIdo >= keslIdo) hanem while (jelenlegiIdo - elozoIdo < keslIdo) {} csak így beragad a
program 3 másodpercre és nem lehet STOP.
| (#) |
meslac válasza (Felhasználó 32034) hozzászólására (») |
Nov 14, 2025 |
 |
/ |
 |
|
Köszönöm a segítséget. Az még a hiba, hogy az "elozoIdo-t" mindig nullának veszi és így mindig teljesül a feltétel. Azt kellene megoldani, ha digitalWrite(output6, HIGH);
teljesül, akkor az "elozoIdo" vegye fel és rögzítse pillanatnyi időt és ezzel számoljon.
Köszönöm a segítséget. Sajnos az nem szerencsés, ha leállítjuk a programot, mert az a 3 mp idő lényegesen több fog lenni. Akkor egyszerűen delay-el meglehetne oldani. Egyébként stop van bent, hogy útközben leállítható legyen. Arra kellene megoldás, ha elindul a redőny attól az időtől számítva bizonyos idő után leállítsa. A hiba az "elozoIdo-ben" van azt mindig 0-nak veszi, aminek az elindulás idejét kellene felvenni. Sajnos ezt nem tudom megoldani, mert nem nagyon értek hozzá.
Ne direktben add - HIGH. Tedd változóba.
Szia. Megmutatom az én redőnyvezérlésem részletét, ami a mozgatást csinálja. Nálam tudja a vezérlés a teljes mozgatási időt és azt felosztja százalékosra. Bármikor meg is lehet állítani, és a redőnyt deaktiválni is lehet, ha mondjuk meghibásodik. A mozgat függvénynek a redőny száma kell és a százalékos érték és kiszámolja, hogy hány ms-ig kell mozognia.
void loop(){
unsigned long temp_millis = millis();
for(unsigned int i=0;i<darab;i++){
if((start_ido_mozgatas[i]<temp_millis && stop_ido_mozgatas[i]>temp_millis && mozgatas_irany_fel[i])){irany_fel[i]=true;}else{irany_fel[i]=false;}
if((start_ido_mozgatas[i]<temp_millis && stop_ido_mozgatas[i]>temp_millis && mozgatas_irany_le[i])){irany_le[i]=true;}else{irany_le[i]=false;}
if(irany_fel[i] || irany_le[i]){mozgasban[i] = true;}else{mozgasban[i] = false;}
}
if(irany_fel[0] && !irany_le[0]){digitalWrite(r00_fel,LOW);}else{digitalWrite(r00_fel,HIGH);}
if(irany_le[0] && !irany_fel[0]){digitalWrite(r00_le,LOW);}else{digitalWrite(r00_le,HIGH);}
if(irany_fel[1] && !irany_le[1]){digitalWrite(r01_fel,LOW);}else{digitalWrite(r01_fel,HIGH);}
if(irany_le[1] && !irany_fel[1]){digitalWrite(r01_le,LOW);}else{digitalWrite(r01_le,HIGH);}
if(irany_fel[2] && !irany_le[2]){digitalWrite(r02_fel,LOW);}else{digitalWrite(r02_fel,HIGH);}
if(irany_le[2] && !irany_fel[2]){digitalWrite(r02_le,LOW);}else{digitalWrite(r02_le,HIGH);}
}
//*****************************************************************************
void mozgat(unsigned int rsz,unsigned int pos){
if(mozgasban[rsz]){valasz = "{\"valasz\":[{\"szoveg\":\"Mar mozgasban van!\"}]}"; return;}
if(!aktiv[rsz]){valasz = "{\"valasz\":[{\"szoveg\":\"Redony uzemen kivul!\"}]}"; return;}
unsigned int kulonbseg=0;
unsigned long mozgasi_ido=0;
start_ido_mozgatas[rsz] = millis();
unsigned int pluszido=0;
if(pos<0){pos=0;}
if(pos>100){pos=100;}
if(pos==0||pos==100){pluszido=plusz_ido;}else{pluszido=0;}
unsigned int posms = map(pos,0,100,0,teljes_mozgasi_ido[rsz]);
if(posms<posinms[rsz]-100){ //lefelé
kulonbseg = posinms[rsz] - posms;
mozgatas_irany_le[rsz] = true;
}else{
mozgatas_irany_le[rsz] = false;
}
if(posms>posinms[rsz]+100){ //felfelé
kulonbseg = posms - posinms[rsz];
mozgatas_irany_fel[rsz] = true;
}else{
mozgatas_irany_fel[rsz] = false;
}
if(!mozgatas_irany_fel[rsz] && !mozgatas_irany_le[rsz]){kulonbseg = 0;}
stop_ido_mozgatas[rsz] = start_ido_mozgatas[rsz] + kulonbseg + pluszido;
valasz="{\"valasz\":[";
valasz+="{\"szoveg\":";
valasz+="\"OK\"";
valasz+=",\"redonyszam\":";
valasz+=rsz;
valasz+=",\"kellpos\":";
valasz+=posms;
valasz+=",\"kulonbseg\":";
valasz+=kulonbseg;
valasz+=",\"irany\":";
if(mozgatas_irany_fel[rsz]){valasz += "\"fel\"";}
else if(mozgatas_irany_le[rsz]){valasz += "\"le\"";}
else{valasz += "\"nincs\"";}
valasz += "}]}";
}
//*****************************************************************************
void veszstop(unsigned int sz){
start_ido_mozgatas[sz] = millis();
stop_ido_mozgatas[sz] = millis();
valasz = "{\"valasz\":[{\"szoveg\":\"Redony megallitva.\"}]}";
}
//*****************************************************************************
void service(unsigned int rsz,unsigned int sta){
if(sta>1){sta=1;}
aktiv[rsz]=sta;
EEPROM.write(rsz,sta);
valasz = "{\"valasz\":[{\"szoveg\":\"Redony ";
valasz += rsz;
if(sta){valasz += " aktivalva!\"}]}";}else{valasz += " deaktivalva!\"}]}";}
}
//*****************************************************************************
| (#) |
meslac válasza (Felhasználó 32034) hozzászólására (») |
Nov 14, 2025 |
 |
/ |
 |
|
Igen nagyon hasonló.
Köszönöm! Én nem akarom nagyon bonyolítani, az enyémen van egy gomb redőnyönként ami fel-le irányt vezérli és egy amivel meglehet állítani. Ez működik is, csak az aktuális relé meghúzva marad, ezt kellene egy idő után automatikusan kikapcsolni.
Leegyszerüsítve így néz ki. Ha érkezik a GET kérés, akkor beírja az aktuális idő+10mp-et az ido_fel vagy ido_le változóba. Ez a rész csak egyszer fut le. Ezt lejjebb kiértékeli. Ha kisebb a millis() mint az ido_fel vagy ido_le változóban lévő érték, akkor mozog a redőny le vagy fel. Ha már valamelyik irányba mozog a redőny, akkor a kérésnél nem fogja indítani a másik irányt. Erre van a redony_fel és redony_le változó. Érdemes hardveresen is a reléknél reteszelni a két irányt.
void loop(){
if (header.indexOf("GET /5/fel") >= 0 && !redony_le) {
ido_fel = millis() + 10000;
}
if (header.indexOf("GET /5/le") >= 0 && !redony_fel) {
ido_le = millis() + 10000;
}
if (header.indexOf("GET /5/stop") >= 0) {
ido_fel = millis();
ido_le = millis();
}
if(ido_fel>millis()){
redony_fel = true;
digitalWrite(output5, HIGH);
}else{
redony_fel = false;
digitalWrite(output5, LOW);
}
if(ido_le>millis()){
redony_le = true;
digitalWrite(output6, HIGH);
}else{
redony_le = false;
digitalWrite(output6, LOW);
}
}
| (#) |
Panhard válasza (Felhasználó 32034) hozzászólására (») |
Nov 15, 2025 |
 |
/ |
 |
|
Nincs azzal semmi gond, ha egy feltétel folyamatosan lefut. (a debugtól eltekintve, mert az ideiglenes) "Az állapotokat is az indexof... sorokban kellene bebillenteni" miért is?
Mutass egy működő példát, a szószaporítás helyett, de ne a ChatGPT-t másolgasd ide, mert azzal csak a fórumot terheled, de haszna nem sok van.
| (#) |
Panhard válasza (Felhasználó 32034) hozzászólására (») |
Nov 15, 2025 |
 |
/ |
 |
|
Parancsolj. Így már lehet debugolni minden műveletet, és a kimenetek is csak egyszer vannak írva.
void loop(){
if (header.indexOf("GET /5/fel") >= 0 && !redony_le) {
ido_fel = millis() + 10000;
Serial.println("GET keres erkezett: fel");
}
if (header.indexOf("GET /5/le") >= 0 && !redony_fel) {
ido_le = millis() + 10000;
Serial.println("GET keres erkezett: le");
}
if (header.indexOf("GET /5/stop") >= 0) {
ido_fel = millis();
ido_le = millis();
Serial.println("GET keres erkezett: stop");
}
if(ido_fel>millis() && !redony_fel){
redony_fel = true;
digitalWrite(output5, HIGH);
Serial.println("Redony start fel");
}
if(ido_fel<millis() && redony_fel){
redony_fel = false;
digitalWrite(output5, LOW);
Serial.println("Redony stop fel");
}
if(ido_le>millis() && !redony_le){
redony_le = true;
digitalWrite(output5, HIGH);
Serial.println("Redony start le");
}
if(ido_le<millis() && redony_le){
redony_le = false;
digitalWrite(output5, LOW);
Serial.println("Redony stop le");
}
}
A hozzászólás módosítva: Nov 15, 2025
| (#) |
Panhard válasza (Felhasználó 32034) hozzászólására (») |
Nov 15, 2025 |
 |
/ |
 |
|
Ezt gondold át mégegyszer. Mi történik akkor, ha a millis már a vége előtt 4000ms-nál tart, és te pont akkor hozzáadsz 10000-ms-t és elmented az ido_fel változóba.
Mivel a millis unsigned long és az ido_fel is unsigned long tipusú, ezért az ido_fel új értéke 6000 lesz, és a millis is 10000-el később 6000 lesz. Nem történik semmi, működni fog rendesen.
Szia!
Én ennél a problémánál inkább timer-eket használnék. Megfelelő ponton indít és a láb magas másik esetben meg leállít és láb alacsony. Túlcsordulási eseményre meg leállít ÉS a láb nullára.
Természetesen 10s nagy, nem tudom ennél a cpu-nál mi lehet és mi nem, de megpróbálnám úgy megadni az előosztókat satöbbi és az induláskor a timer értékét annyira állítanám be, hogy 10s-nél legyen a megszakítás kérelem.
Vagy ehhez hasonlóan, ami elvileg nem foglalja annyira a cpu-t, mert az kell a wifi-hez:
#include <Ticker.h>
Ticker timer;
void myFunction() {
Serial.println("10 másodperc eltelt");
}
void setup() {
Serial.begin(115200);
timer.attach(10, myFunction); // 10 másodpercenként fut
}
void loop() {
}
A hozzászólás módosítva: Nov 15, 2025
Közben megnéztem ilyesmi is lehet:
#include <Ticker.h>
Ticker timer;
bool timerActive = false; // fut-e éppen?
void myFunction() {
Serial.println("10 másodperc eltelt");
}
void setup() {
Serial.begin(115200);
// Példának 3 GPIO bemenet
pinMode(0, INPUT_PULLUP); // Start feltétel
pinMode(2, INPUT_PULLUP); // Stop feltétel
pinMode(3, INPUT_PULLUP); // Reset feltétel (ha van)
}
void loop() {
// ----- Indítás feltételre -----
if (!digitalRead(0) && !timerActive) { // gomb = LOW
timer.attach(10, myFunction); // Indít
timerActive = true;
Serial.println("TIMER ELINDÍTVA");
delay(300); // kontakt zaj ellen
}
// ----- Leállítás -----
if (!digitalRead(2) && timerActive) {
timer.detach(); // Leállít
timerActive = false;
Serial.println("TIMER LEÁLLÍTVA");
delay(300);
}
// ----- Újraindítás (= nullázás) -----
if (!digitalRead(3)) {
timer.detach(); // Leállít
timer.attach(10, myFunction); // Újraindít (nullázza az időt)
timerActive = true;
Serial.println("TIMER RESET + INDÍTÁS");
delay(300);
}
}
Azaz tetszőlegesen ki/be lehet kapcsolni eseményekhez kötve. A void myFunction() {}-ben lehetne a relék kikapcsolása.
A fő programban pedig a bekapcsolásuk és a ticker indítása.
Ez egy könnyítés csak, mert a ticker meg lett írva máshol, annyit tudok, hogy timer-t használ, és jelentősen tehermentesíti a cpu-t. Még a milis()-nél is jobban, ha minden igaz.
| (#) |
Panhard válasza (Felhasználó 32034) hozzászólására (») |
Nov 15, 2025 |
 |
/ |
1 |
|
Igazad van. Tényleg lehet gond belőle, bár nagyon kicsi rá az esély.
void loop(){
if (header.indexOf("GET /5/fel") >= 0 && !redony_le) {
redony_fel = true;
startido = millis();
digitalWrite(output5, HIGH);
Serial.print("Redony start fel");
}
if (header.indexOf("GET /5/le") >= 0 && !redony_fel) {
redony_le = true;
startido = millis();
digitalWrite(output6, HIGH);
Serial.print("Redony start le");
}
if (header.indexOf("GET /5/stop") >= 0) {
digitalWrite(output5, LOW);
digitalWrite(output6, LOW);
Serial.print("GET keres erkezett: stop");
}
if(millis() - startido > 10000){
if(redony_fel){
redony_fel = false;
digitalWrite(output5, LOW);
Serial.print("Redony stop fel");
}
if(redony_le){
redony_le = false;
digitalWrite(output6, LOW);
Serial.print("Redony stop le");
}
}
}
A másik elterül.
Köszönöm a segítséget! A módosításodat bemásoltam, lefut, de még élesben nem próbáltam ki.
| (#) |
ink hozzászólása |
Feb 1, 2026 |
 |
/ |
 |
|
RFID több tag Hello! A csatolt képen látható projekthez hogyan tudok még további 3 kártyát hozzáadni?
| (#) |
ink válasza (Felhasználó 32034) hozzászólására (») |
Feb 2, 2026 |
 |
/ |
 |
|
A programban hova illesszem be?
| (#) |
ink válasza (Felhasználó 32034) hozzászólására (») |
Feb 3, 2026 |
 |
/ |
1 |
|
Köszönöm, működik!
Program kód védelem Sziasztok!
Ha írok egy programot, amit hex formában töltök fel az arduinora (mega 2560-ra), akkor hogyan tudom ki olvasás ellen levédeni a programot? Flowcode-ban nem találok fuse biteket.
Köszönöm.
Próbáld ki az AVRDUDESS programot. Van benne FUSE és LOCK bit kalkulátor is.
Ez ugyan csak a GUI, de az oldalon ott van maga az AVRDUDE program is ami kell hozzá.
Csak aztán nehogy kizárd magad, arra vigyázz. A hozzászólás módosítva: Feb 9, 2026
|
|