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   492 / 839
(#) morgo válasza ALI hozzászólására (») Nov 15, 2018 /
 
Próbáld meg másik USB kábellel is. A felsorolt eszközök biztosan nem fogyasztanak annyit, hogy a laptop ne tudná azt biztosítani. Szerintem a kábelben meg van törve valamelyik vezeték, és az okozza a problémát.
(#) Kovidivi válasza tbarath hozzászólására (») Nov 15, 2018 /
 
A táp izolált, ott van az optocsatoló és a primer-szekunder el van választva. Szerintem csak a szenzorok nem kapnak tápot, amikor laptopról van próbálva.
(#) Kovidivi válasza ALI hozzászólására (») Nov 15, 2018 /
 
A földek össze vannak kötve? Képet rakhatnál fel, ismételten kérem.
(#) ALI válasza Kovidivi hozzászólására (») Nov 15, 2018 /
 
Földek össze vannak kötve. Sajnos képet már nem tudok fel rakni mert be van dobozolva. Azon agyaltam, hogy ha laptopra kötöm akkor világít a fesz csökkentő és a táp ledje is. Maga ez a két egység nem húzhatja le a feszt. Mármint nem a led hanem a táp meg a fesz csökkentő.
(#) kapu48 hozzászólása Nov 15, 2018 /
 
Üdvözletem!

Van új Serial Debug Library Arduino-hoz.
Bővebben: Link
Ajánlom figyelmetekbe!

Első olvasatra jónak tűnik!
(#) Bell válasza ALI hozzászólására (») Nov 16, 2018 /
 
Az Arduino 12V-os bemenete és az USB 5V-ja nem ütközik egymással.
Az érzékelőknek nem elég az az áram, amit az ardu 5V-ja ad?
Ha elég, nem kéne külön egy combos táp.
Érdemes lenne megmérni a feszültségeket laptoppal és anélkül.
(#) ALI válasza Bell hozzászólására (») Nov 16, 2018 /
 
Táp mindenféle képp kell mivel alról megy az egész egy kazánházba. A laptopot csak egy napra akarom rá kötni hogy adatokat gyüjtsek a be hangolásra. Ezért is nem építettem bele sd kártyát.
(#) atus1981 válasza ALI hozzászólására (») Nov 16, 2018 /
 
Rádobsz egy EspEasy-vel ellátott eszközt szintillesztéssel, online monitorozhatod.
(#) sargarigo válasza ALI hozzászólására (») Nov 17, 2018 /
 
Az én véleményem az, hogy a próba idejére használj egy bedugós adaptert tápnak! Ez galvanikusan elválasztja a hálózattól. A notit sem veri le, és a szenzorok is működnek. Amúgy ha a noti megy akkuról, akkor eleve nem lehet gond.. Ellenvélemény?
A hozzászólás módosítva: Nov 17, 2018
(#) misi93 hozzászólása Nov 17, 2018 /
 
Sziasztok!
Segítséget szeretnék kérni egy RF controller jelének felhasználásában.
Led RF controller hack
Ezt megvalósítottam, így ugye tudom kiolvasni az arduinoval az RF jelet.
Ezzel nincs is baj, működik.
A problémám, az, hogy nem tudom megcsinálni azt, hogy Pl.: a bekapcsoló gombot megnyomom egyszer és felkapcsoljon egy led illetve ha újból megnyomom akkor pedig lekapcsolódjon.
Ha megnyomom folyamatosan ki be kapcsol a led, és ha elengedem akkor pedig random vagy világítva marad vagy nem.
Nem egyszer küldi ki a távírányító a jelet hanem folyamatosan.
Ezt hogyan tudom úgy megvalósítani, hogy ha megnyomom,( vagy nyomva tartom) a nyomógombot akkor kapcsoljon fel a led és ha ismét megnyomom (vagy folyamatosan nyomva tartom) kapcsoljon ki a led.
Vagy ha van egy weboldal ahol hasonlót készítettek az is érdekelne.
Itt az alábbi kód amit épp használok.

  1. // Button:   code:
  2. // power    5247489
  3. // Light    5247492
  4.  
  5. int power = 0;
  6. int light = 0;
  7.  
  8. #include <RCSwitch.h>
  9. unsigned long received;
  10. int led = 13;
  11. RCSwitch mySwitch = RCSwitch();
  12.  
  13. void setup() {
  14.   Serial.begin(9600);
  15.   mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
  16.   pinMode(led, OUTPUT);
  17.  
  18.   digitalWrite(led, LOW);
  19. }
  20.  
  21.  
  22. void loop() {
  23. if (mySwitch.available()) {
  24.   received = mySwitch.getReceivedValue();
  25.   switch (received){
  26.     case 5247489 :{
  27.       if (power==0){
  28.          digitalWrite(led,HIGH);
  29.          Serial.print("on ");
  30.          power=1 ;
  31.           }
  32.          else{
  33.           digitalWrite(led,LOW);
  34.           Serial.print("off ");
  35.           power=0;
  36.           }
  37.        }
  38.        break;
  39.     }
  40.     Serial.print("Received ");
  41.     Serial.println( mySwitch.getReceivedValue() );
  42.     mySwitch.resetAvailable();  
  43.    }
  44. }

Sagítséget Köszönöm!
A hozzászólás módosítva: Nov 17, 2018
(#) vargham válasza misi93 hozzászólására (») Nov 18, 2018 /
 
A case-en belül mentsd el az esemény időbélyegét. Ha t időn belül megint jön ugyanez az esemény, akkor dobd el.
(#) misi93 válasza vargham hozzászólására (») Nov 18, 2018 /
 
Millis függvényre gondolsz? Azzal próbálkoztam már, de szerintem az interrupt és ez a millis "összeakadhatott" és nem jól működött, de mindjárt megpróbálom megcsinálni hátha jó lesz
(#) atus1981 válasza Kovidivi hozzászólására (») Nov 18, 2018 /
 
Találtam egy jobbnak tűnő megoldást
DC konvertert szabályzom, asztalon működik is. Igaz XL4005 konverterrel.
videó
(#) Kovidivi válasza atus1981 hozzászólására (») Nov 18, 2018 /
 
Fix terhelésnél járható az út! A step down konverter is egy P-FET-et tartalmaz, szóval szinte ugyanazt készítetted. Viszont a sima PWM-nek kicsit jobb a hatásfoka, mint a step down konverternek (izzó esetén), ha ez esetleg számít valamit.
Viszont a megoldás nem éppen korrekt. A FB láb a visszacsatolás. Oda nem pwm jelet vár a vezérlő IC, és nem is DC feszültséget egy más forrásból. A kimenetről meg kell hagyni a visszacsatolást, be kell állítani a kimenő feszültséget, és a FB lábbal lehet tiltani a vezérlőt, soros diódával fel kell húzni magasra, akár PWM jellel. Ekkor lekapcsol a konverter, és az izzó fényét 0-100% között tudod módosítani. De oda RC szűrővel símított DC-t juttatni? Kicsit félmegoldásnak gondolnám. Mondjuk ha működik, akkor mindegy, az a lényeg.
A hozzászólás módosítva: Nov 18, 2018
(#) Bell válasza atus1981 hozzászólására (») Nov 18, 2018 /
 
A műveleti erősítő visszacsatolása párhuzamos RC taggal simább kimenő jelet eredményezne.
(#) misi93 válasza vargham hozzászólására (») Nov 18, 2018 /
 
Azt hiszem egy nyomógomb vezérlés kellett nekem, de ez is még csak fél megoldás, mert mindig egy másik gombot is meg kellett nyomnom hogy resetelődjön a led...
Esetleg a megoldásodra tudsz egy linket küldeni? Vagy hogyan keressek rá gugliban?
Most a kód:
  1. // Button:   code:
  2. // power    5247489
  3. // Light    5247492
  4.  
  5. int power = 0;
  6. int light = 0;
  7.  
  8. #include <RCSwitch.h>
  9.  
  10. // Variables will change:
  11. int ledState = HIGH;         // the current state of the output pin
  12. int buttonState;             // the current reading from the input pin
  13. int lastButtonState = LOW;   // the previous reading from the input pin
  14.  
  15. // the following variables are unsigned longs because the time, measured in
  16. // milliseconds, will quickly become a bigger number than can be stored in an int.
  17. unsigned long lastDebounceTime = 0;  // the last time the output pin was toggled
  18. unsigned long debounceDelay = 50;    // the debounce time; increase if the output flickers
  19.  
  20. unsigned long received;
  21. int led = 13;
  22. RCSwitch mySwitch = RCSwitch();
  23.  
  24. void setup() {
  25.   Serial.begin(9600);
  26.   mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
  27.   pinMode(led, OUTPUT);
  28.  
  29.   digitalWrite(led, ledState);
  30. }
  31.  
  32. void loop() {
  33. if (mySwitch.available()) {
  34.   received = mySwitch.getReceivedValue();
  35.   if (received == 5247489){
  36.     power = HIGH;
  37.     Serial.println("HIGH ");
  38.     }
  39.     else {
  40.     power = LOW;
  41.     Serial.println("LOW ");
  42.     }
  43.  
  44.     Serial.print("Received ");
  45.     Serial.println( mySwitch.getReceivedValue() );
  46.     mySwitch.resetAvailable();
  47.    }
  48.    //else {
  49.     //power = LOW;
  50.     //Serial.println("LOW ");
  51.     //}
  52.  
  53.     Serial.println(power);
  54.     int reading = power;
  55.     if (reading != lastButtonState) {
  56.     // reset the debouncing timer
  57.     lastDebounceTime = millis();
  58.     }
  59.   if ((millis() - lastDebounceTime) > debounceDelay) {
  60.     // whatever the reading is at, it's been there for longer than the debounce
  61.     // delay, so take it as the actual current state:
  62.  
  63.     // if the button state has changed:
  64.     if (reading != buttonState) {
  65.       buttonState = reading;
  66.  
  67.       // only toggle the LED if the new button state is HIGH
  68.       if (buttonState == HIGH) {
  69.         ledState = !ledState;
  70.         Serial.print("off ");
  71.       }
  72.     }
  73.   }
  74.   // set the LED:
  75.   digitalWrite(led, ledState);
  76.  
  77.   // save the reading. Next time through the loop, it'll be the lastButtonState:
  78.   lastButtonState = reading;
  79.    }
(#) atus1981 válasza Kovidivi hozzászólására (») Nov 18, 2018 /
 
Ha a kimenetről meghagyom az összekötést, akkor semmivel sem tudom állítani a kimenő feszt
Idézet:
„FB lábbal lehet tiltani a vezérlőt”
Tiltani?
Idézet:
„soros diódával fel kell húzni magasra, akár PWM jellel”
Tehát egy alacsony feszt beállítani és azt felhuzni?
A hozzászólás módosítva: Nov 18, 2018
(#) tbarath válasza misi93 hozzászólására (») Nov 18, 2018 /
 
Miért kell másik gomb?

Ha a debounce működik, akkor csak annyit kell csinálnod, hogy megváltoztatod a led állapotát ha túl vagy azon az időn. Noha nem tudom hogy a kódod mit is akarna csinálni ha egyszer kész lesz, de nekem ehhez a feladathoz fölöslegesen elbonyolítottnak tűnik. Ennyi nem lenne elég?

  1. if (mySwitch.available()) {
  2.         received = mySwitch.getReceivedValue();
  3.         if ((millis() - lastDebounceTime) > debounceDelay) {
  4.                 if (received == 5247489){
  5.                 ledState != ledState;
  6.                 //power != power;
  7.                 //whatever you wanna do
  8.                 digitalWrite(led, ledState);
  9.                 lastDebounceTime = millis();
  10.                 if (ledState){
  11.                         Serial.println("HIGH ");}
  12.                 else {
  13.                         Serial.println("LOW ");}
  14.         }
  15. }
(#) Kovidivi válasza atus1981 hozzászólására (») Nov 18, 2018 /
 
Az általános XL4005/LM2596 stb. FB lábbal rendelkező step down konvertert ki tudsz kapcsolni, ha a FB lábra magasabb feszültséget adsz, mint aminek ott lennie kell. Pl. 1.25V kell az IC-nek, akkor ha oda minimum 1.3V-ot adsz, letilt, kikapcsol.
A kimenő feszültség le van osztva két ellenállással, a leosztott feszültség megy az FB lábra. Ha a kimenő feszültség kisebb, mint amit beállítottunk, akkor a FB lábra is kisebb fesz. jut, mint pl. az 1.25V, és elkezdi az IC emelni a kitöltési tényezőt, növekszik a kimeneten a feszültség. Ha magasabb a kimenő fesz., akkor csökkenti a kitöltési tényezőt, vagy leáll az IC.
Az Arduino kimenetével soros 220Ohm (védve az Arduinot), vele soros 1N4148, vagy 1N4001, amit találsz, ez pedig mehet az IC FB lábára. A nyákon levő potival beállítod a maximális feszültséget. Ha az Arduino lábára PWM jelet állítasz be, az izzóra jutó max. feszültséget fogod megszaggatni a PWM ütemében. Az eredmény: fényerőszabályzás.
(#) misi93 válasza tbarath hozzászólására (») Nov 18, 2018 /
 
Ilyen távirányítóm van.
Karácsonyra lesz egy autó eleje és ennek az autónak index / fényszórók/ hűtőrács ki lesz ledezve és ezzel a távirányítóval szeretném vezérelni ezeket a ledeket (különböző módokat leprogramozni: villog, átmenet, felválltva villog... stb)
jól kigyomláltad a programot
a lényeg annyi, hogy ha a távirányítón megnyomok egy gombot az az arduino-n egy kódsorozat formájában jelenik meg. (jelen esetben 5247489 - power gomb) és ezt a kódot hozzá szeretném rendelni valamilyen funkcióhoz amit azt hittem egyszerűbb lesz...
Alábbi képen az látható, hogy folyamatosan nyomom a gombot akkor így küldi a kódot.
Megnézem a kódot hátha jó lesz nekem köszönöm!
A hozzászólás módosítva: Nov 18, 2018
(#) Kovidivi válasza Kovidivi hozzászólására (») Nov 18, 2018 /
 
Amit elfelejtettem: azért veszélyes a nem megfelelő módon átalakítani a step dwon konvertert, mert ha a FB lábra valamilyen ok miatt (hardware-es vagy software-es hiba) kisebb fesz.-et kapcsolunk, mint kellene, akkor elkezd az IC egyre nagyobb kitöltési tényezővel dolgozni, és a bemenő feszültség megjelenik a kimeneten (kicsit kevesebb). Míg a soros 1N4148-as megoldással a kimenő feszültség korlátozott, bajt nem tudunk csinálni, könnyen kiszámítható az eredmény, az áramkör viselkedése.
(#) tbarath válasza misi93 hozzászólására (») Nov 18, 2018 /
 
A kódot kigyomláltam, ja Igazából csak az elvet akartam megmutatni, hogy szerintem hogy lenne ez jó, és a kód talán érthetőbb, mint a duma.
Mert ugye ha van jel akkor azt én kiolvasnám mindenképp, de csak akkor foglalkoznék vele érdemben, ha az előző jel óta eltelt X idő (mint a sw "debounce"). És ha ennyi eltelt, akkor vizsgálom hogy mi jött, és ha az amire reagálni akarok akkor csinálom amit kell. Nyilván lehet ez sokkal összetettebb is mint egy LED ki és bekapcsolása, mert azt simán megoldod egy boolean változóval, míg irányjelzőnél 4 állapot lehetséges (minden kikapcs, balra villog, jobbra villog, és a "négyes index"), ott változtatáskor le kell tárolnod hogy az adott oldal villog-e, és egy külön ciklusban külön időzítéssel kapcsolod be és ki a lámpákat.

De mindegy is, túlbeszéltem, a kódom nem is biztos hogy jól működik, még az se biztos hogy fordul, csak leírtam hogy hogy kezdenék neki. Illetve még egyszer átnézve biztosan rossz a kód, az if(received) ágat nem zártam le és az alatta levő kódsorokat nem húztam be.
(#) misi93 válasza tbarath hozzászólására (») Nov 18, 2018 /
 
Próbálkozok vele igen
Az a baj, hogy minden ciklus végén ki kell resetelnem ezt: "mySwitch.available".
Mármint nem baj gondolom, de ezáltal a kód is csak egy ciklus erejéig van meg.
Úgy érzem túl nagy fába vágtam a fejszém ez már nekem túl bonyolult
Köszönöm a segítséget próbálkozok vele
(#) tbarath válasza misi93 hozzászólására (») Nov 18, 2018 /
 
Hát ha ki kell akkor reseteld ki.
  1. if (mySwitch.available()) {
  2.         received = mySwitch.getReceivedValue();
  3.         if ((millis() - lastDebounceTime) > debounceDelay) {
  4.                 if (5247489 == received){
  5.                         ledState != ledState;
  6.                         //power != power;
  7.                         //whatever you wanna do
  8.                         digitalWrite(led, ledState);
  9.                         lastDebounceTime = millis();
  10.                         if (ledState){
  11.                                 Serial.println("HIGH ");}
  12.                         else {
  13.                                 Serial.println("LOW ");}
  14.                 }
  15.         }
  16.         mySwitch.resetAvailable();
  17. }


Sose használtam még ezt a libet, úgy gondoltam hogy hasonló, mint a Serial.available(), ha nincs jel akkor 0 a válasz, egyébként nem. De ha a basic példakód is tartalmazza a reset-elést (Bővebben: Link), akkor gondolom kell bele. Gondolom ezzel állítja be ismét az interrupt-ot, vagy tudomisén...
A hozzászólás módosítva: Nov 18, 2018
(#) atus1981 válasza Kovidivi hozzászólására (») Nov 18, 2018 /
 
Van egy érdekesség. A gyári kialakításban akárhova tekerem a potit, mindig 0.8 lesz a kettes-FB lábon. Nem lehet, hogy az áramra szabályoz?
(#) Kovidivi válasza atus1981 hozzászólására (») Nov 19, 2018 /
 
Pont ez a lényege! A FB lábon mindig 0.8V lesz. Ha ott kevesebb van, addig emeli az IC a kitöltési tényezőt, ami által magasabb lesz a kimenő feszültség, tehát a feszültség osztó közepén is emelkedik a leosztott feszültség, amíg az FB lábon ismét 0.8V nem lesz. Ez a visszacsatolás lényege. Amikor tápot adsz a konverternek, a kimeneten nincs feszültség, a FB lábon is 0V van, és az IC elkezd működni. Ha lekötöd a FB lábat GND-re, az IC max. kitöltési tényezővel fog menni, ha 0.8V fölé húzod, leáll.
A hozzászólás módosítva: Nov 19, 2018
(#) kapu48 válasza tbarath hozzászólására (») Nov 19, 2018 /
 
Ez a program nincsen elégé átgondolva a vázolt feladathoz!

Mivel 7 szer olvas 0-át, és csak 1-szer van a vizsgált eredmény.
Nagy valószínűséggel igen ritkán fogja azt eltalálni, beállítót időnkénti 1 vizsgálattal.
(#) tbarath válasza kapu48 hozzászólására (») Nov 19, 2018 /
 
És akkor mit kellene csinálni? Komolyan kérdezem, mert ha 0 jön eredménynek akkor mit csinálsz? Szerintem csak azt tudod, hogy eldobod, és várod a következő jelet, pont mint a kód amit írtam.
Amúgy azt se tudjuk, hogy ezt sok nulla és néha egy jel kombót milyen kód adja le...
(#) Kovidivi hozzászólása Nov 19, 2018 /
 
Sziasztok!
Végre sikerült behatárolni a hibát, szeretnék segítséget kérni. Arduino nano-val dolgozok. Egyszerű a kód, egy 64bites 0-nál kisebb számot tartalmazó változót átrakok egy 32bites-be, majd elosztom egy pozitív számmal. A lényeg, hogy a program valamiért nem a signed, hanem az unsigned változóval számol!
  1. void setup() {
  2.   Serial.begin(115200);
  3.   Serial.println("szevasz");
  4. }
  5.  
  6. void loop()
  7. {
  8. signed long temp2;
  9. unsigned long oszto=32;
  10. signed long long elso=-10240000;
  11.  
  12. //temp2=(signed long)(elso);
  13. temp2=(elso);
  14. Serial.println(temp2);
  15. temp2=(signed long)(temp2)/oszto;
  16. Serial.println(temp2);
  17.  
  18. while(1);
  19. }

Soros monitoron:
"szevasz
-10240000
133897728"

Ha az "elso" valtozot unsigned-ként íratom ki soros monitorra, akkor 4284727296-ot kapok, és ezt osztja el 32-vel, így kapom a 133897728 eredményt. Nem értem miért az unsigned long long-gal számol.
Aki akarja, le is tudja futtatni, és próbálkozni, miért nem a megfelelő eredményt kapom?
Float számokkal nem szeretnék számolni, és tárhelyem se nagyon maradt (1K-t fogyasztana pluszban). Nekem ez úgy tűnik, mintha az Arduino IDE hibás lenne, a signed long long-ot nem tudja megfelelően signed long-ba átrakni, és ahogy néztem, semmit nem tud signed long long-gal normálisan számolni. Ti mit gondoltok?
Köszi.
A hozzászólás módosítva: Nov 19, 2018
(#) tbarath válasza Kovidivi hozzászólására (») Nov 19, 2018 /
 
Próbáld meg az osztót unsigned long helyett signed long-ként.
És az a "signed long long" is fura nekem
Következő: »»   492 / 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