Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   224 / 853
(#) eadx válasza kapu48 hozzászólására (») Máj 5, 2016 /
 
Köszi ezt megértettem, hogy jön ki egy számolásból, de nekem nem számolni kell,hanem ha lenyomom a gombot csinálja végig a switch-case részt és térjen vissz a "gombvárásra". Erre találtam ki egy ilyen egyszerű sort.
  1. void loop()
  2.  
  3. {
  4. if (digitalRead(startgomb) != LOW)
  5. {
  6.   state= oda1;    / itt csak utasítás lehet vagy értékadás is???
  7. {
  8.  
  9.  switch (state)
  10.   {
  11.     case oda1:
  12.       if (digitalRead(LM1) == LOW)
  13.       {
  14.         m1_vissza();
  15.         state = vissza1;
  16.       }
  17.       break;
  18.      
  19.     case vissza1:
  20.       if (digitalRead(LM2) == LOW) {
  21.         m1_stop();
  22.         m2_oda();
  23.         state = oda2;
  24.  
  25. .
  26. .
  27. .
(#) kapu48 válasza eadx hozzászólására (») Máj 5, 2016 /
 
Hogy te milyen rövidlátó tudsz lennie!

Nem a számolás a lényeg! Hanem a feltétel vizsgálat és annak következménye.

Az tök mindegy. hogy a feltétel eredménye honnan jön! (meglátod, megérzed, meghalód, megnyomod, kiszámolod …?)


Három dolgot akartál:
1. a feltételtől függően végrehajtódjon a függvényed?
2. A végén ugorjon vissza az elejére?
3. feltétel szerint ugorjonki
A while ezeket mind tudja
A hozzászólás módosítva: Máj 5, 2016
(#) halasizs válasza vargaf hozzászólására (») Máj 5, 2016 /
 
A felcserélt RX, TX vezetékek.
(#) Medve válasza halasizs hozzászólására (») Máj 5, 2016 /
 
Pedig teljesen logikus: RX-et az RX-hez, TX-et a TX-hez! (irónia)
A hozzászólás módosítva: Máj 5, 2016
(#) GPeti1977 válasza Medve hozzászólására (») Máj 5, 2016 / 1
 
Pont hogy nem.
(#) eadx válasza kapu48 hozzászólására (») Máj 5, 2016 /
 
Kipróbáltam a while és az if variációt egyik sem jött be. Teleírom println-el és megnézem mit csinál meg és meddig.
Minden segítség jól jön, de ha lehet legközelebb ne egy olyan példát hozz fel ami csak hasonlít, mert mint mondtad rövídlátó vagyok néha. yes
(#) szitko válasza eadx hozzászólására (») Máj 5, 2016 /
 
Sokkal egyszerűbb lenne, ha fognál egy papírlapot és tőmondatokban leírnád, hogy mit is szeretnél csinálni, mit csináljon a program. Ha sikerült leírnod, akkor sokkal egyszerűbb a programozás!
Az utolsó berakott programrészleted:
1: ha beolvasott érték nem nulla, akkor változó értékadása.
2: elágazás: kifejezés (változó)
2/1 konstans 1: további utasítások
2/2 konstans 2: további utasítások
3: vissza az elejére.
kb. ennyi.
(#) icserny válasza Medve hozzászólására (») Máj 5, 2016 /
 
Nevetni fogsz, de van olyan feliratozású USB-soros átalakító modul, amit így kell bekötni!
(#) eadx válasza szitko hozzászólására (») Máj 5, 2016 /
 
Megoldódott a probléma.
Emígyen, törekedve az egyszerűségre.
  1. void loop()
  2. {
  3.    switch (state)
  4.    {
  5.  
  6.  case start:
  7.    startgomb = digitalRead(LM5);
  8.   if (startgomb == LOW) {
  9.     m1_oda();
  10.     m2_stop();      
  11.     state=oda1;
  12.   }
  13.    break;    
  14.     case oda1:
  15.       if (digitalRead(LM2) == LOW)
  16.       {
  17.         m1_vissza();
  18.         state = start;
  19.       }
  20.       break;


2 probléma is volt. Az egyik, hogy míg nem adtam int startgomb=0 étréket addig össze vissza dolgozott. Biztos van magyarázata, de nem jutottam addig a könyvben. A másik pedig, hogy a dugdosós vezeték kicsúszott és nem volt összeköttetés a motorhoz.
(#) szitko válasza eadx hozzászólására (») Máj 5, 2016 /
 
Azt tudod, hogy ez a programod mit csinál? Hol adsz értéket a "state" változónak?
(#) kapu48 válasza eadx hozzászólására (») Máj 5, 2016 /
 
Ennél a példánál semmi értelme az alábbi megállapításodnak:
"Az egyik, hogy míg nem adtam int startgomb=0 étréket addig össze vissza dolgozott."!?

  1. startgomb = digitalRead(LM5); // az itt beolvasott érték határozzameg 0 vagy 1
  2.   if (startgomb == LOW) {  // Hogy ez a feltétel teljesül e?


Esetleg ha nincsen felhúzó ellenállás a nyomógombnál? Akkor lehet bizonytalan a müködés!

(A gomb állapota lehet 0 LOW vagy 1 HIGH, ez belefér 1 bit-be. Minek foglalszle neki int = 2 Byte-ot?)
A hozzászólás módosítva: Máj 5, 2016
(#) eadx válasza szitko hozzászólására (») Máj 5, 2016 /
 
Ez nem a teljes program csak egy része ami számomra kérdéses volt.
(#) eadx válasza kapu48 hozzászólására (») Máj 5, 2016 /
 
Ha a felhúzó ellenállás a 10 k-s, akkor az van.Lehet a kábel miatt volt az össze vissza dolgozás.
Nem spórolok a bitekkel, nem is gondoltam, hogy kellene. Így is 3 % -ot ír ki a feltöltés után.
(#) szitko válasza eadx hozzászólására (») Máj 5, 2016 /
 
Én már elvesztettem a fonalat...
Idézet:
„Ha a felhúzó ellenállás a 10 k-s, akkor az van.”

  1. if (digitalRead(startgomb) != LOW)

Akkor ez a feltétel mindig teljesül... Vagy ez már nincs is benne a kódban?
(#) eadx válasza szitko hozzászólására (») Máj 5, 2016 /
 
A startgomb a valóságban egy végállás kapcsoló aminek a c-no állása van bekötve.
yes
(#) jeges válasza eadx hozzászólására (») Máj 5, 2016 /
 
jó estét!

if( digitalRead(startgomb) ) // if HIGH

vagy

if( !digitalRead(startgomb) ) // if LOW
A hozzászólás módosítva: Máj 5, 2016
(#) bunny hozzászólása Máj 5, 2016 /
 
Sziasztok
Érdekes hibába futottam bele. Szükségem van 5V és 3.3V eszközök egyidejű használatára. Az a fura helyzet áll elő, hogy ha rárakom az ESP-01 wifi modult aminek a 3.3V kell, akkor ha rádugom a PC-re az arduino nano-t nem tudja telepíteni. Ha lebontom róla a wifit, akkor viszont felismeri és létrejön a COM port.
5V-on jelenleg némi ellenállás és egy NPN tranzisztor van, az 5V és 3.3V közös földre ment ha esetleg ez még fontos. A Wifi a serial-on lenne, de már átraktam onnan is más PIN-re hátha az a baj.
Valami ötlet, tanács?
(#) attika válasza sunside hozzászólására (») Máj 6, 2016 /
 
Sikerült működésre bírnom végre!!!!
Tv,sz.gép meg minden zavaró tényezőtől viszonylag távol.
Eddigi megfigyelés alapján kb fél óra alatt 8x volt sikeres szinkronizáció,ami már sztem nagyon jónak mondható,a többi meg paritás hibából kifolyólag nem sikerült.
A napi 1-2 is elég lenne ahhoz,hogy pontosan járjon az óra.
Köszönöm a tippet.
(#) icserny válasza bunny hozzászólására (») Máj 6, 2016 /
 
Az Arduino nano nem képes 3,3 V-tal ellátni a Wifi modult annak nagy áramigénye miatt. Használj Meduino nano-t, amiben van saját 3,3 V-os stabilizátor (és nem az USB-soros átalakító belső stabilizátorát szívja le...), vagy tegyél a Wifi modul mellé egy 3,3 V-os stabilizátort és két kondenzátort.
(#) bunny válasza icserny hozzászólására (») Máj 6, 2016 /
 
Hát erre nem gondoltam volna. 5V-on bírna adni elég áramot? Ha arra rárakok két diódát, az kb. 3.3V környékére viszi le a feszültséget. Elég drága ez az ajánlott meduino ahoz képest, hogy 900ft körül vannak a nano kínai változatai. NEm vagyok igazán büfé elektronikában, programozó vagyok, ezzel csak ismerkedem
(#) icserny válasza bunny hozzászólására (») Máj 6, 2016 /
 
Az 5V-os stabilizátor terhelhetősége elég lesz hozzá. Két dióda helyett én a 3,3 V-os stabilizátort ajánlom...
(#) jeges válasza bunny hozzászólására (») Máj 6, 2016 /
 
mi ilyet használunk ezen minden ilesztés rajta van power/port
esp serial board
(#) siletto hozzászólása Máj 6, 2016 /
 
Hali!
Készítek egy SD kártyára író RTC-s hőmérőt.
Az arduinó a setup()-ban érzékeli a dátumot, és azt adja filenévnek az sd kártyán. Így minden nap új filebe kerül a hőmérséklet-adat.

Szeretném minimalizálni a fogyasztást,kitaláltam, hogy 10 percenként adnék áramot az arduinonak 5-10mp-re, így minden mérésnél detektálja milyen nap van, megméri,beírja, majd elveszem az áramot. A fogyasztása is kicsi lesz(20mA nagyon sok), ha a bekapcsoló rendszer áramfelvétele kicsi.

Van ötletetek, hogyan lehetne megoldani? Gondoltam az 555-re, de azzal nem tudom mennyire egyszerű ezt megcsinálni, és a kondenzátorok szórása is perceket változtatna a bekapcsoláson.

mematyi
(#) Bell válasza siletto hozzászólására (») Máj 6, 2016 /
 
Mivel az RTC állandóan megy, percenkénti megszakításra állítanám be. Ez egy CMOS számlálóval (pl 4017) minden tizedik percben 1 percig tartó jelet ad, ami bekapcsolja a szükséges részeket, a program lefutása után programból kapcsoltatnám ki.
Talán ki lehetne egészíteni a programot egy olyan résszel, hogy töröljön a régi adatokból, ha a kártyán kevés a hely.
A hozzászólás módosítva: Máj 6, 2016
(#) siletto válasza Bell hozzászólására (») Máj 6, 2016 /
 
Én elsőre úgy gondoltam, hogy az egész Arduino rendszer tápját elvágnám, és csak az időzítő valami(pl 555) menne max. néhány miliamperrel. Nem tudom hogy az RTC-m(DS3232) mennyit fogyaszt bekapcsolva, én a gombelemjére hagyatkoztam.
Elvileg kilohertzes, vagy 1Hz jelet tud kiadni a modul, esetleg azt meg lehetne csinálni, hogy minden 600.mp-ben kapcsoljon be, de ilyen cmos dolgokkal még nem foglalkoztam, nem tudom mit és mennyire bonyolultan lehet megoldani. Minden ötletet szívesen veszek

A kártya 2GB, ahogy számoltam kb 1000 év mérése fér rá.
(#) Bell válasza siletto hozzászólására (») Máj 7, 2016 / 1
 
Az 555-öt elfelejteném ennél a projektnél.
A DS3232 csak nanoampereket fogyaszt, az ALARM2-je lehetővé teszi a percenkénti ébresztést.
De az ébresztést csak számolnám egy CMOS számlálóval.
A CD4017 3-15 V közötti tápfeszt igényel, áramfelvétele 0,5-20 mikroamper 5V mellett.
A mérést végző összes áramkör ki van kapcsolva, nem kap tápfeszültséget.
A 4017 minden percben lép egyet, így bármelyik kimenet 10 percenként 1-es logikai szintet ad ki egy percig, (a CARRY OUT csak egy impulzust).
Ezt használjuk közvetve a tápfeszültség bekapcsolásához.
Mivel a mérés rövid ideig tart, a tápfeszt az Arduinonak kell lekapcsolni egy logikai áramkör, vagy valamilyen tároló közbeiktatásával. Pl egy J-K tároló (pl. CD4027) alkalmas lehet erre. A 4017 CARRY OUT kimenetét lehetne használni a tároló bebillentéséhez, az Arduino valamelyik kimenetét a törléséhez.
A tároló kimenete így 10 percenként egyszer ad 1-es logikai szintet, de csak addig, amíg a mérés be nem fejeződött, mert akkor az Arduino lekapcsolja.
A logikai szint nem elég a ki-be kapcsolgatáshoz, az áramigénynek megfelelően valamilyen tranzisztorral illeszteni kell. Én MOSFET-et használnék.
Az áramfelvétel így folyamatosan néhány mikroamper, ami 10 percenként a mérés időtartamára növekszik meg.
A hozzászólás módosítva: Máj 7, 2016
(#) bunny válasza jeges hozzászólására (») Máj 7, 2016 /
 
Ez de jópofa Még meggondolom, most arra jutottam, hogy van itthon a bareboard-hoz vett táp (MB-102) ami jumperelhetően tud 3.3V és 5v kimenetet, lehet ezzel letudom a tápellátást, és volt konverziót egybe, nem mellesleg meglepően olcsó a többi megoldással összehasonlítva.
Adok neki 9V-ot, azzal talán nem is melegszik nagyon még a 3.3V része sem (12V tápom van itthon, de pár óra üresjáratás után már elég meleg volt az LDO).
Illetve szemezek olyan UNO-val, amire rá van építve a wifi és 3.3V a PIN feszültség 5V helyett (weMos D1), ha a nano-val nem jutok dűlőre és úgyis venni kell egy UNO-t, lehet ilyen lesz, bár akkor meg mit kezdjek a wifi-vel ami már itthon van? Eh, nagy dilemmák ezek
A hozzászólás módosítva: Máj 7, 2016
(#) icserny válasza Bell hozzászólására (») Máj 7, 2016 /
 
A feladat sokkal egyszerűbben megoldható lenne valamelyik energiatakarékos üzemre kitalált MSP430G2xxx mikrovezérlővel. Ennek a CMOS számlálóval komplikált projektnek egyre inkább "gombhoz varrjuk a kabátot" szaga van!
(#) siletto válasza icserny hozzászólására (») Máj 7, 2016 /
 
Én inkább a CMOS-t választanám Nem csak azért mert nem tudok MSP-t programozni, hanem mert sose használtam még logikai áramköröket.

Én is kitaláltam közben, hogy még ha 1mp-es jelem van, három darab cd4017-tel úgyis megoldható. Az első számol másodperceket, az utolsó kimenetre kötném a következő 4017 impulzus bemenetét, aztán annak az utolsó kimenetét a harmadik 4017 bemenetére, aminél megcsinálom, hogy 6. szintnél megálljon. Így elvileg 10*10*6 mp-et tudna várni. Majd az arduinoval resetelem mind a három számlálót.


Egyébként a ds3231 7mA-t fogyaszt jelenleg, most mértem. Nem tudom, hogy ha leszedem a pici LED-et róla mennyit fog csökkenni, de szerintem nem mikroamperes tartomány. Az szerintem az elemről táplált backupra igaz. Ha 1-2mA lenne a folyamatos áramfelvétel, már az is jó lenne.

Ha meg lehet oldani ezt a percenkénti ébresztést, az nagyon jó lenne, de nem nagyon találtam ide vonatkozó információt,leírást. Köszi a segítséget előre és utólag is.
A hozzászólás módosítva: Máj 7, 2016
(#) icserny válasza siletto hozzászólására (») Máj 7, 2016 /
 
Idézet:
„Nem csak azért mert nem tudok MSP-t programozni...”
Energia környezetben ugyanúgy kell/lehet, mint az Arduinot.
A hozzászólás módosítva: Máj 7, 2016
Következő: »»   224 / 853
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem