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   84 / 853
(#) proba válasza erdeidominik1999 hozzászólására (») Feb 11, 2015 /
 
Olyankor szokott ilyen mennyiségű üzenettel ellátni, ha hiányzik valami definíció, belinkelt file . Az arduinó környezetben néha előfordult, hogy valami hibába ütközött, ami hatására teljesen kifeküdt. A hibaüzenetek között valahol a végén volt a tényleges ok azt javítva a többi is megjavult. Az is előfordulhat, valami zárójelet,idézőjelet.. nem zártál le, ezért az utána lévő részeket nem veszi figyelembe.
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Feb 11, 2015 /
 
Mintha itt lenne a hiba: /? csere \
  1. C:\Program Files (x86)\Arduino\libraries\SD/?utility/?Sd2PinMap.h:43: error: ISO
A hozzászólás módosítva: Feb 11, 2015
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Feb 11, 2015 /
 
Köszi a segítséget, végül végigolvastam az egészet, és kiderült, egy pontosvessző hiányzik.
(#) Újbácsi hozzászólása Feb 11, 2015 /
 
Sziasztok!

Egy Arduino Megára írt progit feltettem a saját eszközömre, de a nem magyar ember, aki megosztotta, lábkiosztást nem mellékelt, a progiból pedig (számomra) nem derül ki, hogy melyik láb melyik analog vagy digital pinre kötendő.
Abban kérnék segítséget, hogy tapasztaltabb szemű vállalkozó találna-e benne pin "számosítást", hogy be is tudjam kötni.
Köszönöm.
Ati

u.i.: Elég bonyesz a cucc...

EDCmain.zip
    
(#) csatti2 válasza Újbácsi hozzászólására (») Feb 11, 2015 / 1
 
Van egy defines.h fájl a programban. Ott vannak a pin definíciók.
(#) Újbácsi válasza csatti2 hozzászólására (») Feb 11, 2015 /
 
Szívatsz? Ekkora vak lennék?

Módosítom.
Köszönöm szépen!
Ekkora vak vagyok!
Bocsi!


Továbbá, ha jól veszem ki, akkor ami A0 A7 A5 az analog, a sima számok pedig a digit pinek?
A hozzászólás módosítva: Feb 11, 2015
(#) Újbácsi válasza csatti2 hozzászólására (») Feb 11, 2015 /
 
Továbbá, ha jól veszem ki, akkor ami A0 A7 A5 az analog, a sima számok pedig a digit pinek?



(nem tudtam időben mégegyszer módosítani, bocs)
(#) kaqkk válasza kancar hozzászólására (») Feb 12, 2015 /
 
Én (igaz hogy piccel csináltam) de úgy írtam meg a programját hogy számolja a leeső szemeket , akkor riaszt ha 5 szem különbség van valamelyik fejnél és a gép mérete a szórás távolsága alapján a beművelt területet is kiírja az lcd -n m2- öl -hold-hektár mértékekben . Van benne olyan funkció ahol csak egy érzékelő jeleit fogadja (kardán-vagy kerék jeladó) és szintén a gép méretei alapján számolja a területet (szántás-rendsodrózás -stb)
A hozzászólás módosítva: Feb 12, 2015
(#) andykaaa hozzászólása Feb 12, 2015 /
 
Sziasztok
Adott e ket kijelzo: 2,4" es 2,2"
Ha jol ertem ahhoz hogy tudjam hasznalni az SD reszt, ahhoz szukseg van ketiranyu 5v- 3,3v szintillesztore ? A kijelzo reszhez eleg csak feszultsegoszto ellenallas ?
Kosz.
A hozzászólás módosítva: Feb 12, 2015
(#) andykaaa válasza andykaaa hozzászólására (») Feb 12, 2015 /
 
Vagy, egy masik lehetoseg: az ATMega644 mukodik 16MHz-en 3,3v-al ? Ez a megoldas lenne az idealis.
Az adatlapbol:
Idézet:
„Speed Grades
ATmega644: 0 - 10MHz @ 2.7V - 5.5V, 0 - 20MHz @ 4.5V - 5.5V”
,
en legalabbis igy ertem.
A hozzászólás módosítva: Feb 12, 2015
(#) erdeidominik1999 hozzászólása Feb 12, 2015 /
 
Sziasztok! Egy olyan dologban szeretnék segítséget kérni, hogy van egy gsm egységem arduinora, aminek a mikrofon ill hangszóró csatlakozói ki vannak vezetve jack dugóval, azt szeretném megcsinálni, hogy tmrpcm-mel bejátszok egy hangot a telefonba, viszont ha a gsm egység mellé a tmrpcm kimeneten van kötve egy hangszóró is, tökéletesen működik, hallom a vonal másik végén is, de ha a hangszórót lehúzom, akkor a telefonon csak recsegés megy át, ez miért lehet? Előre is köszi! (vagy ha van jobb ötlet, mint tmrpcm, akkor szívesen fogadom)
(#) csatti2 válasza Újbácsi hozzászólására (») Feb 12, 2015 /
 
Így van, jól látod. Van pár mellett megjegyzés, hogy ne módosítsd, gondolom azokat nem kéne módosítani.
(#) andykaaa hozzászólása Feb 12, 2015 /
 
Ma igen aktiv vagyok, csak ne tiltsanak ki.
Egy Atmega644 -et szeretnem ravenni belso 8MHz orajelre, hogy tudam 3.3v -al mukodtetni, de a Sanguino -projektbe nincs csak 16 MHz. Keresgeltem de semmi hasznalhatot nem talaltam.
Esetleg valaki mar csinalt ilyet ? Jol jonne most is a segitseg, mint mindig.
(#) mrobi válasza andykaaa hozzászólására (») Feb 12, 2015 /
 
Meg kell nézni az adatlapját, hogy van-e egyáltalán 8MHz-es belső órajele.
(#) csatti2 válasza andykaaa hozzászólására (») Feb 12, 2015 /
 
Tehát rájöttél, hogy a 3,3V csak 8MHz-el megy. A gond az, hogy gondolom már van a panelen egy kristály és az 16MHz-t generál.
Igazság szerint szerintem nem kéne azon a 80-200Ft-on spórolnod, amibe egy jelillesztő chip kerül. Ha nem akarod használni a touch funkciót, akkor pl. elég egy egyirányú illesztés is. Az ellenállás osztó itt nem jöhet szóba, mert borzasztó az SR-je. Egy olcsó alternatíva pl. a CD4050 (hőmérséklet és chip függő, hogy bírja-e a 8MHz-es SPI-t, a 4MHz-et tudni fogja, a 8MHz-en futó uC-nél ez is sokkal gyorsabb megoldás). Ha szeretnél megbízhatóan 8MHz-en működni, akkor pedig pl. a 74LVC245-ös chipek lehetnek jók (ezek ráadásul kétirányúak).
A hozzászólás módosítva: Feb 12, 2015
(#) csatti2 válasza mrobi hozzászólására (») Feb 12, 2015 /
 
Szinte biztos, hogy van. A fuse-ok átprogramozásához viszont külső programozó kell. Nem hiszem, hogy van neki.
A hozzászólás módosítva: Feb 12, 2015
(#) mrobi válasza csatti2 hozzászólására (») Feb 12, 2015 /
 
Ahhoz elég egy másik arduino is. Csak a 8MHz-es bootloadert kell feltölteni rá.
(#) andykaaa válasza csatti2 hozzászólására (») Feb 12, 2015 /
 
Tenyleg nincs kulso programozom.
Egy ArduinoUNO -val irtam bele a 16 MHz -es bootloadert. Latszolag mukodik is, amolyan kis Blinki villogtatasnal, meg 3.3 v alatt is villog, de ketlem hogy egy nagyobb, 50-60% -nyi progit is elvinne 3.3 v alatt. Azert szeretnem egy 8 MHz-es bootloadert amit en is be tudok egetni. Mint a Sanguino.
A hozzászólás módosítva: Feb 12, 2015
(#) csatti2 válasza mrobi hozzászólására (») Feb 12, 2015 /
 
Lehet, azt nem ismerem. Viszont 8MHz-en még így is vagy harmad olyan sebességű lesz mint egy CD4050-el. Sokkal jobb irány a jelillesztő chip.
(#) andykaaa válasza csatti2 hozzászólására (») Feb 12, 2015 /
 
belevaghatok az illesztocsip-be is, de mint latom annak a 74LVC245 -IC nek van egy DIR, meg egy OE laba. Azok nem valami kapcsolo labak. Felek hogy azok tulbonyolitjak nekem a dolgot. Amugyis irto gyenge programozo-elektronikus vagyok.
A hozzászólás módosítva: Feb 12, 2015
(#) csatti2 válasza andykaaa hozzászólására (») Feb 12, 2015 /
 
Akkor használd a CD4050-et. Az is bőven megteszi. Annak csak 3V3 kell. Aztán egyik lábon be az 5V jel a másikon meg ki a 3V3-as. Ja igen, mivel a 3V3 szint még elég az 5V-os bemenetekhez, igazándiből a MISO jel is beköthető direktbe a uC-be (touch jel).

Amúgy nem vészes az 74LVC245 chip sem. Az OE az engedélyező láb (ha nem engedélyezed elszeparálja a két buszt egymástól), a DIR pedig a jelek haladási irányát adja meg.

Egyébként nemrég már előjött ez a probléma ugyanezzel a panellel. Nem tudom végül melyik irányba haladt a kolléga. Bővebben: Link
A hozzászólás módosítva: Feb 12, 2015
(#) andykaaa válasza csatti2 hozzászólására (») Feb 12, 2015 /
 
Na es ezek, vagy peldaul EZ.?

Inkabb modositom mint ujat irjak - Ertem.
A hozzászólás módosítva: Feb 12, 2015
(#) csatti2 válasza andykaaa hozzászólására (») Feb 12, 2015 /
 
Nem jók. Ellenállásokat használ a jel lehúzásához és emiatt rossz lesz az SR (Slew rate = maximális jelváltozási sebesség). Nem használhatsz ilyet több MHz-es kommunikációra.

Ott lent ajánlja neked a CD4050-et. Nincs 80Ft. Erre te alkalmatlan cuccot akarsz venni 1400Ft-ért?
A hozzászólás módosítva: Feb 12, 2015
(#) Újbácsi válasza csatti2 hozzászólására (») Feb 13, 2015 /
 
Bocs, hogy értetlenkedek...
Gondolom megnézted, ha egyből láttad a cuccot.
Elkezdtem kiírni, hogy melyik láb micsoda.
De van olyan benne, ami fedi egy másik, korábbi pin jelét.
Akkor mi alapján kell eldöntenem, hogy melyik lesz a jó?
(#) csatti2 válasza Újbácsi hozzászólására (») Feb 13, 2015 /
 
Az A7-re gondolsz? Szabadon használhatsz helyette másik szabad analóg bemenetet ha akarsz. AnalogRead-et használ csak, így nem kell aggódnod, hogy nem fog működni.
A srác elég jó c++ programozó, de nem valami jól kezeli a uC specifikus dolgokat. pl. ahogy az analóg pineket kezeli az extra hibát okoz majd a mért értékekben. Ráadásul nagyon hosszan tartó megszakításokat is használ (ráadásul feleslegesen, kicsi módosítással az összes fenntartásomat ki lehetne küszöbölni). Biztos jó, meg szép az egész de pár dolgot átgondoltam volna.
(#) mikrokapcsolo hozzászólása Feb 16, 2015 /
 
Sziasztok! Egy olyan problámát próbálok megoldani, ami kissé kifogott rajtam. Adott egy szünetmentes táp, ami ha üzembe lép, 10 secenként ad egy jelet. Viszont, ha nincs rajta minimum 60W terhelés (alap esetben csak pár watt van rajta) akkor 5 perc után leáll. Ha pedig az akksi már lemerülőben van, 1secenként kezd el jeleket adni.
Azt találtam ki, hogy arduinoval figyelem, hogy milyen időközönként ad ki jelet, és ha elment a táp, akkor rákapcsolok egy 60-as izzót, de ha lemerülőben az akku, akkor leveszem az izzót, valamint, a weboldal szerevrét (raspberry pi) leállítom.
Jelenleg, mivel rá volt kötve a két lcd az arduinora, rajta is hagytam, debug céllal.
A jelenelgi program, amit még most is tökéletesítgetek, ott tart, hogy amint jön impulzus, elindítja a számlálást, majd a következő impulzusra leállítja, és a két értéket megnézi, hogy melyik tartományba esik (A, B, semelyik). A probléma most az, hogy minden páros jelre számlál( egyre belép, kettőre kilép és értékel), és annak megfelelően állítja a kimenetet, és hogyha menetközben visszaáll alap állapotba(visszajön a hálózati fesz.), vagyis nem kap több jelet, akkor ha éppen számolja az időt, eléri a 12sec-et, akkor kikapcsolja a kimeneteket, jelezvén, hogy alap állapotban áll, de hogyha nem lépett be a második számlálásba, akkor nincs, ami leállítsa a kimenetet.
A kód, ami jelenleg fut:

  1. #include <LiquidCrystal.h>
  2.      
  3.     LiquidCrystal lcd0(7, 8, 6, 5, 4, 3);
  4.     LiquidCrystal lcd1(7, 9, 6, 5, 4, 3);
  5.      
  6.     int gomb = 0; //interrupt pin, 2-es láb
  7.     long time0 = 0;
  8.     long time1 = 0;
  9.     long time2 = 0;
  10.     int in = 0;
  11.     int allapot = 0;
  12.      
  13.      
  14.     void setup() {
  15.       lcd0.begin(16, 2);
  16.       lcd1.begin(16, 2);
  17.       lcd0.clear();
  18.       lcd1.clear();
  19.       attachInterrupt(gomb, beepd, FALLING);
  20.     }
  21.      
  22.     void loop()
  23.     {
  24.       while (in  == 0)
  25.       {
  26.         time0 = millis();
  27.         lcd0.setCursor(0,0);
  28.         lcd0.print(millis());
  29.       }
  30.      
  31.       while (in  == 1)
  32.       {
  33.         time1 = millis();
  34.         lcd0.setCursor(0,1);
  35.         lcd0.print(millis());
  36.         if ((time1 - time0) > 12000 )
  37.         {
  38.           in = 2;
  39.           time2 = 0;
  40.         }
  41.       }
  42.      
  43.       while (in  == 2)
  44.       {
  45.         time2 = time1 - time0;
  46.         lcd1.setCursor(0,0);
  47.         lcd1.print(time2);
  48.         lcd1.print("   ");
  49.         lcd1.setCursor(0,1);
  50.         if (time2 > 1000 && time2 < 5000)
  51.           lcd1.print("B");
  52.         else if (time2 > 9000 && time2 < 11000)
  53.           lcd1.print("A");
  54.         else
  55.           lcd1.print(" ");
  56.         in = 0;
  57.       }
  58.     }
  59.      
  60.     void beepd()
  61.     {
  62.       static unsigned long ltime = 0;
  63.       unsigned long itime = millis();
  64.       if (itime - ltime > 100)
  65.       {
  66.         if (in == 0)
  67.           in = 1;
  68.         else if (in == 1)
  69.           in = 2;
  70.         else if (in == 2)
  71.           in = 0;
  72.       }
  73.       ltime = itime;
  74.     }

A kimenet letiltására, hogy amikor éppen az indítóimpulzusra vár, a következő módosítással próbálkoztam:
  1. while (in  == 0)
  2.       {
  3.         time0 = millis();
  4.         lcd0.setCursor(0,0);
  5.         lcd0.print(millis());
  6.         if ((time0 - time1) > -12000 )
  7.         {
  8.           in = 2;
  9.           time2 = 0;
  10.         }
  11.       }

De ezzel csak rosszabb lett, mivel minden alkalommal lefut az if.
Ha valaki tudna megoldást, hogy miként javítsam ki, kérem segítsen.
A hozzászólás módosítva: Feb 16, 2015
(#) kapu48 válasza mikrokapcsolo hozzászólására (») Feb 16, 2015 /
 
Én, bizisten, átolvastam a programodat, vagy 4*5*!

Mégsem értettem meg a logikáját!
  1. 1.          void loop()
  2. 2.          {
  3. 3.            while (in==0) // 1. kezdéskor in=0, Elöl tesztelő ciklusnál, ha a feltétel igaz? kiugrik a ciklusból
  4. 4.            {
  5. 5.              time0 = millis();       // time0 nem kapót, kezdőértéket ?
  6. 6.              lcd0.setCursor(0,0);
  7. 7.              lcd0.print(millis());
  8. 8.            }
  9. 9.           
  10. 10.           while (in == 1) // 2. Itt várunk in==1
  11. 11.           {
  12. 12.             time1 = millis();
  13. 13.             lcd0.setCursor(0,1);
  14. 14.             lcd0.print(millis());
  15. 15.             if ((time1 - time0) > 12000 )
  16. 16.             {
  17. 17.               in = 2; // Ezt itt mért piszkálod? Így sosem lesz a kiugrási feltétel (in == 1) igaz! Itt ragadunk 2 megszakítás idejére?
  18. 18.               time2 = 0;
  19. 19.             }
  20. 20.           }
  21. 21.          
  22. 22.           while (in  == 2) // Ebbe még belese merek bonyolódni!
  23. 23.           {
  24. 24.             time2 = time1 - time0;
  25. 25.             lcd1.setCursor(0,0);
  26. 26.             lcd1.print(time2);
  27. 27.             lcd1.print("   ");
  28. 28.             lcd1.setCursor(0,1);
  29. 29.             if (time2 > 1000 && time2 < 5000)
  30. 30.               lcd1.print("B");
  31. 31.             else if (time2 > 9000 && time2 < 11000)
  32. 32.               lcd1.print("A");
  33. 33.             else
  34. 34.               lcd1.print(" ");
  35. 35.             in = 0;
  36. 36.           }
  37. 37.         }
  38. 38.    
  39. 39.     void beepd()
  40. 40.         {
  41. 41.           static unsigned long ltime = 0;
  42. 42.           unsigned long itime = millis();
  43. 43.           if (itime - ltime > 100)
  44. 44.           {
  45. 45.              in++; // Igy 1*űbb lenne!
  46. 46.              if (in > 2) in = 0;
  47. 47.           }
  48. 48.           ltime = itime;
  49. 49.         }
A hozzászólás módosítva: Feb 17, 2015
(#) mikrokapcsolo válasza kapu48 hozzászólására (») Feb 17, 2015 /
 
Helló!
1. kezdetkor 0, ezért folyamatosan menti a time0-ba a millis() értékét, egészen addig, amíg az interrupt ki nem hozza.
A time0 az elején kap: long time0 = 0;
Az az if akkor fut le, ha épp számol, de több mint 12 secig nem jött második impulzus, ezért kiléptetem a while-ból.
(#) kapu48 válasza mikrokapcsolo hozzászólására (») Feb 17, 2015 /
 
Áh! Látszik, hogy már késő van!

  1. var = 0;
  2. while(var < 200){ // False-re ugrik ki!
  3.   // do something repetitive 200 times
  4.   var++;
  5. }
(#) proba válasza mikrokapcsolo hozzászólására (») Feb 17, 2015 /
 
A raspí nem tudja ezt megoldani? Nem tudom mennyire elfoglalt, de hardveresen szerintem tudná.
Következő: »»   84 / 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