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   521 / 839
(#) D_Zsolt válasza Kovidivi hozzászólására (») Ápr 19, 2019 /
 
Kár

A cél nem csak a kód kiemelése lenne, hanem szeretném érteni. Amit találtam az mind soronként lépeget és a teljes kijelzőt használja a menühöz. Én 3 funkciót (esetleg egy negyediket, ahol mondjuk előre beállított értékeket lehet betölteni vagy az aktuálisat menteni, de ez nem fontos) szeretnék a menünek amiben jobbra balra lehet lépni és az alsó sorban az értékek lennének állíthatók, amik amúgy ugyan azon változóhoz tartoznak. Nem titok, egy spotweldert szeretnék komfortosabbá tenni, de közben tanulnám az arduinot
A hozzászólás módosítva: Ápr 19, 2019
(#) kapu48 válasza D_Zsolt hozzászólására (») Ápr 19, 2019 /
 
Ezt ajánlom!
Ennél egyszerűbben ezt nem lehet megcsinálni:
Rotary Encoder LCD Menu:
Bővebben: Link
A hozzászólás módosítva: Ápr 19, 2019
(#) D_Zsolt válasza kapu48 hozzászólására (») Ápr 19, 2019 /
 
A kód szép, de nálam nem működik. A kijelzőn:
Set:
Done N
és bármit csinálok nem változik.
Természetesen a pineket átírtam, hogy stimmeljenek.
(#) kapu48 válasza D_Zsolt hozzászólására (») Ápr 19, 2019 /
 
Ezt írja a 160. sorban:
// Re-enter menu if button pushed (for long enough)
???

Sajnos távolról, nem tudok neked hibát keresni!
Ezt neked lenne jó gyakorolni.
A hozzászólás módosítva: Ápr 19, 2019
(#) rolandgw válasza D_Zsolt hozzászólására (») Ápr 19, 2019 /
 
Ha jól megy a C, ezzel tetszőleges menüt ki tudsz alakítani. Az LCD-t és encoder-t be kell vinni a megfelelő helyekre:
Bővebben: Link
Az Examle.c-ben található switch-es navigálást átírhatod a Protothreads-el, így az is megoldható, hogy amíg a menüben kóborolsz a uC párhuzamosan mást is tud futtatni.
(#) D_Zsolt válasza kapu48 hozzászólására (») Ápr 19, 2019 /
 
hát ha 2-3 perc nem elég hosszú akkor...
Igazad van, igyekszem is minden részét gyakorolni, de az igazat megvallva, működő kódokból tanulom a működést, soronként értelmezve. A debuggerelés sosem volt erősségem, ideje lesz utána néznem
(#) D_Zsolt válasza rolandgw hozzászólására (») Ápr 19, 2019 /
 
Nem, nem megy jól sajnos, sőt az Arduino semennyire Régóta hevert a fiók mélyén, hogy majd megtanulom, az elsőt még 30000Ft-ért vettem, de sosem volt rá időm (nem elektronikából élek). Most ismerkedünk.
(#) kapu48 válasza D_Zsolt hozzászólására (») Ápr 19, 2019 / 1
 
Ha tanulni akarsz?
Akkor elölről kellene kezdeni.
Mert aki nem tud úszni, azt nem lökjük be a mélyvízbe.

Itt szépen végig vezet a projekt felépítésén:
Bővebben: Link
Kezdve a delay helyetesítésével.
(#) D_Zsolt válasza kapu48 hozzászólására (») Ápr 19, 2019 /
 
Igen, az jó lenne, mert úszni is gyatrán tudok Itthon egyedül szép lassan haladok, kár, hogy nincs a közelemben egy türelmes ember aki válaszolni tud a kérdéseimre. Legtöbbször megoldom valahogy mindenképpen, de biztosan van egyszerűbb, szebb kód, mint amit én írok. Valaha a linux 2.x.x idején jobban ment, mára nehéz lett a fejem és sok év kiesett. Köszönöm, hogy segítetek, sokat segít minden link amit kapok!!!
(#) Kera_Will válasza D_Zsolt hozzászólására (») Ápr 19, 2019 /
 
Arduino alapok és még némi villanytan mert anélkül nem mész semmire.

egyik ingyenes saját magadnak dedikalható könyv
(#) D_Zsolt válasza Kera_Will hozzászólására (») Ápr 20, 2019 /
 
Köszönöm, a középiskolában (1984-88) Z80-at programoztam assemblyben (Primo, HT-1080Z, Enterprise128, ZX-Spectrum), 2000-ig érvényes rádióamatőr engedéllyel rendelkeztem hívójellel, rezgőköröket ma is „megszokásból” készítek úgy kb 200MHz-ig szemre (működnek is, sosem kellett kiforrasztanom csak hangolni), varicapos hangolást fejben számolok, tehát az analóg dolgoknál nem esem pánikba. Szintézeres rádiót építettem 2m-re és 70cm-re, cél szintézer IC-vel is és cmos IC-kből is. A nagy tervem, hogy egy 100kHz-50MHz-es univerzális folyamatos hangolású rádiót építsek 74MHz-es középfrekivel (ilyen nagyjóságú és keskenysávú kristályszűrőt sikerült vennem az oroszoktól) viszont elmaradt, az A4 nagyságú jegyzeteim amik le voltak fűzve olyan 28-30 mappába (ebből azt hiszem 4 volt a rádió dokumentációja, nyáktervei, dobozolás tervei, plussz az automata hangolású antennaillesztő nagyfeszültségű szélessávú RH loop antennával) a válásomkor a tűz martalékává váltak bosszúból Szóval ez már nem fog megvalósulni. 1995 óta linuxozom, annó a linuxcnc-hez (akkor még nem GPL volt a licence és EMC-nek majd később EMC2-nek hívták és csak azután lett LinuxCNC miután a névhasználatot jogi úton nehezményezte egy kereskedelmi cég) is és a kernelhez is adtam C-ben javításokat és el is fogadták, de mindez már régen volt. Önálló projektet viszont sosem csináltam, se asztali gépekhez sem pedig máshoz, így van mit tanulnom. Most kínozom magam az Arduinoval és a Qt keretrendszerrel. Minden működik, de sem a kódot sem pedig a kész eszközt nem tudnám még csak kölcsön adni sem, mert ha nem megy valami, akkor nekem pár kattintás más meg csak kínlódna vele, hogy mit miért csináltam.
Ettől függetlenül köszönöm a linket, az arduino része biztosan érdekes lehet, de ez a technika az amit nem érdemes könyvbe írni, mert mire kiadják, elavul. Ezekre jobb az internet, ezért is kérdezősködök fórumokon. Karl May-t viszont papíron olvasok
(#) sany válasza D_Zsolt hozzászólására (») Ápr 20, 2019 /
 
Idézet:
„mert mire kiadják, elavul”


Azért az Ardunio az Arduino. Szerintem egyhamar nem fog elavulni. Nem véletlen egy fordított 8 -as a logója.
(#) D_Zsolt válasza sany hozzászólására (») Ápr 20, 2019 /
 
Természetesen ez igaz is meg nem is. ClickButton könyvtár! Van vagy 8 féle, különböző szintaxissal (plusz I2C stb. protokollal). Mire leírsz egyet egy könyvbe, addigra lesz jobb, egyszerűbb, gyorsabb stb. és pont egy picit másképp kell meghívni. Ebbe pont az éjjel futottam bele és a végére kettőből raktam össze egy nekem megfelelőt, mert az egyik egyszerű volt a másik meg le is fordult még egy extra lib nélkül Amennyire lehet libekre építkezek, de ha van módom rá, akkor a tudásomnak megfelelően igyekszem azt kikerülve megírni. Biztosan van benne hiba, majd ha kész lesz feltöltöm népítéletre. Most egyszerű és kisebb helyet foglal, mint az extra libes. Van már menüm is, igaz ki is dobtam, mert közben sokkal szimpatikusabbnak találtam egy kereskedelmi projektet amiről a ponthegesztős topikban olvastam. Ráadásul a menü libek mind túl sokat tudnak, ki sem használtam volna. Így most dupla klikkel lép a beállításokra és mind a három értéket egy-egy egy klikk után lehet állítani az utolsó után visszalép a loopba és dolgozhat. Ezt találtam legegyszerűbbnek. Jó játék az arduino Évekig halogattam, hogy majd egyszer... Hát most van a majd egyszer, mert kell egy ponthegesztő az akkupakkhoz egy porszívóba és egy vakuba
(#) Kera_Will válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Akkor villanytan nem érdekes számodra .
Akkor kb a 120 oldaltól lesz hasznos ...
Softveres ... bővítmények ... utasítások ... stb.
Arduino specifikusabb Chez hasonló nyelvi változások.
(#) D_Zsolt válasza Kera_Will hozzászólására (») Ápr 21, 2019 /
 
Azért biztosan van olyan ami meglepetést okoz villanytanon belül is Sose tekertem hálózati feszre trafót, sőt a csöves cuccokhoz is a néhai mesterem készítette, mert ő profi volt benne és sosem kellett magamnak csinálnom. Az élet fintora, hogy ő tanult műszerész volt, sosem sikerült a rádióamatőr vizsgája élete végéig, míg nekem igen és minden tudásom tőle származott! Minden a kisujjában volt, de a vizsgadrukk elkísérte az egész élete folyamán. Az egész egy keltetőgéppel kezdődött, relét kellett szereznem és a faluban ahová költöztem, hozzá irányítottak! Kár, hogy már nem él, igazán nagy koponya volt minden téren, nem csak az elektronikában! Építettünk rengeteg Triostar antennát eladásra, abból vett a rádióklub egy használt Yaseau FT-t, aminél ő ezerszer jobbat épített, már csakazért is! TTL ic-kből, 4046PLL-ből és CB kristályokból csinált KF-et amit utána C64-ről vezérelt... sose értettük meg, hogyan működik De működött!!!
Bocsánat, elkalandoztam, így közel 50 felé megesik...
Arduino:
Kilépek a loop-ból, if-ekkel végiglépkedek a vizsgálaton és a az else ág visszalép a loop-on kívüli programrészletek elejére. Hogyan kerülök vissza a loopba végén? A return csak egyet lép vissza. A visszalépéshez a vermet használja, amiben gondolom ott az összes korábbi cím is, tehát a veremben gyűlik a az adat. Hogyan tudom megnézni, hogy mennyi helyem van még? Biztosan benne van a könyvben, olvasom azt is párhuzamosan csak hátha van aki itt gyorsabban eligazít...
(#) benjami válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
A setup és a loop két dedikált függvény. A setup egyszer fut le bekapcsolás (vagy reset) után, a loop pedig "végtelenszer" amíg ki nem kapcsolod a tápot. Amúgy a main.cpp-ben megtalálhatod ezt:
  1. int main(void)
  2. {
  3.   init();
  4.   initVariant();
  5. #if defined(USBCON)
  6.   USBDevice.attach();
  7. #endif
  8.   setup();
  9.   for (;;) {
  10.     loop();
  11.     if (serialEventRun) serialEventRun();
  12.   }
  13.   return 0;
  14. }
(#) D_Zsolt válasza benjami hozzászólására (») Ápr 21, 2019 /
 
Ha kilépek a loopból, nem fut többé, ráadásul egy önmagába visszaforduló ciklusból egy másikba lépek, az meg egy harmadikba. Ebből a harmadikból szeretnék a fő ágba (loop) visszalépni.
  1. setup{
  2. lefut, továbblép a loopra}
  3. loop{
  4. vizsgál, nyomógombra kiugrik az 1re
  5. }
  6. 1{
  7. beállít, nyomógombra ugrik a 2re
  8. }
  9. 2{
  10. beállít, nyomógombra ugrik a 3ra
  11. }
  12. 3{
  13. beállít, nyomógombra ugrana a loopra, de nem, marad a 3ban
  14. }

A loopra hiába hivatkozom, nem tér vissza, már elolvastam, hogy ezen a néven miért nem, ez ok! A returnra megy a 2re, onnan megint a 3ra és marad a loopon kívül a végtelenségig. A kérdés, hogyan tudnék mégis visszatérni a program fő részére. Közben elkezdtem másik úton is, de ez nem hagy nyugodni.
(#) Tomi_Bp hozzászólása Ápr 21, 2019 /
 
Sziasztok!
Valakinek volna ötlete, hogy a kommentelt sorral miér fut rendesen a kód és anélkül miért nem?
  1. #include <SoftwareSerial.h>
  2.  
  3. static const int GPS_RX_Pin = 8;
  4. static const int GPS_TX_Pin = 7;
  5. static const int GPSBaud = 9600;
  6. SoftwareSerial GPS_serial(GPS_RX_Pin, GPS_TX_Pin);
  7.  
  8. unsigned char c;
  9. unsigned char fix;
  10.  
  11. void setup()
  12. {
  13.   Serial.begin(115200);
  14.   GPS_serial.begin(GPSBaud);  
  15.   pinMode(A4, OUTPUT);
  16. }
  17.  
  18. void loop()
  19. {
  20.   if ( GPS_serial.available() )
  21.   {
  22.     while ( c != '$' ) //$    36
  23.     {
  24.       c = GPS_serial.read();
  25. //    Serial.write(c);
  26.       Serial.print(c);    //    <<<<<<<<<<<   ENÉLKÜL A SOR NÉLKÜL MIÉRT NEM FUT LE A KÓD RENDESEN??????
  27.     }
  28.     c = GPS_serial.read();
  29.     if ( c == 'G' ) //$G
  30.     {
  31.       c = GPS_serial.read();
  32.       if ( c == 'P' ) //$GP
  33.       {
  34.         c = GPS_serial.read();
  35.         if ( c == 'G' ) //$GPG    vagy R, vagy V, vagy >G<
  36.         {
  37.           c = GPS_serial.read();
  38.           if ( c == 'S' ) //$GPGS
  39.           {
  40.             c = GPS_serial.read();
  41.             if ( c == 'A' ) //$GPGSA
  42.             {
  43.               c = GPS_serial.read();
  44.               if ( c == ',' ) //$GPGSA,
  45.               {
  46.                 c = GPS_serial.read();
  47.                 if ( c == 'A' ) //$GPGSA,A
  48.                 {
  49.                   c = GPS_serial.read();
  50.                   if ( c == ',' ) //$GPGSA,A,      
  51.                   {
  52.                     c = GPS_serial.read();
  53.                     if ( c == '3' ) // 3D FIX     $GPGSA,A,>>>3<<<,28,17,24,10,15,18,19,11,12,13,,,2.40,0.93,2.21*00
  54.                     {
  55.                       Serial.print("\n\r\n\r\n\r\n\r***** 3D GPS FIX!!! ****\n\r");
  56.                       fix = 3 ;
  57.                       digitalWrite(A4, HIGH);
  58.                       delay(1000);
  59.                       digitalWrite(A4, LOW);
  60.                     }
  61.                     else if ( c == '2' ) // 2D FIX
  62.                     {
  63.                       Serial.print("\n\r\n\r\n\r\n\r***** 2D GPS FIX!!! ****\n\r");
  64.                       fix = 2 ;
  65.                       digitalWrite(A4, HIGH);
  66.                       delay(650);
  67.                       digitalWrite(A4, LOW);
  68.                     }
  69.                     else if ( c == '1' ) // NO FIX !!!
  70.                     {
  71.                       Serial.print("\n\r\n\r\n\r\n\r***** NO FIX!!! ****\n\r");
  72.                       fix = 1 ;
  73.                       digitalWrite(A4, HIGH);
  74.                       delay(100);
  75.                       digitalWrite(A4, LOW);
  76.                     }
  77.                   }
  78.                 }
  79.               }
  80.             }
  81.           }
  82.         }
  83.       }
  84.     }
  85.   }
  86. }

Előre is köszi!
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Nem igazán értem a kódod, de a kilépésre több megoldás is lehet.

1: break, exit, valami ami kilépteti.

2: Ez sokkal jobb!:
Egy plusz logikai változó ami ha true akkor fut a loop. Különben nem. Ehhez a do while ciklus kell. Annak nézz utána. Ez akkor jó, ha mondjuk egy al-al-al menüben vagy és ki akarsz lépni az egészből.

Bővebben: Link

Bool

bool futhat ;

futhat=fale;
do

If valami

{
futhat=false
}
while (futhat==true) A kettőzött egyenlőség nem véletlen!

No, ez addig fut amíg a logikai változód igaz. A do while hátul tesztelős ciklus! Azaz mindenképpen belefut, majd utána vizsgálja a feltételt. Van elől tesztelő is, az meg értelemszerűen elsőnek megvizsgálja a feltételt.
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Ha mindegyik al- loop-ból kilépsz valamikor és nem lépteted vissza a main -loop ból, akkor a main loop-ra tér vissza. Ha nem megy vissza akkor két dolog lehet a gond. Nem lépteted ki mindegyik al loopból. Vagy ha igen, akkor rögtön a main-loop-ból vissza is lépsz, mert ami meghívja azt a függvényt mindig meghívódik a main loop-ból. Erre kellenek a logikai változók sok if else szerkezettel.
(#) D_Zsolt válasza KoblogPerGyok hozzászólására (») Ápr 21, 2019 /
 
Nos ez igaz lehet, tettem bele most delay(100);-at és valóban visszalép a loopba (ezt látom az lcd-n), de utána visszatér a 3. ciklusomba minden kérdés nélkül
Ezt a do while-t mindjárt megvizsgálom
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
A kódod ha megy és az a baj, hogy a main loop-ba nem tér vissza, akkor a 3-as hoz break;

Ez az utasítás közli, hogy ebből a loop-ból már elég, folytassa a loop-on kívüli utasításokkal. Ha az nincs már akkor azArduino kilép a setup() -ból és a main lopp-ra tér rá.
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
A másik ami a kódodból látszik:

loop {

}


Be is zárod. Tehát amit írtam break nem is lesz elég, mert az nem a lopp {} között van. Másképp álj neki.
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
setup{
lefut, továbblép a loopra}
loop{
vizsgál, nyomógombra kiugrik az 1re
} //Ez nem jó helyen van szerintem innen el kellene venni
1{
beállít, nyomógombra ugrik a 2re
}
2{
beállít, nyomógombra ugrik a 3ra
}
3{
beállít, nyomógombra ugrana a loopra, de nem, marad a 3ban
//ide meg break;
break;
}

//és ide tenni


Nem mindegy a program futása szempontjából, hogy ez a } hol van. De mint mondtam nem értem pontosan a kódod, neked kell eldöntened, hogy a loop ban mi kell hogy legyen.
(#) Rober_4 válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Én is valamikor 20 évesen próbáltam megépíteni, egy midi billentyűzetet az azóta már rég eladott Vermona orgonámhoz. Akkor felépítettem a teljes midi vezérlést, multiplexerekből meg léptető regiszterekből, de soha nem tudtam normálisan szinkronizálni, aztán hagytam a fenébe.
Most kaptam valakitől egy rossz billentyűzetet, elég strapabírónak tűnt, így gondoltam Arduinóval megcsinálom. Először úgy gondoltam, hogy AD-átalakítással mérem melyik billentyű van lenyomva. Ezzel elcsesztem 2 hetet teljesen feleslegesen, nagyon macerás volt, és pontatlan. Majd tegnap gondoltam egyet, és kibányásztam a régi áramkört, levágtam belőle egy dupla multiplexeres részt, és beforrasztottam hozzá minden billentyűt. Az egyik multi bemenete A2 a másik A3. A címet a D3, D4, D5, D10-en címzem. Egy forciklussal végigszkennelem looponként, és a dolog tökéletes! Gyors pergésmentes, stabil.
(A kódban van néhány korrekció, a beforrasztási irányok miatt 8 vezetékenként, de a lényeg nem ez)
A hozzászólás módosítva: Ápr 21, 2019
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Gondolom menü rendszert szeretnél felépíteni. Az nem annyira bonyolult, akkor válik azzá, ha sok van.

  1. Setup
  2.   {
  3.  
  4.  
  5. bool futhat;
  6.  
  7. futhat=true;
  8.       do
  9.          {
  10.              lcd.print("Itt vagyok, míg a nyomógombot meg nem nyomod!")  //Csak példaként
  11.              if (Digital.read(4)==high) //Pl 4. lábra van kötve
  12.                {
  13.                   futhat=false;
  14.                }
  15.             delay(100);
  16.            }
  17.        while (futhat== true)
  18.  
  19. //Ha itt nincs semmi és  megnyomta a gombot akkor a main-loop-ra fog ugrani.
  20.  
  21. Másik menü elemhez megint kellene egy do while… A gond itt kezdődik, mi van ha almenük is vannak? Ekkor sajnos mindegyikhez kell egy do while, amiből egy gombbal lép ki. (Egyel feljebb), így az utolsó kilépésnél lesz ez a futhat változó false. Ezt kell átgondolni de rendesen, hogy az almenük rendesen működjenek!
  22.  
  23.  
  24.   } //Setup vége!!
A hozzászólás módosítva: Ápr 21, 2019
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Ápr 21, 2019 /
 
Ha ez összejön, akkor érdemes lesz kiszervezni egy külön függvénybe, mert akkor a setup-ból csak meg kell hívni, illetve a program rendes futásakor (amikor a main loop-fut) egy nyomógomb folyamatos figyelésével újra elő lehet hozni anélkül, hogy az arduino-t ki kellene kapcsolni.
(#) D_Zsolt válasza KoblogPerGyok hozzászólására (») Ápr 21, 2019 /
 
Kiszedtem a felesleget, csak azt hagytam benne ami problémás:kód

Hosszú gombnyomásra kilép a loop-ból a beállításba, ott rövid gombnyomásra lép egyesével tovább a 3.-ig és itt megáll (a tudományom).
Valóban menüt szeretnék, és ez a három az összes egyenlőre. Lehet, hogy érdemes lenne még tovább is gondolni, de egyenlőre ez már elég lenne! Nem csak a megoldás érdekel, hanem az is, hogy miért az a megoldás
Ez a kiszervezés jó gondolat, de ez még nekem magas...

jah! A sok funtion=0 már csak kínlódás részemről, hogy hol nullázzam a gombnyomást...
A hozzászólás módosítva: Ápr 21, 2019
(#) KoblogPerGyok válasza D_Zsolt hozzászólására (») Ápr 21, 2019 /
 
Igen, mert nem épp a legegyszerűbb menürendszert hozták ott össze. Ott már az idő sem mindegy, illetve nem látjuk rögtön mit is csinálpontosan, mikor adja vissza a vezérlést a main loop-nak. Nagyon bonyolult menüt szeretnél? Lehet egyszerűbb lenne sajátod írni.
(#) D_Zsolt válasza KoblogPerGyok hozzászólására (») Ápr 21, 2019 /
 
akkor most elbújok én írtam az example alapján, igaz nem menüben volt, hanem innen indultam: clickbutton demo
Az eredeti hegesztő kódban nincs menü, viszont működik és állítható a második impulzus hossza, ezt szeretném kibővíteni mind a 3 érték állíthatóságával.
A hozzászólás módosítva: Ápr 21, 2019
Következő: »»   521 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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