Hirdetés

2024. április 28., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-03-11 00:46:52

LOGOUT.hu

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.

Összefoglaló kinyitása ▼

Hozzászólások

(#1201) gyapo11 válasza zka67 (#1199) üzenetére


gyapo11
őstag

Erre a megszakításos dologra mutathatnál egy alap programot, hogy megértsem a működését.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1202) gyapo11 válasza dave0825 (#1196) üzenetére


gyapo11
őstag

Az arduino sokkal gyorsabb mint az ember, nekem mikrokapcsolóval 40-50 ms-et sikerült legrövidebbet gombot nyomni, ennyi idő alatt nagyon sokszor be tudja olvasni, tehát mindenképpen kezelni kell a prellt, vagy lehet külső áramkörrel, és akkor elég a lenyomást-felengedést detektálni. Elég egy RC tag, az már megfogja a prellt.
A programodra nem tudok, nekem már túl bonyolult átlátni ekkora programot.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1203) softguner válasza gyapo11 (#1194) üzenetére


softguner
csendes tag

Ezt a b1state és a b2state változó oldja meg.

(#1204) gyapo11 válasza softguner (#1203) üzenetére


gyapo11
őstag

Ha a #1191-ben levő programra gondolsz, az a hosszú lenyomást megfogja, egynek számolja, de a prellt nem. Csak rá kell kötni a nyomógomb helyére egy 1 kHz-es négyszöggenerátort és nézni a számlálót.
Amikor vált az érték, akkor megnézi, hogy 1 lett-e, és ha igen léptet, ha 0 lett akkor nem. Vagyis minden L-H átmenetnél lépteti a számlálót.
Meg kell nézni az alkalmazott nyomógombot egy számlálóval, vagy egy hangkártyás szkópprogrammal, hogy van-e prell vagy nincs. De mechanikai érintkezésen alapuló nyomógombnál nagy valószínűséggel lesz, idővel még több. A fenti programmal használhatatlan lesz, mert egy nyomásra kiszámíthatatlan értékkel fog nőni az adat nevű változó értéke, nem eggyel.

[ Szerkesztve ]

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1205) softguner válasza gyapo11 (#1204) üzenetére


softguner
csendes tag

Ma is tanultam tőled valamit. Ezzel a problémával, tapasztalati úton még nem találkoztam, de igen valóban így van.

[link]

A harmadik megoldás a "C" megoldás szerinted mennyire használható hosszú távon? Csak hogy ne kelljen beépíteni egy DIP tokos triggert.

(#1206) gyapo11 válasza softguner (#1205) üzenetére


gyapo11
őstag

Szerintem jó a kondenzátoros, csak a kondi kapacitását kell eltalálni. Nem tudom a digitális bemeneten mennyi a két küszöbfeszültség, legyen 1 és 2 V, a két érték között kell tartania a kondinak, amíg a prell tart. Néhány ms-et ír a cikk, legyen 5 ms, a kapcsolás szerint 100 Ohmon tudja kisütni, föltölteni lassabban 1.1 kOhmon, vagyis 5 ms * 20 mA / 1 V = 100 mikrofarádnál nem lehet kisebb, a cikk szerint meg 100 nF.
A Tina szerint 100 Ohm és 100 mikroF 2 V feszültséget rákapcsolva így töltődik:

Ebből az látszik, hogy kb 7 ms alatt már 1 V-ot mászik.
Valószínűleg sokkal rövidebbek a prell impulzusai. Másrészt 5 V-ról indul a kisütés, szóval biztos elég kisebb kondi is.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1207) tvamos válasza gyapo11 (#1206) üzenetére


tvamos
nagyúr

Nem kovetsz el hibat, ha a felhuzo ellenallassal szamolsz! (Csak gondold megegyszer vegig.)
En 1ms-re szoktam szamolni, ha tactile switch... es nem a legsz..rabb kinai. (En ALPS-ot hasznalok csak.)

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1208) dave0825 válasza zka67 (#1199) üzenetére


dave0825
őstag

Megszakítást nem tudom, hogy kell használni, vagy az egyáltalán mi. :( Én is szívesen látnék egy egyszerű példát, már ha egyszerű a megvalósítása annak, amit leírtál, meg az ilyen megszakításoknak egyáltalán. :)

A programom még eléggé gyerek cipőben jár, csak beillesztgettem a helyükre a 6x5-ös mátrixhoz, meg a DS3231 beolvasásához szükséges dolgokat. Aztán elkezdtem a loop-ban if-eket csinálni, hogy ha == valamivel, akkor melyik led világítson, ehhez meg az a 6 soros binárisan megadott data tömböket írtam, meg majd így is terveztem csinálni. Tudom, hogy elég sok sor lesz így, de nekem így a legegyszerűbb a mostani tudásomat nézve.
Az infrával kapcsolatban például még semmit nem raktam a programba.

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1209) tvamos válasza dave0825 (#1208) üzenetére


tvamos
nagyúr

Az a megszakitas, hogy "megszakad" a programod futasa, vegrehajt a processzor egy specialis programreszt, majd visszater az eredeti "megszakitott" programhoz, es azt folytatja.
Arduinon meg nem hasznaltam, csak sima C/Assembly programokban.

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1210) zka67 válasza gyapo11 (#1201) üzenetére


zka67
őstag

Szia, az arduino oldalán rengeteg példa van fent, ezek közül a legegyszerűbbet betettem ide.

Timer1

#include <TimerOne.h>

void setup()
{
// Initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards
pinMode(13, OUTPUT);

Timer1.initialize(100000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
}

void loop()
{
// Main code loop
// TODO: Put your regular (non-ISR) logic here
}

/// --------------------------
/// Custom ISR Timer Routine
/// --------------------------
void timerIsr()
{
// Toggle LED
digitalWrite( 13, digitalRead( 13 ) ^ 1 );
}

(#1211) tibi-d


tibi-d
tag

Sziasztok!
Úgy látom, hogy a nyomógombok prellegésmentesítése ekkora probléma. Bemásolom az általam használt megoldást (kiollózva egy működő alkalmazásból). Ezt a metódust bármilyen menürendszer felépítésére fel lehet használni. Csak a fantázia szab határt.

#include <TimerOne.h>
int Pin3 = 3;
int Pin4 = 4;
int Pin5 = 5;
int Pin6 = 6;
int Value;
int Back;
int Up;
int Down;
int Enter;
int Time1;
int Count1;

void setup()
{
Timer1; // Timer1 meghívása
Timer1.initialize(100000); // Az időzítés beállítása
Timer1.attachInterrupt( timerIsr ); // A megszakításkor meghívott függvény
pinMode(Pin3, INPUT_PULLUP);
pinMode(Pin4, INPUT_PULLUP);
pinMode(Pin5, INPUT_PULLUP);
pinMode(Pin6, INPUT_PULLUP);
}

void timerIsr() // Minden megszakításkor lefut 1 ciklusidőre.
{
Time1 = 1; // Globális változó beállítása, ami bárhol használható
Count1 ++; // 0.5 s alatt körbeszámol
if ( Count1 > 4 ) Count1 = 0;

}

void loop()
{
if (Time1 == 1 ) // 0.1 s-ként billentyű beolvasás
{
Back = digitalRead(Pin3);
Up = digitalRead(Pin4);
Down = digitalRead(Pin5);
Enter = digitalRead(Pin6);
Menu();
Time1 = 0; // Csak 1 ciklus idejére figyeli a gombokat
}

}

void Menu()
{
if ( Up == 0 && Count1 == 2 )
{
Value ++; // 0.5 s-ként növeli az értéket

}

if ( Down == 0 && Count1 == 2 )
{
Value --; // 0.5 s-ként csökkenti az értéket

}
}

Lehet, hogy csak billentyű beolvasásra kicsit körülményesnek látszik, de amiben én használom ott ez a módszer vált be. (szerteágazóbb funkciók meghívása, stb)

(#1212) gyapo11 válasza zka67 (#1210) üzenetére


gyapo11
őstag

Megnéztem, benne van a librariesban a példák között. Tök jó, nem tudom mennyivel dobja meg a kódot, érdemes használni. Mondjuk sok ilyen dolog van még, amire időt kellene szakítani és megismerni.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1213) softguner


softguner
csendes tag

Sziasztok.

Akadt egy apró problémám, amire nem találok megoldást. Egy soros kommunikációval vezérelt Mp3 lejátszót akarok beüzemelni, aminél a következő problémám akadt. Valamiért nem működik nálam az az elágazás, amikor kezelném azt a helyzetet "ha az eszköz nem elérhető".

Ennek a résznek csak akkor kellene lefutni, ha az eszköz elérhető:

if (mp3.available() > 0) // Ha a lejátszó elérhető
{
myGLCD.clrScr();
if (answer()) // Ha az answer függvény TRUE
{
if (ansbuf[3] == 0x3A) // Kártya vizsgálata // Ha be van dugva
{
Serial.println("TF Card in slot");
command(0x17, 0x0100); // A 02-es mappa játszása folyamatosan
command(0x0D, 0x00); // Lejátszás elindítása
myGLCD.clrScr();
myGLCD.drawBitmap(0, 0, autoplay, 84, 48);
myGLCD.update();

}
if (ansbuf[3] == 0x3B) // Kártya vizsgálata // Ha ki van húzva
{
Serial.println("TF Card out of slot");
myGLCD.clrScr();
myGLCD.print("INSERT", 23, 10);
myGLCD.print("SD CARD", 20, 20);
myGLCD.update();
}
}
}

Ez eddig oké is, minden stimmel. Viszont bármit írok a különben részbe, az ugyanúgy lefut, ezért csak a különben részbe írt képmegjelenítést látom a Nokia kijelzőn. Plusz a softwareserial library következő feltételvizsgálata sem működik:

if (!mp3.available())
{
//Valami történik
}

Nem nagyon vagyok otthon a sotwareserial library működésében, ezért ha valaki tud segíteni, hogy mit bénázhatok el, annak előre is egy NAGY köszönet :)

(#1214) dave0825


dave0825
őstag

Szerintetek ezen, miért nagyobb a 16MHz-es frekvenciagenerátor, ehhez képest? Vagy attól még a kompaktabb panel is működhet ugyanúgy, és csak fejlődött a korral? :) Ott amúgy external resonator-t írnak, annyit megfigyeltem. Nekem a nagyobbik van, csak most valami nem stimmel vele, elkezdte a napokban, hogy ha rádugom laptop-ra (amin eddig is használtam, driver-t sem frissítettem), akkor kékhalál fogad, vagy ha rádugni sikerült is, rátölteni már nem tudom a programot, mert akkor jön elő a hiba. Úgy sikerül, ha előbb csak az usb-t dugom be, majd úgy kötöm rá a 4 vezetéket a pro mini-re, így működik. Vagy lehet, hogy a sok led-et nem szereti az usb (programozáshoz nem használom a külső tápot, amit majd ha kész lesz, fogok). :F
Szóval ezért vennék egy másikat, meg ezt be is építem ugye az órámba, úgyhogy legyen azért még egy. :)

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1215) tvamos válasza dave0825 (#1214) üzenetére


tvamos
nagyúr

Ahogy fejlodik a technologia, egyre kisebbek lesznek ezek a dolgok... :)

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1216) dave0825 válasza tvamos (#1215) üzenetére


dave0825
őstag

Gondoltam erre én is de mondom hátha csak rosszul. :B Köszi, akkor veszek egy ilyet.

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1217) weiss


weiss
addikt

Sziasztok, volt már dolga valakinek ilyennel?

I did nothing, the pavement was his enemy!

(#1218) dave0825


dave0825
őstag

Az Arduino oldalán található Debounce és ButtonStateChange sketch-et vegyítettem, így hoztam létre a saját prellmentesített gombnyomásszámláló programomat, amit át szeretnék írni úgy, hogy ezzel az alap programmal tudjam számoltatni a távirányítón lenyomott gombnyomásokat (4 gomb van, megvannak a hexa kódjai is), de nem tudom, hogy hogy induljak el. Tudnátok segíteni kicsit? :B

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1219) dave0825 válasza gyapo11 (#1187) üzenetére


dave0825
őstag

Kipróbáltam ezt a példát, amit írtál, de itt is néha 2 lenyomást számol, amikor csak 1x nyomom le a gombot. Hogy lehetne kiegészíteni úgy, hogy 1 nyomásra mindenképp csak 1-et számoljon?

if (gombjelzo==1 && results.value == 0x7A6E10BA)
{
buttonPushCounter++;
}

else if (gombjelzo==1 && results.value != 0x7A6E10BA)
{
gombjelzo=0;
}

if (gombjelzo==0 && results.value != 0x7A6E10BA)
{
}
else if (gombjelzo==0 && results.value == 0x7A6E10BA)
{
gombjelzo=1;
}
Serial.println(buttonPushCounter, DEC);

Meg ha másik gombot nyomok, majd újra azt, amelyiket számoltatom (tehát a legutolsó else if fut le), akkor 1 nyomást nem számol, mert ugye akkor áll be a gombjelzo 1-re, és csak a következőt adja hozzá a számlálóhoz. Amit eggyel följebb írtam, arra a programra nem tudsz valami megoldást mondani? Hogy nem rendes fizikai gombbal csinálnám ugyanezt, hanem egy hexa kóddal, tehát ha az a kód érkezik, akkor HIGH, ha nem, akkor LOW-nak feleljen meg, vagy ilyesmi.

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1220) tvamos válasza dave0825 (#1219) üzenetére


tvamos
nagyúr

:Y 0x7A6E10BA hogy jött ki ez az érték? Csak kíváncsi lettem...

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1221) dave0825


dave0825
őstag

A 0x-et mindenképp elé kell írni, és utána megy a hexa kód, így ismeri föl a program. Először kínlódtam vele, mert tettem " "-be, aztán ' '-be, mindegyik nélkül is próbáltam, sehogy sem ment, aztán megnéztem a videót, ami alapján jött az ötlet a távirányítóhoz, és 0x-et ír elé.
Az utána lévő 8 jegyű kód meg az, amit a távirányító valamelyik gombjának megnyomása után kapok.

Amúgy itt látszik is (4 gombot nyomtam meg), hogy az 1. gomb 1x-i megnyomásakor 2-t érzékelt, ezt kéne kiküszöbölnöm valahogy. :F

Itt egy próbaprogram is, hogy lásd, hogy 0x és utána a kóddal megy szépen. :)

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1222) Danex válasza dave0825 (#1221) üzenetére


Danex
addikt

Én sima decimálként kezeltem az IR kódokat, am az ismételt megnyomást én úgy küszöböltem ki, hogy az "irrecv.resume();" elé raktam egy delay-t (750, de szerintem kevesebb is megteheti) így elég ritka lett a duplikálás.

(#1223) softguner válasza dave0825 (#1221) üzenetére


softguner
csendes tag

Nem tudom, hogy mire használod az infrát, de én így oldottam meg, hogy csak 1x hajtsa végre az utasításokat.

results.value=0;
if (irrecv.decode(&results))
{
irrecv.resume();
}
Serial.println("Infra value: ");
Serial.println(results.value);

if (serialon != 0 )
{
switch (results.value)
{
case 553536955:
radio.setStandByOn();
if (playstate == 1 && radioon == 0)
{
command(0x0E, 0x00);
Serial.println("Pause");
playstate=0;
results.value=0;
myGLCD.clrScr();
myGLCD.print("PAUSE", 28, 20);
myGLCD.update();
}
else
{
command(0x0D, 0x00);
Serial.println("Play");
playstate = 1;
results.value=0;
myGLCD.clrScr();
myGLCD.print("PLAY", 30, 20);
myGLCD.update();
}
radioon = 0;

break;

Mindig nullára állítottam az infra => results.value változót, és így mindig csak 1x fut le a kívánt programrész, a távirányító megnyomásakor.

Szerintem lemaradtam, de te mire használod az infrát? Én egy mp3 lejátszót és egy tea5767-es rádiót kapcsolok vele. Nálam ez a megoldás működik, lehet nálad van valami speciális dolog. Itt pl azért kell így megoldanom, mert a play/pause gomb egy és ugyan az, és ha már épp megy a lejátszás, akkor értelemszerűen pause jön a következő gombnyomásra, ellenben play kivéve ha a rádió üzemelt éppen, mert akkor így is úgy is play lesz.

[ Szerkesztve ]

(#1224) zoli03


zoli03
őstag

Ha van egy szenzorom (az én estemben DHT22), akkor azt ugye rá lehet kötni egyszerre két Arduinora is? Egyik Arudinoról kapná a tápot, de a jelet mindkettőnek küldené egyszerre.

(#1225) dave0825


dave0825
őstag

Köszönöm mindkettőtöknek, megpróbálom mindkét megoldást, hátha alakul valami. :)

Amúgy 1-2 hónapja kezdtem el aktívabban kérdezgetni itt, mert (röviden) egy ilyesmit szeretnék csinálni, csak magyarul, és úgy, hogy nem látszanak a betűk, hanem csak egy tükör lesz, és az éppen szükséges szavak világítanak át rajt. Ehhez szeretnék távirányítót, amivel 2-3-4 (még nem tudom pontosan) módot változtatnák, amelyekben az időt tudom beállítani (szintén távirányítóval), illetve egy másik módban a hőmérsékletet jelezné ki, a 3.-ban pedig újra az időt, meg még ami eszembe jut. :) Találtam itthon egy régi 4 gombos távirányítót, azt szeretném használni, infrám is van, úgyhogy megvan minden, már csak a program kéne.

Egyelőre így néz ki a dolog (a tükrös fólia is fönt van már a plexin, csak közben fölbuborékosodott, mert állítólag plexit nem lehet fóliázni, mert mindenképp előbb-utóbb ilyen lesz, úgyhogy majd szerzek rendes üveget, amit újrafóliázok) a vágatott szavas fólia hátlapján keresztül (még csak tesztelés alatt van a program is). Meg a ledek egyelőre eléggé 1 pontba világítanak, rakok majd rá egy fóliát, amivel szépen szétterül nagyobb körré, így egyformán világítja majd be a betűk mindegyik részét. A fönt linkelt oldalon is a csávó rakott rá egy fóliát.

Itt pedig egy videó, a perceket átírtam a programban másodpercekre, így jobban látszik, hogy hogy fog működni majd. :)

(#1224) zoli03: szerintem lehet, igen, de a másik Arduino-ra ne csak a jelet kösd, hanem a földet is húzd át oda.

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1226) tvamos válasza dave0825 (#1225) üzenetére


tvamos
nagyúr

Szuper!

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1227) dave0825


dave0825
őstag

Megőrülök ezzel az egésszel............Rátöltöttem a fönti képen látható infrás programot, a 11-es pin-re kötöttem az infrát, az még szabad volt, erre valahogy, halván lila f*ngom nincs hogy, de a led-mátrix utolsó oszlopa világít, ami a 10-esre van kötve...Gondoltam, a forrasztásnál valahogy összeérhetett, esetleg a forrasztóvíz miatt áthúz, vagy nem tudom, így átforrasztottam a 13-asra, ami elég messze van tőle. Rátöltöm újra a programot, megint világítanak ugyanazok. :W Ráadásul hiába nyomkodom a távirányítót, soros porton semmit sem ír ki a program, pedig a hexa kódokat kéne.
Semmi köze nincs a programnak a mátrixhoz, semmit nem módosítottam rajta, egyedül a 11-es pin-t kéne használnia, mitől világít mégis az utolsó oszlop? :F Átkötöttem az infrát egy másik Arduino-ra, azon meg tökéletesen megy. :W Soros porton írja is a megnyomott gombok kódjait, tehát nem az infrával van baj.
Átnéztem mindent, sehol semmi zárlat, vagy bármi. Meghalhatott az pro mini-m? Rátölteni sem mindig akarja a programot, megnyomom a reset gombot, amikor kell, és csak villan rajt 1 led pirosan, de nem tölti rá (kéken szokott villogni az usb-n 2 led is, most azok sem). Kihúzom a TxD, RxD, GND vezetékeket, visszadugom, semmi. Kb. 10-ből 1x sikerül rátölteni. :F
Ha nem is tudtok így látatlanba segíteni, legalább kiadtam magamból, mert már: :O :W

Amúgy (#1226) tvamos: köszi. :B

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1228) zoli03


zoli03
őstag

Elakadtam kicsit a hőmérős programommal. 1602 LCD-re íratom ki az aktuális hőmérsékletet és alá a páratartalmat bal oldalra. Jobb oldalra meg a minimum hőmérsékletet, alá a minimum páratartalmat íratom ki, majd ezt mondjuk 30 másodperc múlva lecserélem a maximum értékekre, és ez a cserélgetés megy végtelen ideig. Viszont az aktuális adatokat gyakrabban akarom frissíteni (legyen mondjuk 15 másodperc), de ez nem jött össze.
A végleges megoldásban valószínűleg egyszerre lesznek kiíratva a min/max értékek, de érdekelne, hogyan lehetne megvalósítani a fenti problémát (pszeudokód is elég, vagy valamilyen linkelt példa, amiből ki tudok indulni).

(#1229) gyapo11 válasza zoli03 (#1228) üzenetére


gyapo11
őstag

Az elv az, hogy két változóban figyeled az időt, és amikor eléri a határt kiíratod amit kell.
ido1=millis()
ido2=millis()
loop
if(millis-ido1>15000)
{
{adatok beolvasása}
{egyik kiírás}
ido1=millis
}
if(millis-ido2>30000)
{
{adatok beolvasása}
{másik kiírás}
ido2=millis
}

Az egyiket 15 másodpercenként fogja kiírni, a másikat 30 másodpercenként.
Amikor a millis túlcsordul, akkor 50 napig nem fog kiírni semmit, szóval azt kezelni kell.

[ Szerkesztve ]

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1230) tvamos válasza dave0825 (#1227) üzenetére


tvamos
nagyúr

Forrasztoviz??? Mi vagy te? Badogos? Meselj egy kicsit a folyasztoszeredrol!

Linkelj mar egy fotot azokrol a forrasztasokrol!

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1231) dave0825 válasza tvamos (#1230) üzenetére


dave0825
őstag

CR-nek szoktuk itthon mondani, vagy forrasztóvíz (azt hittem, hogy ez a hivatalos neve, de utánanéztem, nem :) ), rozsdamaró, ilyeneknek, de inkább CR-nek. A doboza ilyen, gondolom ez is van benne, apám szokta venni, sose kérdeztem, hogy eredeti doboza-e. 10-12 éve tudok forrasztani (Weller pákám nincs, csak pisztoly, 75W-os), azóta használok/használunk itthon ilyet hozzá, lemarja a koszt, egy pötty, és nagyon szépen megfogja mindig, amit kell a forrasztás. Enélkül van, hogy 5x kell megforrasztanom valamit, mert elengedi, úgyhogy enélkül nem is szoktam próbálkozni a forrasztásokkal.
Szép kis pöttyök lettek, nem hatalmas ormótlan buckók, úgyhogy tudok forrasztani szépen pisztollyal is. :B Képet már nem tudok mutatni, mert mivel nem jutottam semmire, szétszedtem az egészet, mármint az Arduino részét, kipróbálom a Nano-val. Próbapanellal összedugdosva jól működik, szerintem a Pro mini-m adta meg magát. :F (Lehet, hogy ezért is produkálta mostanában a kékhalált a windows is, ha csatlakoztattam a géphez.)
Ha ráforrasztottam mindent a Nano-ra, arról küldök képet.

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1232) tvamos válasza dave0825 (#1231) üzenetére


tvamos
nagyúr

Es rajta van, hogy nyakforrasztashoz jo? Nem hiszem! Viszont, ha a nyakon marad megeszi a rezet, meg az ont is! Ne hasznalj ilyesmit! Nyak forrasztashoz valo folyasztoszert hasznalj, lehetoleg no-clean verziot. Nem egy kifizethetetlen osszeg.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1233) dave0825 válasza tvamos (#1232) üzenetére


dave0825
őstag

Nyákot ritkán forrasztottam/forrasztok, általában led-eket, ellenállásokat, vezetékeket szoktam, azokhoz mindig jó volt, sosem volt semmi baj, nagyon jól letisztítja, amit kell. A rajt maradással szokott gond lenni, hogy nagyon lassan szárad, van, hogy napokig rajt marad, ha nem törlöm le, ezért gondoltam, hogy valahol maradhatott és összezár valamit. De akkor szerzek rendes no-clean folyasztószert. Tudnál esetleg linkelni oldalt, vagy boltot mondani, ahol kapok nemdrágán ilyet? Neten rendelni nem olcsó. Esetleg kis-elektronikai boltban, vagy hol lehet ilyet venni?

Amúgy így néz ki most a Nano-n az összeállítás:

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1234) gyapo11 válasza dave0825 (#1233) üzenetére


gyapo11
őstag

Nem tudom mi lehet a CR, talán rozsdaoldó? Az meg foszforsav tartalmú, ami elég gyenge sav, a foszfátsók meg elég stabilak, nem nedvszívók. Szóval nem olyan rossz az, persze le kell törölni a fölösleget, mert vezeti az áramot. Nekem a hagyományos fenyőgyantán kívül van egy TS 570 forrasztózsírom, kb. 500 évre elég, ha nem csatornaforrasztásra használom.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1235) tvamos válasza gyapo11 (#1234) üzenetére


tvamos
nagyúr

Hat, ezzel a levezetessel egyaltalan nem ertek egyet, de mindegy is, mindenki azt hasznal amit akar.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1236) dave0825 válasza gyapo11 (#1234) üzenetére


dave0825
őstag

Nyákot ritkán szoktam forrasztani, inkább csak leforrasztani róla dolgokat, mint rá. Olyankor meg nem szokott probléma lenni ha rajt marad, vezetékek, ledek, meg ilyeneknél sem. Viszont ha most sűrűn nekiállok Arduino-zni, akkor lehet, hogy beszerzek valami rendes forrasztáshoz való cuccot, ez a Te TS570-ed sem drága, 50cm3 7-800 Ft. A képen látható mekkora kiszerelésű? (Úgy nézem nagyobb, ~3 billentyűnyi átmérőre. :DDD )

Azért össze ne vesszetek, örülök, hogy mindketten segítetek, még akkor is, ha különböző véleményen vagytok, majd kipróbálom mindkettőtökét, valamelyik csak beválik. :)

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1237) dave0825


dave0825
őstag

Egy kis segítséget kérnék a programhoz.

Van 2 saját függvény (azt hiszem, ez a neve a void valami()-nek), és azokat kéne futtatni úgy, hogy ha a Mode == 0-val, akkor a checkTime-ot, ha 1-gyel, akkor a checkTemperature-t. A Mode-ot eggyel növelem, amikor a távirányítón adott gombot nyomok meg.
Próbáltam if-ekkel is, de case-ekkel is, mindegyikkel ugyanaz az eredmény: amikor megnyomom a gombot először, akkor villan egyet az egész a checkTime alapján, ha másodszor, akkor semmi, újra, akkor megint az 1., következőre megint semmi, és így tovább (tehát a Mode működik jól, csak a kiíratás nem).

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1238) gyapo11 válasza dave0825 (#1236) üzenetére


gyapo11
őstag

100 g-os.
A fenyőgyanta és ez a forrasztózsír tuti mindkettő. Az 50 cm3 csak 250 évre lesz elég. :)
Nekem is van pisztolypákám, és szeretem is használni, az a trükkje, hogy ne legyen túl meleg. Az pedig nálam úgy megy, ha nem csak simán meghajlított drótot használok, hanem összesodrok a végén pár menetet. Így az összesodort rész nem fűt, csak a szabadon maradt drótrésztől kapja a meleget, így kevésbe lehet leégetni vele a fóliát meg az érzékenyebb alkatrészeket. Lassabban melegszik föl, nem kell annyit kattogtatni.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1239) gyapo11 válasza dave0825 (#1237) üzenetére


gyapo11
őstag

Nem látok hibát. Nem tudom hogy működik az infra vevő program. A delay(100) miatt kb. tizedmásodpercenként lefut a loop, és ha mindig igaz az (irrecv.decode(&results)), akkor gyors egymásutánban fogja léptetni a Mode változót, és felváltva fogja kiírni az értékeket.
Egy gombnyomás után meddig igaz a feltétel? Vagy ez maga a lekérdezés? Milyen gyakran küldi a távirányító a kódot? Lehet hogy lenyomod fél másodpercre, és már kiküldi 3-szor, az arduino meg lehet beolvassa mindháromszor.

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#1240) tvamos válasza dave0825 (#1236) üzenetére


tvamos
nagyúr

Nem veszunk ossze. Vegyel nyakhoz valo cuccot, amit a kollega javasolt, azzal sokkal jobban jarsz, mint a rozsdamaroval. Vagy rendelj egy ilyet: [link]. No-clean Flux, nem kell lemosni. En a regi fajtat le szoktam mosni, mert nem bizok semmi savas kemhatasu anyagban, ami a nyakra kerul. (Igazabol mindig lemosom flux cleanerrel, hogy szep legyen...)

(#1237) dave0825
Sajnos a linkjeid nalunk a proxi tiltja...

[ Szerkesztve ]

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#1241) softguner válasza dave0825 (#1237) üzenetére


softguner
csendes tag

Szia. Küldjél már egy .ino-t. Belenézek, hogy a SWITCH-es rész miért nem megy az infrával.

(#1242) softguner válasza zoli03 (#1228) üzenetére


softguner
csendes tag

Szia, nekem van kész kódom, arra hogy SPI adapterrel hogy lehet a 1602-es LCD-t működésre bírni. Igaz ebben nincs benne a DHT library használata, de ahhoz találsz leírást a blogomban.

[LCD]
[DHT]

Annyi van, hogy én DHT11-et használtam nem a 22-őt. Viszont azt csak át kell írni, hogy melyik tipust akarod használni.

(#1243) dave0825 válasza gyapo11 (#1238) üzenetére


dave0825
őstag

Ezt a csavaros megoldást lehet, hogy megpróbálom, köszi. Amúgy talán az a 250 év is elég lesz, lehet, hogy 273 évesen már nem nagyon fogok forrasztgatni. :) (Most nézem, hogy ha összeadom a leendő forrasztózsírom élettartamát a korommal, akkor az abszolút 0 fokot kapom :DDD )

(#1239) gyapo11, (#1240) tvamos és (#1241) softguner: azóta annyit sikerült elérnem hogy működik úgy, hogy az 1. esetben mutatja mindkét saját függvény tartalmát, a 2. esetben pedig csak a 2.-at. Tehát a 2. része működik jól, az 1. részét kéne úgy megcsinálnom, hogy ne mindkét esetet mutassa, hanem csak az 1.-t. Data.hu-ra föltettem az új programrészletet, itt mindenki meg tudja nézni, de itt a sketch is. Beleraktam az IRremote library-t is, ha valakinek kell.
A delay(100)-at kivettem belőle, az nem tudom, hogy került oda. :)
Csináltam gyorsan egy videót, hogy így működik, akkor vált, ha megnyomom a távirányítón a gombot. Tehát így jó, de amikor a sok led világít, akkor csak kb. felének kéne, amikor váltok, akkor a hőmérsékletet mutatja, az jó.

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1244) softguner válasza dave0825 (#1243) üzenetére


softguner
csendes tag

Mi lenne ha így csinálnád?

if (irrecv.decode(&results))
{
irrecv.resume();
}

switch (results.value)
{
case 0x7A6E10BA:
// lefut az utasítás sorozat amit akarsz lehet egy függvény is XY()
results.value=0;
break;

case "másik gomb"
// lefut az utasítás sorozat amit akarsz lehet egy függvény is XY()
results.value=0;
break;
}

Vagy ha csak 1 gombot akarsz használni módok változtatására, akkor ez okés, de a resuls.value változót, akkor is le kell nullázni, mert ha nem akkor folyamatosan változtatni fogja az üzemmódot, vagy teljesen fals lesz a megjelenített információ.

Méghozzá azért, mert ez a rész.

if(results.value == 0x7A6E10BA)
{
Mode++;
}

Ez mindig igaz lesz.

Nagyon jó cucc amit csinálsz, remélem sikerülni fog. Amikor a ledmátrixról beszéltél bevallom őszintén nem érdekelt annyira, de ez a megjelenítő ez nagyon ötletes, és baromi jó lesz ha sikerül :)

(#1245) softguner válasza softguner (#1244) üzenetére


softguner
csendes tag

Bocsesz, benéztem. Az a rész nem fut le mindig, mert az még az irrecv.resume();-on belül van. Így visznont nem értem, hogy miért van ez a rendellenes működés.

(#1246) zka67 válasza dave0825 (#1243) üzenetére


zka67
őstag

Szia, a 2. esetben, a case-s megoldásodnál kimaradtak a break; -ek :)

A switch utasítás csak elugrik a megfelelő case ágra, és onnan folytatja a program futását. Azaz, miután lefutott a case 1 ág, mivel nincs break, ezért a case 2 ágon folytatja a futást.

Az infrád ismétlését pedig a következőképpen tudod megszüntetni:

Amikor jön az adat, megnézed, hogy az előző adattal megegyezik-e? Ha nem, akkor új kód, feldolgozod, ha igen, megnézed, hogy mennyi idő telt el az előző adat óta. Ha több, mint 250ms, akkor új adatként feldolgozod, ha kevesebb, akkor figyelmen kívül hagyod.

Ezután az utolsó kódot elmented, és törlöd az eltelt időt.

[ Szerkesztve ]

(#1247) dave0825 válasza softguner (#1244) üzenetére


dave0825
őstag

Úgy akarom, hogy erre a gombra (7A6E10BA) egy úgynevezett Menü váltás legyen, tehát a Menü 1. pontjában az időt mutatja, a 2.-ban az időbeállítást (ilyenkor úgy tervezem, hogy 250ms-onként villan föl a pillanatnyi idő, ekkor meg a másik 2 gombbal tudom állítani az időt, mondjuk óra+, perc+, vagy csak a percet "+"-ba és "-"-ba, viszont ilyenkor sokáig kell nyomva tartani, mire az óra is változik, úgyhogy lehet, hogy marad az 1. verzió), a 3.-ban pedig a hőmérsékletet, 4., 5., meg még nem tudom lesz-e, vagy mi lesz. Viszont amit te írtál, abban is a case 1. esetében be lehet állítani, hogy növelje a Mode-ot minden lenyomásnál 1-gyel, és ha 1, akkor ez, ha 2, akkor az a programrészlet fusson le?

Jó, most olvastam tovább, amit írtál. :D Már nem törlöm ki, ha egyszer legépeltem ennyit. :DDD
Amúgy kösz szépen a segítséget is, meg a dicséretet is, nekem is tetszik/fog tetszeni. :B Ráadásul magyarul még nem láttam ilyet, úgyhogy az országban egyedül nekem lesz ilyenem. :D A következő, amire gondoltam, meg egy hasonló méretű tábla, tele betűhalmazzal, talán még több led-del is, mint ez, és normál digitális óra formátumban írná ki az időt, mint az ilyen 7 szegmenses kijelzők, de a vonalakat betűk alkotnák. :) De ez még a jövő zenéje.

(#1246) zka67: próbáltam úgy is, hogy beírtam a break;-eket, de úgy meg ha jól emlékszem, akkor más gond volt. Jó, ezt is törölhetem. :DDD Sikerült, a break;-ekkel zsír. :D Kösz szépen, a segítséget! Pedig tegnap tényleg próbáltam, csak lehet, hogy akkor meg még máshol volt valami gond. Annyi van most, ami nem tetszik, hogy ha megnyomom a gombot, akkor átvált, viszont előtte (ugye a 2 zöld sor világít, meg a többi kéken, amik az időt mutatják) erősebben fölvillannak a zöld led-ek.
A másik megoldást, amit írtál, valószínűleg holnap megcsinálom (így elsőre nem is tűnik bonyolultnak), de most már nincs agyam hozzá. :N Muszáj lesz beletennem, mert így a delay(40); nem igazán elegáns, meg így is van, hogy 2 gombnyomást érzékel, és nem csinál semmit, csak villan egyet (a delay miatt ugye).

Amúgy más része a programnak: a fényerőállítást úgy oldottam meg, hogy a fotoellenállás ugye 0-1023-ig ad vissza értéket, és map-pel belőttem a pause változót 10-900-ig, ami a led-mátrix frissítéséért felel, így mivel kis értéknél sűrűbben frissít, kisebb a fényereje, amikor nagyobb az értéke, akkor erősebb (900 fölött már kicsit látni, hogy villog, így azért mentem csak addig, de még ez is határeset).

[ Szerkesztve ]

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1248) dave0825 válasza zka67 (#1246) üzenetére


dave0825
őstag

Kicsit próbálgattam a 2. megoldásod, a gombnyomás ismétlésének megszüntetését, viszont nem igazán sikerült. Össze tudnál dobni egy ilyen programrészletet nekem, ha megkérlek? Ha csak kiindulási alapként is...

Huawei P30 // Suzuki DL650XT '15 <-- Kawasaki Z750 '07 <-- Aprilia RS 125 '99

(#1249) zka67 válasza dave0825 (#1248) üzenetére


zka67
őstag

Szia, szerintem ennek működnie kell:

Természetesen a gombok kódjait írd át :)

#define VK1 0x12345678
#define VK2 0x87654321
#define REPEAT_TIME 250

void IRHandler(void) {
static unsigned long pmillis;
static decode_results results, presults = 0;

if (irrecv.decode(&results)) {
irrecv.resume();

if (results == presults) {
if ((millis()-pmillis) < REPEAT_TIME) {
pmillis = millis();
return;
}

pmillis = millis();
presults = results;

switch (results) {

case VK1:
// Key 1 lenyomasakor
break;

case VK2:
// Key 2 lenyomasakor
break;

}
}
}

[ Szerkesztve ]

(#1250) softguner válasza zka67 (#1246) üzenetére


softguner
csendes tag

Erre mondják a bölcs emberek, hogy több szem többet lát. Nekem fel sem tűnt tegnap fél 11 magasságában, hogy hiányzik a break;. Zseniális ez a csapatmunka :D

Copyright © 2000-2024 PROHARDVER Informatikai Kft.