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

(#1151) gyapo11 válasza dave0825 (#1149) üzenetére


gyapo11
őstag

Ez arra emlékeztet, amikor az egyik töltővel használhatatlan a telefon, mert összevissza érintéseket érzékel, a másikkal meg tökéletesen használható.

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

(#1153) Danex válasza dave0825 (#1149) üzenetére


Danex
addikt

Én is ugye nem rég szívtam az IR vevővel, hogy túl sok zaj volt az áramkörben és véletlen értékeket dobált. (servo mozgásakor, digitális LED vezérlésekor stb).

Végül úgy oldottam meg, hogy elszeparáltam ,hogy ne az arduinoról kapja az 5V-ot így már jó volt.

Bár írtad, hogy nem a szokványos érzékelőd van, így lehet ott nem megoldás.

(#1154) Kuruzsló


Kuruzsló
csendes tag

Sziasztok!

Most ismerkedem az Arduino témával. Végigolvastam a fórumot, de sajnos nem találtam frekvenciagenerátoros témát.
Szeretnék összerakni egy olyan DDS generátort ami egy memória kártyáról olvasná be a az adatokat.
Úgy gondoltam , hogy egy csv formátumban tárolnám az adatokat (program név, hullámforma, idő másodpercben , frekvenciák egymás után) valahogy így:
Program001; Négyszög, 100sec, 100Hz, 200Hz, 300Hz...
Program002; Szinusz, 50sec, 1000Hz, 2000Hz, 3000Hz...
Program003; Négyszög, 200sec, 10000Hz, 20000Hz, 30000Hz...stb.

Gombokkal lépkedve kiválasztanám a szükséges programot, elindítanám, majd mikor végigért a programsorban az összes frekvencián akkor leáll. Nagyjából ennyi lenne a feladat.
Találtam több Arduinóval vezérelt DDS bemutatót, viszont mindegyikben potméterrel vagy gombokkal állítják be a frekvenciákat ami nekem nem jó. Mindenképpen a kártyáról kéne olvastatnom az adatokat.

Megrendeltem hozzá az alábbi cuccokat az ebay-ról:
-Starter kit:
[link]

-AD9850 DDS:
[link]

-SD kártya foglalat:
[link]

Nem tudom, hogy ezek elegendőek hozzá vagy szükséges még beszereznem valamit?

Köszönöm előre is a segítségeteket!

(#1155) peter1998


peter1998
tag

Valaki kezelte már java fejlesztői környezetből az arduino-t.Ha igen akkor tudna leírást küldeni?Én Eclipse IDE-t használok.

(#1156) softguner válasza #96292352 (#1152) üzenetére


softguner
csendes tag

Szerintem, ez a kód így eleve nehézkes. Van egy DHT library az arduino.cc-n. Ott létrehozol két objektumot és definiálod azokat két különböző néven.

Library link

Ebben van egy példaprogram. Ez a kódja.

#include "DHT.h"

#define DHTPIN 2 // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
}

Itt Definiálod a változókat a beolvasott lábakat. Stb stb.

Pl:

#define DHTPIN 2
#define DHTPINSEC 3

DHT dht(DHTPIN, DHTTYPE);
DHT dhtsec(DHTPINSEC, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
dhtsec.begin();
}

És a többi és a többi. Én ezt csinálnám.

(#1157) junhum


junhum
tag

Sziasztok!

Olyat szeretnék, hogy a Nano-ról loggolnám az adatokat és azt valami online megjelenítőre (thingspeak).

Nem találtam erre tutoriált. Csak olyan van hogy ethernet shieldel.
Lehetetlent akarok?

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#1158) softguner válasza junhum (#1157) üzenetére


softguner
csendes tag

Szia

Erre van megoldás, írsz egy programot, a PC-dre ami a COM portos információkat felnyomja a netre. Válassz egy nyelvet, pl Visual Studio, olvasd át a reference-ben, hogy hogy kell a COMXY portról beolvasni az információkat, ha ez megvan, akkor tedd ugyanezt a TCP protokollos résszel is. A HTTP POST és GET request az ugyan az mint ha egy arduino ethernet modullal küldenéd.

Vagy B verzió, ha nincs tapasztalatod valamelyik objektumorientált nyelven, akkor nagyjából 1300 Ft-nyi befektetéssel elkerülhetsz 40 óra munkát. Szerintem ez a B verzió a legkifizetődőbb.

Erre itt van egy kiváló leírás! Ezzel talán csak 10 óra munka, bár nem ismerem a programozói tudásod.

[link]

[ Szerkesztve ]

(#1159) junhum válasza softguner (#1158) üzenetére


junhum
tag

Programozói tudásom nincs sajnos!
Azt hittem hogy erre is van már kész példa ,csak be kell helyettesíteni az adatokat!
Köszönöm a 2 variációt!
A 2. tényleg egyszerűbbnek néz ki.

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#1160) gyapo11 válasza junhum (#1159) üzenetére


gyapo11
őstag

Nekem a php jutott eszembe, saját weboldalon megjelenítés. Az arduinotól le kell kérdezni az adatokat bármilyen programmal, és letenni file-ba. Lehet egy file-t appendelgetni vagy időnként új file-t kezdeni, szabadon választható. Aztán ezt a file-t fölnyomi a serverre wputtal pl., ott pedig a php időnként ránéz, hogy van-e változás, és ha igen, akkor frissíti a weboldalt. Php-ből közvetlenül nem egyszerű grafikont rajzolni, de persze vannak letölthető cuccok erre is (pl. itt), vagy böngészőben javascripttel lehet, viszont pl. csíkot húzni teljesen egyszerű, számmal kiírni meg még egyszerűbb, attól függ kinek milyen igénye van a látványra.

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

(#1161) softguner válasza gyapo11 (#1160) üzenetére


softguner
csendes tag

Ez is egy jó megoldás, de ha már beolvastuk a COMXY információkat azokat ugyanúgy át kell adni és ha már ezzel is probléma van, akkor a jQuery-vel csak még több problémája lenne. A thingspeak ezt megoldja, szóval ebből a szempontból az a legkényelmesebb, mert az legalább egy kész FrontEnd. Egyébként meg az ethernet shield jól használható, az ethercard library támogatja a SSH-t és a HTTPS-t is, ezért ha saját weboldalt akarunk csinálni, akkor csak egy fix IP kell, amin elérhetjük a modult, és akkor valóban mehet a saját megjelenítés is, mert az SD kártyán elég sokminden elfér. Mert ugye gondolom a cél az, hogy ne csak otthonról lássuk a begyűjtött adatokat.

(#1162) gyapo11 válasza softguner (#1161) üzenetére


gyapo11
őstag

Biztos a weben megjelenítés a cél. Kinek mi a bonyolult, nekem a thingspeak még ismeretlen, emlékszem a google térkép megjelenítése saját markerekkel sem volt olyan egyszerű, szóval ezek az API-os cuccok mindig egy másik ember gondolkodásába illeszkedést követelnek. A jquery sem túl egyszerű, a linkelt php scriptgyűjteményt se használtam még, de ránézésre az egyszerűbb grafikonok áttekinthető kóddal állíthatók elő. És az arduinobol is egyszerűbb soros porton kiolvasni bármit, mint etherneten. Kinek a pap, kinek a papné.

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

(#1163) gyapo11 válasza softguner (#1161) üzenetére


gyapo11
őstag

Talán az lenne a legegyszerűbb, hogy ethernet az arduinora és a routerben átirányítani mondjuk egy 8080-as portot oda, a routert meg regelni a noip.com-on vagy hasonlón, és kintről máris le lehet kérdezni közvetlenül az arduinotól hogy mi van. Ha sokan megtámadják gondolom hamar lehal, de ennek elég kicsi az esélye.

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

(#1164) junhum válasza gyapo11 (#1162) üzenetére


junhum
tag

Igen webes megjelenítés a cél. Egy ketyere 2 18ds20 és egy dht22 szenzorral mérné a hőfokot egy sárgabarackosban virágzás idején, hogy tudjuk mikor kell menni fagytalanítani. A másik az 6 ketyere 1-2 18ds20 és 1 dht22 ez szárítókban lenne, hogy tudjuk mikor szárad meg a paprika :)

Ethernetes arduino néz ki a legegyszerűbbnek de van 8 nanom :)
Most belebotlottam a nodemcuba a szárítóknál kényelmesebb lenne wifin de ott meg a 6 lehet zavarná egymást.

Most megy a vakarózás :)
A szárítók szeptemberben indulnak,az lenne sűrgős, de lehet a barackossal kezdek majd.

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#1165) softguner válasza junhum (#1164) üzenetére


softguner
csendes tag

Milyen csatornán történik az átvitel? Lesz egy master arduino, meg több slave, ami a szenzor adatokat gyűjti?
RF átvitel lesz vagy kábelen történik? Ezt azért kérdezem, mert ha nagy a távolság akkor nem nagyon tudsz kábelezni. Az NRF24L01 elég stabil átvitelt biztosít, és nagyon könnyen kezelhető a MIRF library-vel.

Ha csak egy sima ENC28J60-al építed meg ezt az "állomást" akkor a szenzorok adatainak az átviteléhez már írtam egy jó példát a blogombra. Igaz itt egy led vezérlése van (ami lehet relé) és a DHT22 helyett DHT11, de a DHT lib ugyan az.

[link]

És ahogy gyapo11 kolléga írta: a noip-vel összekötve ezt bárhonnan elérheted. Ha esetleg elakadsz, akkor szólj és szívesen segítek, máramennyire persze az időm engedi.

[ Szerkesztve ]

(#1166) softguner válasza gyapo11 (#1162) üzenetére


softguner
csendes tag

Van egy statikus oldalam, amit anno hirtelen felindulásból csináltam 1 hét alatt és utána elment tőle a kedvem. Ott pl a google KML-t használom a geo adatok megjelenítésére. Az szerintem abszolút nem bonyolult, az is csak egy sima XML leíró.

Sajnos amilyen hirtelen volt a felindulás, annyira gyorsan abba is hagytam az oldal további szerkesztését, de azért itt egy link a KML-ről hátha érdekel.

[link]

(#1167) tvamos válasza junhum (#1164) üzenetére


tvamos
nagyúr

En biztos, hogy Raspberry Pi-t használnék, ha ilyen feladatom lenne. Egyszerű passzintani hozzá wifi modult is. Az Ethernet meg ugye adott.

[ Szerkesztve ]

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

(#1168) gyapo11 válasza softguner (#1165) üzenetére


gyapo11
őstag

Megfontolnám az rs485-öt. Ha a szenzorokat akarja hosszú kábellel csatlakoztatni, az nem lesz túl jó, ki kell vinni egy arduinot a szenzorhoz közel. Onnan viszont elég messze lesz az adatgyűjtő központ, gondolom egy pc. Lehet tesztelni wifit, BT-t, de 50 m után már nem sokat várnék tőlük. 433 MHz sem fog spéci antenna nélkül messzebbre vinni, zavar is bejöhet ilyen alacsont frekin. Ha meg vezeték, akkor ethernet drágább is, rövidebb távra is húzható. Rs485 1000 m, 32 db készülék, igénytelen drót, csak le kell zárni rendesen a buszt.
Pc-be meg be lehet dugni az usb-rs485 illesztőt, aztán már bármi olvassa az adatokat a virtuális soros portról.
Ha meg nem pc, hanem arduino a központ, akkor ethernet, be a routerbe, és ahogy korábban írtam átirányítás, már lehet is olvasni az egész világból az adatokat.

[ 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

(#1169) junhum válasza gyapo11 (#1168) üzenetére


junhum
tag

Mind a 2 helyen mehet egyből routerbe.
A gyümölcsösbe utpre gondoltam 70-80m kábel kell.
A szárítóknál wifi a darabszám miatt. 6db 433Mhz már lehet zavarná egymást, plusz kell akkor egy központi ardu is. Wifi kb 40m sugárba beleférne a adó.

Ennek az Rs485nek utána olvasok, de mivel egyből mehet netre nem kell pc.
Gondolom én :)

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#1170) junhum válasza tvamos (#1167) üzenetére


junhum
tag

Úton van 1. De elsőre az drágábbnak tűnik ezekre, persze számolgatok minden költséget mindenhol.

Your Workout Is My Warm-Up so Shut The Fuck Up And Train

(#1171) gyapo11 válasza junhum (#1169) üzenetére


gyapo11
őstag

Az rs485 egy soros port, csak a polaritásváltás és a lezárás miatti nagyobb áram miatt óriási a hibatűrése, kb. hegeszteni lehet mellette, és bármilyen madzagon elmegy. Persze a csavart érpár a szabályos, és ne legyen ultravékony ha nagyobb a távolság.
80 m-re jó lesz az utp, nem tudom mennyire lesz időjárásálló, meg hogy mennyire fogod védeni naptól-víztől.

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

(#1172) softguner válasza junhum (#1169) üzenetére


softguner
csendes tag

Személy szerint én akkor is 300 forintos nordic NRF24L01 modult ajánlom az átvitelre. 125 csatornás és 2MB/s átviteli sebességre képes. A hozzá tartozó MIRF library elkülöníti a csatornákat a vevő oldalon és az adó oldalon. És nincs adatvesztés, mert hiba esetén autómatikus újraküldést alkalmaz ez a kis Nordic chip. Egyetlen egy hátránya van, a hullámterjedési sajátosság.

Jah és a kész kódhoz nagyon gondolkodni sem kell. A következő oldalon lehet látni hogy elég jól kezeli a csatornák szétválasztását.
[link]

(#1173) tvamos válasza junhum (#1170) üzenetére


tvamos
nagyúr

Egy model a nem sokkal drágább, mint egy arduino + ethernet shield.

(#1171) gyapo11 válasza junhum (#1169) üzenetére
Polaritásváltás helyett mondjuk, hogy differenciális, szerintem. Regebben sokat hasznaltam.

[ Szerkesztve ]

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

(#1174) DrojDtroll válasza softguner (#1172) üzenetére


DrojDtroll
addikt

Nem jó a link.

(#1175) softguner válasza DrojDtroll (#1174) üzenetére


softguner
csendes tag

Ezer bocsánat a hibás link miatt!!

[link]

Ez már jó!!

[ Szerkesztve ]

(#1176) dave0825


dave0825
őstag

Ennek a DS3231-nek mindegy, hogy melyik VCC-GND-SCL-SDA lábait kötöm az Arduino-ra? Csak mert van mindkét oldalán, az egyiken ráforrasztott pöckök is, azt kényelmesebb lenne használnom, ha azt is lehet. :B

Bocs, hülye vagyok, fél perc alatt rákerestem Google-ben. :DDD

[ Szerkesztve ]

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

(#1177) dave0825


dave0825
őstag

Nagyobb probléma hogy ezt írja ki az Arduino a program feltöltésekor:
avrdude: stk500_getsync(): not in sync: resp=0xc0

Utánanéztem, és olvastam, hogy ha a 0-ás pin-re kötök valamit, akkor is kiírhatja, és nekem oda van kötve a mátrix 1. sora. Átforrasszam máshova? :F Próbáltam többször is feltölteni, mindig ezt írja, meg hogy Feltöltés kész, viszont ez nem igaz, mert soros porton nem írja a DS3231-ről beolvasott időt.

Hülye, talán RX-TX, TX-RX-et kéne kötnöm... :W Ma nem vagyok formában. :DDD

[ Szerkesztve ]

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

(#1178) dave0825


dave0825
őstag

Tudnátok vetni egy pillantást erre a programra? Ez lenne az alapja a mátrixomnak, viszont valahogy nem azok a led-ek világítanak, amiknek kéne, pedig mindent átnéztem a kapcsolásban, hogy jó helyre forrasztottam-e a dolgokat, és semmi hibát nem találtam. Valahogy ha az 1. sor utolsó elemét akarnám bekapcsolni, akkor a 2. sor utolsó eleme világít. Ha meg pl. az 1. sor 3. elemét, akkor világít a 2. sor 3. eleme, meg a 6. sor 3. eleme. Még írhatok párat, hátha találtok valami összefüggést, én nem találtam. :F Nem lehet, hogy a bináris számoknál lesz valami gáz? Korábban már linkeltem, hogy ez alapján csinálom majd meg a 6x5-ös mátrixot, kibővítettem a programot 6x5-ösre, meg átírtam amit kellett, de valami nem jó. :O

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

(#1179) zka67 válasza dave0825 (#1178) üzenetére


zka67
őstag

Szia, mint említettem, a tranzisztorok invertálnak, lehet, hogy ez lesz a gond nálad. Melyik típust kötötted a row kimenetekre és melyiket a col kimenetekre?

A programodban egy hibát találtam, a col tömböd csak 5 elem hosszú, te viszont sok helyen hivatkozol a 6. elemére is.

(#1180) dave0825 válasza zka67 (#1179) üzenetére


dave0825
őstag

Köszi, amúgy közben meglett a hiba, amit Te is írtál, hogy 5 elemű a col tömb, de azért írtam annyit, mert 5 oszlop van csak a mátrixban. Viszont beírtam egy 6.-at, és hogy 6 elemű (alatta van egy olyan sor is, hogy "int columns = 5) ), így működik tök jól, világít minden, ahogy kell. Annyi hiba még előkerült, hogy valószínűleg (még nem néztem meg, majd holnap) összecseréltem a 0. és az 1. pin-t, mert pont fordítva megy az a 2 sor, mint ahogy kéne.
Amúgy most átírtam a programot 2 helyen, hogy 6. elemet ne állítson kimenetre, a másik helyen meg hogy ne kapcsolja HIGH-ra.

Úgy kötöttem mindent, ahogy megbeszéltük: az NPN-ek mentek a sorokra, a PNP-k az oszlopokra.

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

(#1181) zka67 válasza dave0825 (#1180) üzenetére


zka67
őstag

Ennek örülök :)

Végülis milyen ellenállások lettek a ledekkel sorbakötve?

(#1182) #96292352


#96292352
törölt tag

Sziasztok!
Annyi kérdésem lenne, még (a korábban említett szenzoros kérdésem egyenlőre félretéve), hogy tudok nyomógombokkal változtatni egy értéket?
Tehát ha a felfele gombot megnyomom 2x, akkor az érték legyen kettő, ha lefele gombot nyomom meg 3x, amikor az érték 2, akkor az érték legyen -1. stb...

Köszi előre is! :DD

viktor

(#1183) softguner válasza #96292352 (#1182) üzenetére


softguner
csendes tag

Ezen a szinten ennek azért már kisujjból kellene mennie.

int buttonpin = 13;
int buttonpin1 = 12;
int value =0;
int value2 =0;
int adat=0;

void setup ()
{
pinMode(buttonpin, INPUT);
pinMode(buttonpin1, INPUT);
Serial.begin (9600);
}

void loop ()
{
value = digitalRead (buttonpin);
if (value == 1)
{
adat=adat+1;
}
else
{
value2 = digitalRead (buttonpin1);
if (value2 == 1)
{
adat=adat-1;
}
Serial.println (adat);
}
}

Nézd át mert fejből írtam.

[ Szerkesztve ]

(#1184) gyapo11 válasza softguner (#1183) üzenetére


gyapo11
őstag

Kell bele prellmentesítés és várakozás felengedésre, mert ha lenyomja pl. a fölfelé gombot fél másodpercre, akkor mivel a loop kb. 100 ezerszer fog lefutni másodpercenként, és minden ciklusban növelni fogja az adat értékét, az egy gombnyomásra kb. 50 ezer lesz. :)
Látom bejött a Serial.println, ez lassítani fogja a pörgést, de akkor meg kell oldani, hogy egy nyomásra csak egyet lépjen föl is meg le is.

[ 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

(#1185) dave0825 válasza zka67 (#1181) üzenetére


dave0825
őstag

33 ohmosak lettek, 35 körülit akartam, ahhoz legközelebbi 36-os volt, az meg nem volt a boltban, úgyhogy maradt a 33. :) Próbaképpen rátettem azokat, amik majd előtte lesznek ha kész lesz, és este elég nagy fényereje volt, de azt úgyis lejjebb veszem majd, csak nappal kell erősebb, ahhoz meg szerintem pont jó lesz.

Most egy kis kínlódás van az óra értékeivel kapcsolatban, mert ugye úgy gondoltam, hogy majd megcsinálom, hogy mondjuk if (minute == 23), akkor a mátrixban a megadott elemek világítsanak, viszont itt előjött egy hiba (egyelőre másodperccel teszteltem, nem akarok perceket várni :) ), mégpedig az, hogy ha mondjuk 23. másodperc van, akkor ugyanazok az elemek is világítanak, amik a 2., illetve a 3. másodperckor. Próbáltam " jelek közé tenni az értéket, '-vel is, == helyett =-vel, de sehogy nem jó. Szerinted/szerintetek hogy lehetne ezt kiküszöbölni?

(#1184) gyapo11: ez a dolog engem is érdekel, kíváncsian várom, hogy mi lesz a folytatás, beszélgessetek csak. :) Én késleltetéssel csináltam meg párszor, de az nem túl elegáns gondolom. Találtam már Arduino oldalán megoldást, de az nekem bonyolult volt kicsit. :B
"a Serial.println, ez lassítani fogja a pörgést"
Ezt úgy kell érteni, hogy ha nem íratok ki semmit a soros portra, akkor gyorsabban fut a program? Ezt nem tudtam. Akkor lehet, hogy én is kiveszem a Serial.print/println parancsokat az órás programomból, úgysem fontos, max csak most programozáskor jó tudni, hogy mennyinél tart az óra, de használat közben a falon már nem sok szerepe van.

[ Szerkesztve ]

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

(#1186) #96292352 válasza softguner (#1183) üzenetére


#96292352
törölt tag

Köszönöm!!! :R
Este tesztelem, logikusnak tűnik! :B

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


gyapo11
őstag

Ha a soros portra ír valamit, az időbe kerül, emiatt a loop lefutási ideje nő, vagyis másodpercenként kevesebbszer fog lefutni. A 100 ezer az egy mérés volt, persze az utasítások számától és végrehajtási idejétől függően ez mindig változik.
A delay nem iparos, tesztelni-próbálgatni jó, de végleges programban nem ajánlott használni. Helyette változókat kell használni állapotjelzésre, és ezek értékétől függően elágaztatni a programot.
Nyomógombnál kell egy 30 ms-os várakozás, ezalatt lezajlik a prell, utána elvégezni a feladatot, itt pl. növelni egy változó értékét, és addig várni amíg föl nem engedik a gombot. A várni az nem delay, hanem egy if.
Ilyesmi:
if(gombjelzo==1 && gomb lenyomva)
{;}
else if(gombjelzo==1 && gomb fölengedve)
{
gombjelzo=0;
}
A gombjelzőbe akkor kell 1-et tenni, amikor a gombot lenyomták. Amíg gombjelző 1 és a gomb le van nyomva, addig az else ág nem hajtódik végre. Viszont ha a gombot fölengedték, akkor az if feltétele nem igaz, az else ág végrehajtódik, beírja a gombjelzőbe a 0-t, és innentől az if ág és az else ág sem hajtódik végre többet a gombjelző miatt, mivel abban 0 van. Ugyanez a logika a lenyomáskor is:
if(gombjelzo==0 && gomb fölengedve)
{;}
else if(gombjelzo==0 && gomb lenyomva)
{
gombjelzo=1;
}

[ 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

(#1188) #96292352 válasza gyapo11 (#1184) üzenetére


#96292352
törölt tag

Ebben tudsz segíteni?
szerk:
Oké az előző írásod megoldás lehet... :P

[ Szerkesztve ]

(#1189) softguner válasza gyapo11 (#1187) üzenetére


softguner
csendes tag

Teljesen jogos, erre épp nem is gondoltam. Az én kódomban valóban addig adja hozzá folyamatosan az adat változóhoz az 1-eket, amíg az lenyomva van.

Viszont, szétnéztem, hogy van-e ilyen kód az Arduino honlapján, és van.

[link]

(#1190) #96292352 válasza softguner (#1189) üzenetére


#96292352
törölt tag

óóó :) ennyi. Google... :D Köszi!

(#1191) softguner válasza #96292352 (#1190) üzenetére


softguner
csendes tag

Ezek alapján, kijavítottam neked a fenti kódomat. Elviekben működik, bár tesztelni ezt sem tudtam, mert nincs nálam semmi. Az első kódnál is kiderült volna, hogy balfax voltam, de sajnos nincs nálam eszköz.

int buttonpin = 13;
int buttonpin1 = 12;
int value =0;
int value2 =0;
int adat=0;
int b1state = 0;
int b2state = 0;

void setup ()
{
pinMode(buttonpin, INPUT);
pinMode(buttonpin1, INPUT);
Serial.begin (9600);
}

void loop ()
{
value = digitalRead (buttonpin);
if (value != b1state)
{
if (value == 1)
{
adat++;
Serial.println(adat);
}
}
b1state = value;

value2 = digitalRead (buttonpin1);
if (value2 != b2state)
{
if (value2 == 1)
{
adat--;
Serial.println(adat);
}
}
b2state = value2;
}

(#1192) #96292352 válasza softguner (#1191) üzenetére


#96292352
törölt tag

Az a baj h nincs most nálam se panel, mert munkában vagyok... viszont arduino szoftver az van, lefutattam rajta a kódod, és hibát nem talált, vagyis még jó is lehet. :)

Köszönöm a help-et és a kódot is!

(#1193) tibi-d válasza #96292352 (#1192) üzenetére


tibi-d
tag

Egy másik megoldás, ha a gomb nyomva tartására pl. másodpercenként, vagy gyorsabban ad hozzá, vagy von le belőle. Az örökös nyomogatásba egy idő után belefárad az ember ujja. Főleg, ha 100X kell megnyomni.

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


gyapo11
őstag

Nekem még hiányzik a kódból a prellmentesítés. Ha lenyomáskor 20-szor vált állapotot, akkor lehet hogy 10-zel fog nőni a számláló, ha minden L-H váltást el tud kapni. A soros kiíratás itt is lassít, de az élesben gondolom nem lesz ott.

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

(#1195) #96292352 válasza tibi-d (#1193) üzenetére


#96292352
törölt tag

A "Nyomkodási intervallum" az kb 6-7 nyomkodás lesz, azt azért ki lehet bírni... :)
Köszi azért!

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


dave0825
őstag

Köszi, ezt majd átrágom, fölfogom, kipróbálom, meg egyebek, mert majd távirányítóval szeretném állítani az órát, meg Mode-ot váltani vele (pl. hogy időállítás/hőmérséklet kijelzés/meg még valamit majd kitalálok :D ), meg ilyenek, szóval ahhoz majd kell a gombnyomáshoz, hogy ne 50-nek vegye, ha egyszer hosszabban megnyomom. :)

A másik problémámra nem tudsz valami megoldást? Följebb írtam, hogy próbáltam többféleképpen is, hogy if (minutes == 14), akkor ne világítsanak azok a led-ek is, amik ugyanígy az 1-re, illetve a 4-re vannak beállítva, de nem sikerült sehogy eddig.

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

(#1197) dev200


dev200
csendes tag

Sziasztok!

Arduinóval szeretném megoldani, hogy erdő egyik pontjáról a másikra adatokat tudjak küldeni. 433MHz-es adóvevőt néztem ki hozzá. A kérdés, hogy valaki csinált-e már ilyet? Milyen teljesítményő antenna kéne a dologhoz? kb 10km-t kéne áthidalni. A projekt egy tájfutó rádiós egység lenne.

Válaszokat előre is köszönöm!

(#1198) #96292352 válasza softguner (#1191) üzenetére


#96292352
törölt tag

Tesztelve!
Tökéletesen azt csinálja amit szerettem volna! :)
Csak: észleltem hibákat a kódomban, a hiba a dht-m kiolvasásakor jelentkezik: nagyon lassu tőle az érték változtatás. Próbáltam másképpen a dht adatait kiolvasni, sikerült is, akkor gyosan csinálta, csak nem tudtam felhasználni az adatait, valószínűleg láma voltam és azért... Majd még próbálkozok, de majd csak hétfő-n vagy kedden. Addig fesztiválozás :DDD

Köszi még 1x!

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


zka67
őstag

Szia, belinkelhetnéd a programodat.

Csak megkérdezem, hogy ti megszakításokat nem szoktatok használni? Én úgy csinálnám meg a helyedbe, hogy valamelyik timer megszakítással időzíteném a ledeket, A megszakításkor azonnal indítanék egy másik timert, ami a fényerőt fogja szabályozni, azaz annak a megszakításakor egyszerűen csak kikapcsolnám az összes ledet. Ha megszakításokkal dolgozol, akkor tulajdonképpen a programod azt csinálhat közben, amit akarsz, nem kell az időzítésekkel foglalkozni, mert azt a timer-ek elintézik.

Jelen esetben elég neked egy 500Hz-es megszakítás, azzal már 100Hz-es frissítésed lesz. A másik timer-rel pedig 2ms-nál rövidebb időt állítsd be (amit természetesen majd változtathatsz), és kész a fényerőszabályzásod is.

Ha gondolod, szívesen elküldöm neked az órám programját, igaz az nem arduinora készült, hanem egy arm uC-re, de ez a lényegen nem változtat, az elvet szerintem megérted belőle. (Sima C program...)

(#1200) softguner válasza dev200 (#1197) üzenetére


softguner
csendes tag

Szia

Szerintem ez a dolog esélytelen, mert max 3-400 méter a hatótávolság ha felhúzod az adóteljesítményt 12V-on. De inkább csak 100m.

Itt egy teszt róla: [link]

Az NRF24l01 kb 1 km-t áthúz, ha van szabad rálátás az adó és a vevő között.

Leírás itt: [link]

[ Szerkesztve ]

Copyright © 2000-2024 PROHARDVER Informatikai Kft.