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   585 / 839
(#) sargarigo válasza usane hozzászólására (») Jan 23, 2020 /
 
Ha így jó, akkor használd így!
(#) Frankye hozzászólása Jan 24, 2020 /
 
Sziasztok!
Nem rég óta foglalkozom Arduinoval, és rendkívül meg vagyok vele elégedve. Borzasztó jól programozható, de most belefutottam egy olyan problémába, amire nem tudom a megoldást, pedig biztosan egyszerű. A feladat:
Adott egy nyomógomb, amelynek a megnyomása elindít egy folyamatot. Ha a gombot ismét megnyomják, akkor egy másik folyamat indul el, ha ismét megnyomják, akkor egy harmadik, és így tovább. Összesen 6 folyamat van, amelyeket el kell indítani, a hatodik folyamat után ismét az első következik, és így tovább.
A PIC-nél ezt a Flowcode-ban viszonylag egyszerűen, egy többszörös feltételes elágazással meg lehetett oldani, itt azonban elakadtam.
Létrehoztam egy globális változót, "gombertek" névvel. Fiygelem a gomb lenyomását, és ha lenyomják a gombot, akkor a változó értékét eggyel növelem. A következő lépésben egy "if" felétel-vizsgálattal megnézem, hogy a változó elérte-e a 6-os értéket, ha igen, nullázom.
Az ezt követő részben vizsgálom (szintén "if" feltételvizsgálattal), hogy a változó 1, 2, 3, ... értékű-e, és ennek megfelelően hajtatom végre a folyamatokat.
Azonban a fordítás során a fordító hibajelzést ad, mindig az utolsó "if"-nél, mondván, a változó abban a periódusban nincs definiálva.
Mit ronthatok el vajon? Illetőleg van-e ennél jobb megoldás a feladat végrehajtására?
A segítséget előre is köszönöm.
(A kódot most nem tudom bemásolni, mert az az otthoni gépen van, de ha kell, a hétvégén felteszem.)
(#) game4812 válasza Frankye hozzászólására (») Jan 24, 2020 /
 
Én akkor szoktam így járni, ha valahová a kelleténél eggyel több "}" kerül, így azzal a void loop() záródik, a hibajelzést adó rész előtt.
(#) kapu48 válasza Frankye hozzászólására (») Jan 24, 2020 /
 
Használd az "else if" változatot: Bővebben: Link
Itt elvileg korlátlan számú feltételt vizsgálhatsz.
  1. if (condition==1) {
  2.   // do Thing A
  3. }
  4. else if (condition==2) {
  5.   // do Thing B
  6. }
  7. ...
  8. else if (condition==6) {
  9.   // do Thing B
  10. }
  11. else {
  12.   condition=1;
  13.   // do Thing C
  14. }

Ráadásul gyorsabb is, mert az első találtat után a többi ágat már nem vizsgálja.
A hozzászólás módosítva: Jan 24, 2020
(#) Bakman válasza Frankye hozzászólására (») Jan 24, 2020 /
 
A 'switch...case' is használható ilyenre (Flowcode-ban többirányú elágazás néven fut): Bővebben: Link.
(#) Frankye válasza Bakman hozzászólására (») Jan 24, 2020 /
 
Mindhármótoknak köszönöm a segítséget, ki fogom próbálni a "switch...case"-t is, az "else if"-et is. És persze megnézem, nincs-e véletlenül tényleg fölös "}" jel...
(#) asch válasza Bakman hozzászólására (») Jan 24, 2020 /
 
Igen, a switch case előnye, hogy kicsit átláthatóbb, mint egy csomó if/else if/else, és ha a feltétlek "tömören" jönnek, akkor a fordító ugrótáblává tudja optimalizálni, ami még gyorsabb végrehajtást tud biztosítani. Ha túl nagy számok a case-ek, és táblát nem tud csinálni, akkor is felezve keresős megoldást tud csinálni, ami sok case esetén megintcsak gyorsabb. Persze ezek a különbségek akkor számítanak csak, ha valamit gyorsan kell ismételgetni.
(#) Frankye válasza asch hozzászólására (») Jan 24, 2020 /
 
Igen, igazából ez volt az a megoldás, amit kerestem. Mivel jelen projektben a sebesség nem kritikus, így vélhetően ez lesz a megoldás most, de ettől függetlenül az "if...else if" párosokat is fejben tartom majd.
(#) usane válasza asch hozzászólására (») Jan 24, 2020 /
 
Ht én még nem néztem az Arduino hogy fordítja, de úgy emlékszem a PIC-es XC fordítók if-nek fordíották, úgyhogy ebből a szempontból nem számított, csak átláthatóbb volt.
(#) asch válasza usane hozzászólására (») Jan 24, 2020 /
 
Pont mostanában néztem rá, az avr-gcc kimenetére, és ugrótáblát csinált. Pár felesleges ellenőrzést tett csak bele pluszban, amit ASM-ben ki tudtam volna optimalizálni.

De ha sima if-eket csinál a fordító, az is lehet hatékony, ha kisebb-nagyobb intervallumfelezős megoldást csinál. Ez ugye N esetet logN lépésben ki tud keresni, míg a lineáris keresés N lépés lesz. Persze ezt is meg lehet csinálni kézzel, de sok esetre macerás, és ha bárhol belenyúlunk, lehet előről kezdeni.

Kevés esetre viszont lehet a legegyszerűbb lineáris if-es megoldás a leggyorsabb, lehet, hogy azért hagyja úgy a fordító.

Azt is el tudom képzelni, hogy egy if-else if -es szerkezetben fel tudja ismerni a switch-case-t és akként tudja optimalizálni azt is. Ha fontos, akkor meg kell nézni a disassemblyt.
(#) roland9 válasza Lac364 hozzászólására (») Jan 24, 2020 /
 
Köszi, meg oldódott
(#) roland9 válasza Lac364 hozzászólására (») Jan 24, 2020 /
 
Köszi, ez jól fog jönni
(#) berkesandor hozzászólása Jan 26, 2020 /
 
Arduino Nano-t és Adxl345 használnék egyben.
Adxl345 adatlap

Cél az volna, hogy a nanó interrupt lábára "jelet" adjon az adxl, koppintása vagy mozgásra.
Ime a kód ami tökéletesen működik:

  1. //Barrett Anderies
  2. //Sep. 15, 2012
  3. //This code was written to learn and pracitice using I2C protocol and hardware interrupts on the Arduino. The single and double tap registers on the ADXL345 can be read without using interrupts,
  4. //simplifying the code, but as mentioned, this was written to demonstrate how interrupts can be used. Get the ADXL345 datasheet here: http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
  5. //
  6.  
  7. #include <Wire.h>                                                                //include the Wire library (necessary for I2C and SPI protocols)
  8. #include <ADXL345.h>                                                             //include the ADXL345 library (must be downloaded from: https://dl.dropbox.com/u/43421685/Website%20Content/ADXL345_library.zip and placed in Arduino --> libraries). Contains register addresses and functions.
  9.  
  10. //See datasheet for tuning instructions. I found the following settings to work well (for my application). Everything set to 0 is not being used.
  11.  
  12. #define THRESH_TAP 0x40                                                          //Tap threshold value
  13. #define OFSX 0                                                                   //X-axis offset value  
  14. #define OFSY 0                                                                   //Y-axis offset valuevalue
  15. #define OFSZ 0                                                                   //Z-axis offset value
  16. #define DUR 0x30                                                                 //Tap duration value
  17. #define LATENT 0x40                                                              //Tap Latency value
  18. #define WINDOW 0xFF                                                              //Tap window value
  19. #define THRESH_ACT 0                                                             //Activity threshold value
  20. #define THRESH_INACT 0                                                           //Inactivity threshold value
  21. #define TIME_INACT 0                                                             //Inactivity time value
  22. #define ACT_INACT_CTL 0                                                          //Axis enable control for activity and inactivity detection value
  23. #define THRESH_FF 0                                                              //Free-fall threshold value
  24. #define TIME_FF 0                                                                //Free-fall time value
  25. #define TAP_AXES B00000111                                                       //Axis control for single tap/double tap value
  26. #define BW_RATE 0                                                                //Data rate and power mode control value
  27. #define POWER_CTL B00001001                                                      //Power-saving features control value
  28. #define INT_ENABLE B01100000                                                     //Interrupt enable control value
  29. #define INT_MAP B00100000                                                        //Interrupt mapping control value
  30.  
  31. #define DATA_FORMAT B00101010                                                    //Data format control value
  32.  
  33. #define FIFO_CTL 0                                                               //FIFO control value
  34.  
  35. byte X0, X1;                                                                     //variables to store incoming data
  36. byte Y0, Y1;
  37. byte Z0, Z1;
  38. byte int_source;
  39.  
  40. volatile boolean singleTap = false;                                                        //declare and initialize boolean variables to track tap type
  41. volatile boolean doubleTap = false;
  42.  
  43. ADXL345 myACC = ADXL345();                                                        //create an instance of class ADXL345() named myACC
  44.  
  45. void setup()
  46. {
  47.   Serial.begin(9600);                                                            //join the serial buss at 9600 baud
  48.  
  49.   pinMode(4, OUTPUT);                                                            //set LED pins to output
  50.   pinMode(5, OUTPUT);
  51.   pinMode (2, INPUT_PULLUP);
  52.   pinMode (3, INPUT_PULLUP);
  53.   myACC.setTHRESH_TAP(THRESH_TAP);                                               //set registers on the ADXL345 to the above defined values (see datasheet for tuning and explanations)
  54.   myACC.setDUR(DUR);
  55.   myACC.setLATENT(LATENT);
  56.   myACC.setWINDOW(WINDOW);
  57.   myACC.setTAP_AXES(TAP_AXES);
  58.   myACC.setPOWER_CTL(POWER_CTL);
  59.   myACC.setINT_MAP(INT_MAP);
  60.   myACC.setDATA_FORMAT(DATA_FORMAT);
  61.   myACC.setINT_ENABLE(INT_ENABLE);
  62.   myACC.readINT_SOURCE(&int_source);
  63.  
  64.   attachInterrupt(0, interrupt0, FALLING);                                        //attach an interrupt on digital pin 2 (interrupt 0) for rising signal  
  65.   attachInterrupt(1, interrupt1, FALLING);                                        //attach an interrupt on digital pin 3 (interrupt 1) for rising signal
  66.  
  67.   Serial.println("Start..");
  68. }
  69.  
  70. void loop()                                                                      //main loop
  71. {
  72.  
  73.   myACC.readINT_SOURCE(&int_source);                                             //read the interrupt source register (Important! If this register is not read every iteration the interrupts on the ADXL345 will not reset, and therefore not function)
  74.  
  75. if ( singleTap == true || doubleTap == true)
  76.  
  77.     {
  78.       detachInterrupt(0);
  79.       detachInterrupt(1);
  80.       attachInterrupt(0, interrupt0, FALLING);                                        //attach an interrupt on digital pin 2 (interrupt 0) for rising signal  
  81.       attachInterrupt(1, interrupt1, FALLING);  
  82.       Serial.println("Nullaz ");
  83.       singleTap = false;                                                          //reset tap values to ensure the lights stop blinking until the next tap sets either singleTap or doubleTap to true (see below)
  84.       doubleTap = false;
  85.   }
  86. }
  87.  
  88. void interrupt0()                                                              //a RISING on interrupt pin 2 (interrupt 0) would mean a single tap (from how we have wired and configured the ADXL345), therefore, set singleTap to true
  89. {
  90.   singleTap = true;
  91.   Serial.println("Single Tap!");
  92. }
  93.  
  94. void interrupt1()                                                              //a RISING on interrupt pin 3 (interrupt 1) would mean a double tap (again, from how we have wired and configured the ADXL345), therefore, set doubleTap to true
  95. {
  96.   doubleTap = true;
  97.   Serial.println("Double Tap!");
  98. }


De..

Ezt a részt egy másik programba illeszteném be, ahol osztott interrupt van, és minden eszköz LOW interrupttal működik. Ennek is úgy kellene.
Ha a FALLING-ot LOW-ra cserélem az interrupt nem törlődik, beragad az első riasztás után. (a láb alacsony marad).
Mi okozzhatja ezt?
(#) KoblogPerGyok válasza berkesandor hozzászólására (») Jan 26, 2020 /
 
Szia!

Mit jelent, hogy osztott interrupt? Az, hogy adott eseményre több mindennek kellene lefutnia? Mert akkor annyi is lehet a megoldás, hogy a jó kódba bemásolod ezeket a függvényeket és az ottani interruptos függvényből meghívod ezeket az új interrupt0() és interrupt2() függvényeket. Ezzel felszabadulna egy-két láb is pluszban. Ez nem járható út?

Illetve a 0 és 1 ábra van kötve, de nem látom, hogy az milyen pin mód?

pinMode(4, OUTPUT); //set LED pins to output
pinMode(5, OUTPUT);
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
(#) Frankye válasza Frankye hozzászólására (») Jan 26, 2020 /
 
Ismét a korábbi (előzőleg ismertetett) problémával küzdök. Valószínű, hogy valamilyen logikai hiba van a kódomban.
Elvileg azt kellene tennie, hogy a gomb megnyomására kigyújt előbb 1, majd 2, 3, 4 LED-et (3-6 kimenetek). Az alapértelmezése pedig, hogy valamennyi sötét. A gomb a 13 kimenetre van kötve.
Íme a kód:
  1. int gert = 1;
  2. void setup() {
  3.   pinMode (13, INPUT);
  4.   pinMode (3, OUTPUT); //1
  5.   pinMode (4, OUTPUT); //2
  6.   pinMode (5, OUTPUT); //3
  7.   pinMode (6, OUTPUT); //4
  8. }
  9.  
  10. void loop() {
  11.   if (digitalRead (13) == HIGH) {
  12.     gert = gert++;
  13.       if (gert == 5) {
  14.       gert = 1;
  15.     }
  16.   }
  17.   switch (gert) {
  18.     case 1:
  19.       digitalWrite (3, LOW);
  20.       break;
  21.     case 2:
  22.       digitalWrite (4, LOW);
  23.       break;
  24.     case 3:
  25.       digitalWrite (5, LOW);
  26.       break;
  27.     case 4:
  28.       digitalWrite (6, LOW);
  29.       break;
  30.     default:
  31.       digitalWrite (3, HIGH);
  32.       digitalWrite (4, HIGH);
  33.       digitalWrite (5, HIGH);
  34.       digitalWrite (6, HIGH);
  35.       break;
  36.   }
  37. }

E helyett azonban az indítás után valamennyi LED-et bekapcsolja. (Technikai okokból a LED-ek "közös kivezetése" a pozitív tápra van kötve, tehát ahhoz, hogy bekapcsoljuk, a kimenetnek "LOW" értéket kell felvennie, a kikapcsoláshoz pedig "HIGH" értékűnek kell lennie a kimenetnek.)
(#) berkesandor válasza KoblogPerGyok hozzászólására (») Jan 26, 2020 /
 
Osztott interruptnál erre gondoltam:
Bővebben: Link

Közben beszéltem mateatek -al és a következőt okoskodtuk ki.
Az adxl folymaotosan alacsonyan tartja a pin-t és ezért folyamatosan fenáll a megszakítás.
Lényegében nem tudnak lefutni a kikapcsoló parancsok.

Igy leegyszerűsítve müködik a dolog már félig :
  1. if ( singleTap == true || doubleTap == true)
  2.  
  3.     {
  4.        PORTB &= ~_BV (5); // digitalWrite (13, LOW);
  5.  
  6.        delay(500);
  7.      
  8.       if ( singleTap ==  true )
  9.           {Serial.println("Single Tap!");}
  10.        if ( doubleTap ==  true )
  11.           {Serial.println("Double Tap!");}    
  12.     //  delay(3000);
  13.  
  14.       attachInterrupt(0, interrupt0, LOW);                                        //attach an interrupt on digital pin 2 (interrupt 0) for rising signal  
  15.      // attachInterrupt(1, interrupt1, LOW);  
  16.       Serial.println("Nullaz ");
  17.      
  18.       singleTap = false;                                                          //reset tap values to ensure the lights stop blinking until the next tap sets either singleTap or doubleTap to true (see below)
  19.       doubleTap = false;
  20.   }
  21. }
  22.  
  23. void interrupt0()                                                              //a RISING on interrupt pin 2 (interrupt 0) would mean a single tap (from how we have wired and configured the ADXL345), therefore, set singleTap to true
  24. {
  25. //  Serial.println("Single Tap!");
  26.  
  27.    PORTB |= _BV (5); // digitalWrite (13, HIGH);
  28.  
  29.   EIMSK = 0b00000000;
  30.   EIFR  = 0b00000000;  // clear flag for interrupt 0 (D2 on Uno)
  31.   singleTap = true;
  32.  
  33.    
  34. }


Ha másodpercenként pöckölgetem az adxl-t működik is a dolog, ennél sűrűbben akkor lefagy. Kiirja, hogy "Nullaz" és vége.
Következő kérdés, mi okoza a fagyást?
(#) ronin75 válasza Frankye hozzászólására (») Jan 26, 2020 /
 
Sajnos a logikában még annyira nem vagyok otthon, de én kipróbálnám más bemenetre tenni a gombot, mert a 13-as làb trükkös lehet a rajta levő ellenállás és led miatt.

" NOTE: Digital pin 13 is harder to use as a digital input than the other digital pins because it has an LED and resistor attached to it that's soldered to the board on most boards. If you enable its internal 20k pull-up resistor, it will hang at around 1.7V instead of the expected 5V because the onboard LED and series resistor pull the voltage level down, meaning it always returns LOW. If you must use pin 13 as a digital input, set its pinMode() to INPUT and use an external pull down resistor."
(#) asch válasza Frankye hozzászólására (») Jan 26, 2020 /
 
Ha a 13-as lábnak nincs lehúzó ellenállása, akkor simán magasba mehet magától is. Lehet, hogy benyomva "érzi" a program. Gombot bekötni a legegyszerűbb úgy, hogy a pint INPUT_PULLUP-ra állítod - egy alapból magas lesz a bemeneten, és a benyomott gombbal a GND-re húzod le. Így stabilan jól fog működni, és nem kell plusz ellenállást se bekötni - mivel a csipbe beépítettet tudjuk használni. Annyi más, hogy a LOW-ra kell reagálni, nem a high-ra.
(#) Istvanpisti válasza berkesandor hozzászólására (») Jan 26, 2020 /
 
Olvasd ki valamelyik adatregisztert (0x32..0x37), vagy a megszakítás forrását tároló regisztert (0x30), ezek törlik az ADXL megszakítás kimenetét.
"The interrupt functions are latched and cleared by either reading the data registers (Address 0x32 to Address 0x37) until the interrupt condition is no longer valid for the data-related interrupts or by reading the INT_SOURCE register (Address 0x30) for the remaining interrupts. This section describes the interrupts that can be set in the INT_ENABLE register and monitored in the INT_SOURCE register.

A kódban az interrupt() fv-ben ne használj olyan utasítást, aminek végrehajtása hosszú időt vesz igénybe, pl. serial.println("...");. Látom, hogy most ki van kommentelve, de ez általános tanács, minden megszakításra.
(#) berkesandor válasza Istvanpisti hozzászólására (») Jan 26, 2020 /
 
  1. myACC.readINT_SOURCE(&int_source);


Olvassa az adxl 0x30 -as regisztert.
(#) berkesandor válasza berkesandor hozzászólására (») Jan 26, 2020 /
 
  1. void loop()                                                                    
  2. {
  3.       if ( singleTap ==  true )
  4.           {Serial.println("Single Tap!");}
  5.        if ( doubleTap ==  true )
  6.           {Serial.println("Double Tap!");}    
  7.  
  8.       attachInterrupt(0, interrupt0, LOW);                                        
  9.      
  10.       singleTap = false;                                                        
  11.       doubleTap = false;
  12.  
  13.       myACC.readINT_SOURCE(&int_source);  
  14. }
  15.  
  16. void interrupt0()                                                            
  17. {
  18.  
  19.   EIMSK = 0b00000000;
  20.   EIFR  = 0b00000000;  // clear flag for interrupt 0 (D2 on Uno)
  21.   singleTap = true;


Ez a kód tökéletesen működik, valószínűsíthetően azért mert folyamotos fut az interrupt újra indítás.
(és ez igy nem igazán tetszik nekem)
(#) szeg76 válasza Frankye hozzászólására (») Jan 26, 2020 / 1
 
A ronin75 és asch által is leírt 13-as lábra tett nyomógomb az egyik oka a hibás működésnek. Állandó magas szint esetén "gert" értéke állandóan pörög egytől négyig, mindig aktívra állítva egy újabb kimenetet.
A nyomógomb kezeléséhez még egy észrevétel: nem tudod olyan rövid időre lenyomni, hogy ne kerüljön rá többször a futás, tehát egy lenyomás szinte biztosan többször végigpörgeti "gert"-et. Használj valamiféle késleltetést.

A másik ok az, hogy ebben a programban jól kezelt gombbal sem lesznek soha kikapcsolva a ledek.
A switch default esetében kapcsolnád ki őket, de sosem kerül rá a futás.
Ha "gert"-nek mondjuk 0 kezdőértéket adsz ( és nem lenyomott gombbal indítod az eszközt), akkor a default esetre legalább egyszer sor kerülhet.
Érdemes inkább a setup részben magasra állítani a kimeneteket, a default esetet pedig kihagyni.
A hozzászólás módosítva: Jan 26, 2020
(#) Kovidivi válasza asch hozzászólására (») Jan 26, 2020 /
 
Az Arduino nano-n, pro-n és uno-n biztosan a 13-as pin-en van egy soros ellenállás-LED együttes a GND-re, szóval ezt a pin-t, mint bemenet használni körülményes.
(#) Frankye válasza asch hozzászólására (») Jan 27, 2020 /
 
Neked is, ronin75-nek is köszönöm a tanácsot. Más projektekben kipróbálva a 13 lábra kötött ugyan ezen nyomógomb kitűnően tette a dolgát, de persze az Általatok javasolt megoldásokat is ki fogom próbálni.
(#) Frankye válasza szeg76 hozzászólására (») Jan 27, 2020 /
 
Köszönöm az észrevételt. Igen, az időzítés kérdése az én fejemben is megfordult.
Azt az észrevételt külön köszönöm, hogy a setup részben állítsam be a kimeneteket magasra, és akkor nem kell a default eset.
Ezek szerint tehát nem logikai bukfencet követtem el. (Ez azért megnyugtat. )
(#) Massawa hozzászólása Jan 27, 2020 /
 
Sziasztok

Van egy kis balhém. Egy berendezés vezérlését épitettem meg. Gyönyörüen müködik addig amig....
Egy Arduino Uno, egy rádugott L293-s Motoshielddel. Ahhoz van kapcsolva egy DC motor egy szervo, két érzékelö az A0/1 portokra meg 4 LED a A2..5 portokra. Az egész vezérlés 5 állapot: motor oda -vissza, szervo, motor oda- vissza. Közben meg kapcsolodnak a LEDek.
Amig fejlesztettem minden 5 Voltrol ment a motorshieldre kötve. Hetekig ment hibátlanul. Amikor beépitettem a rendszerbe és 12 V-rol az Arduino 12 V-s bemenetéröl hajtom, akkor a lefut 2 ciklus majd megáll, a feszültségek voltméterrel mérve rendben vannak (5V az arduino kártyán, 11,6V a motorshielden) a kod látszolag megáll mert a LEDek ugy maradnak ahogy az adott lépésben kell. A fogyasztás alig 0,5 A ha megy a motor, ha áll alig 30 mA. Ha viszont bedugom az USB kábelt ( program nélkül csak feszültség van rajta, akkor viszont hibátlanul megy egész nap. Mintha a fedélzeti 5 V-l lenne valami zür, de semmit nem látni - na jo a szkopot még nem vettem elö.
Mi lehet a kinja?. A stabilizátor nem melegszik, és fejlesztés közben eredetileg 2 motorral ment ( késöbb a második nem kellett.) igaz, hogy külsö 5 V-rol.
A táp 12 V/1A.
Kösz!
A hozzászólás módosítva: Jan 27, 2020
(#) tbarath válasza Massawa hozzászólására (») Jan 27, 2020 /
 
A motorról nem szed össze valami zajt?
(#) KoblogPerGyok válasza Massawa hozzászólására (») Jan 27, 2020 /
 
Helló!

A tápot kellene megnézni, mert lehet onnan kap zavart. Azonban szerintem az érzékelők körül lesz a gond. Először próbáld azok nélkül ki a rendszert, pl egy kapcsolóval. Ha úgy megy akkor van egy ötletem még.
(#) Massawa válasza KoblogPerGyok hozzászólására (») Jan 27, 2020 /
 
Az érzékelökkel nem lehet, azok optokapuk és minden 5 V-rol megy kivéve azt az egyetlen motort. De lehet hogy azt is átszerelem 5 V-ra és akkor külsö 5 V-rol hajtom. A stabi az ami az arduino lapon van.
(#) Massawa válasza tbarath hozzászólására (») Jan 27, 2020 /
 
Olyankor ragad be amikor a motor áll és a szervo megteszi a programozott mozgást. Ezután még 5 másodpercig csak a LED-k mennek és csak ezután indulna a motor. De ahogy irom 2 ciklust megtesz mielött megáll, azaz a kod rendben van ( meg akkor megy ha USB-n is kap áramot.)
Következő: »»   585 / 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