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   394 / 839
(#) kegyetlen19 válasza Tasznka hozzászólására (») Nov 13, 2017 /
 
Köszi a gyors válaszokat.
Andyka. Működik, de nem tökéletes, ha a 10889298 kódos távirányítót használva jó, de a 2819073 kódost használva megzavaródik a „technika”. Tehát a VAGYban az első feltétel nem jó.
Tasznka. A „raindit” az egy változó (van belőle 1-2-3 de még lehet lesz több is) nem igaz és hamis állítás, ha jól értelmezem amit írtál.
Még elég kezdő vagyok ebben a programírásban.
Csatolom az egész kódot, hátha így jobban látható mit akarok csinálni.
Tehát a kérdés maradt, hogy használjam a VAGY utasítást, vagy más utasítást ami jó lehet? Válaszokat köszönöm.
  1. // Proba 1.2v  (vegleges???)
  2. // Arduino 1.6.6
  3. // Udvari vilagitas. 433Mhz taviranyitoval. (autos)
  4. // Itthon, a hazon van.
  5.  
  6. #include <RCSwitch.h>
  7.  
  8. RCSwitch mySwitch = RCSwitch();
  9. // const int nygomb1 = 5;     //nyomogomb ledmodul
  10. // const int nygomb2 = 7;     //nyomogomb fenyveto
  11. // const int rele = 10;       //fenyveto rele-je
  12. const int ledlampa = 9;       //Vezerelt 9-es kimenet
  13. int led=0;                    //Ledmodul fenyerejenek allapota
  14. int feny=0;                   //Fel vagy le fenyeroallitas valtozoja
  15. int ido=0;                    //Keslettetett kikapcsolashoz az ido
  16. int raindit=0;                //Be-Ki kapcsolas es a rainditas valtozoja
  17.  
  18. void setup() {
  19. pinMode(ledlampa, OUTPUT);
  20. // pinMode(rele, OUTPUT);
  21. // pinMode(nygomb1, INPUT);   //nyomogomb ledmodul
  22. // pinMode(nygomb2, INPUT);   //nyomogomb fenyveto
  23. mySwitch.enableReceive(0);    //Receiver on inerrupt 0 => pin #2
  24. Serial.begin(9600);           //a 2-es pin a bemenet (RF-is modultol)
  25.     }
  26.  
  27. void loop() {
  28.   analogWrite(9, led);        //ledlampa fenyenek frissitese
  29.     Serial.print(" raindit: ");
  30.     Serial.print(raindit, DEC);
  31.     Serial.print("     ido: ");
  32.     Serial.print(ido, DEC);
  33.     Serial.print("     led: ");
  34.     Serial.print(led, DEC);
  35.     Serial.print("     feny: ");
  36.     Serial.println(feny, DEC);
  37.  
  38. //RF taviranyito kod = 10889298 autos
  39. //RF taviranyito kod = 2819073 ledes
  40.  
  41. if (mySwitch.available()) {
  42.     int value = mySwitch.getReceivedValue();
  43.     //if (mySwitch.getReceivedValue() == 2819073 && raindit == 0 ) {   // BE-kapcsolas
  44.     if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 0))  {   // BE-kapcsolas
  45.         led=5;           //4% fenyero
  46.         analogWrite(9, led);
  47.         feny=1;           //aktiv a fenyero felfele
  48.         raindit=1;        //nincs KI-kapcsolas es rainditas
  49.         delay(100);  
  50.         }
  51.     if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 2)) {   // KI-kapcsolas
  52.         led=250;
  53.         analogWrite(9, led);
  54.         feny=2;
  55.         ido=0;           //idozito nullazasa
  56.         raindit=1;       //nincs KI-kapcsolas es rainditas
  57.         delay(100);
  58.         }
  59.     if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit == 3)) {    //rainditas
  60.         ido=1;           //idozito ujrainditasa
  61.         led=255;         //100% fenyero
  62.         analogWrite(9, led);
  63.         delay(1000);
  64.     }    
  65.     mySwitch.resetAvailable();
  66.     delay(50);
  67.     }
  68.  
  69. if (feny==1 && led<255){
  70.     led=led+5;      //fenyeroszabajozasa FEL-fele
  71.      delay(50);     //fenyerovaltozas sebessege
  72.     }
  73.      
  74. if (led==255){      //ha teljes a fenyero
  75.     feny=0;         //leall a fenyeroseg allitas (100%-on van)
  76.     ido++;          //kesleltettet kikapcsolas inditasa
  77.     raindit=2;      //aktiv a KI-kapcsolas
  78.      delay(50);     //50ms x 1000(ido) = 50mp a kesleltetett idozites
  79.     }
  80.    
  81. if (ido==600){      //kesleltettet kikapcsolas 1000=50 masodperccel
  82.     led=170;         //ledlampa vilogtatasa 2-szer
  83.      analogWrite(9, led);
  84.      delay(100);
  85.     led=255;
  86.      analogWrite(9, led);
  87.      delay(100);
  88.     led=170;
  89.      analogWrite(9, led);
  90.      delay(100);
  91.     led=255;
  92.      analogWrite(9, led);
  93.      delay(200);
  94.     ido=0;         //idozito nullazasa
  95.     feny=3;        //aktiv a fenyero lefele
  96.     raindit=3;     //aktiv a rainditas
  97.     }  
  98.  
  99. if (feny==2 && led>0){  //nyomogombra
  100.     led=led-5;       //fenyeroszabajozas LE-fele (alap 5)
  101.      delay(50);      //fenyerovaltozas sebessege
  102.      if (led==0){    //teljes elhalvanyulaskor
  103.       feny=0;
  104.       raindit=0;
  105.      }
  106.     }
  107. if (feny==3 && led>0){  //idozitore
  108.     led=led-1;       //fenyeroszabajozas LE-fele (alap 1)
  109.      delay(50);      //fenyerovaltozas sebessege
  110.      if (led==0){    //teljes elhalvanyulaskor
  111.       feny=0;
  112.       raindit=0;
  113.      }
  114.     }
  115. }
(#) tbarath válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Szerintem így kellene:
  1. if ( ( (mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298)  ) && (raindit == 0))


Vagy így:
  1. if (
  2.                 ((mySwitch.getReceivedValue() == 2819073) && (raindit == 0))
  3.                 ||
  4.                 ((mySwitch.getReceivedValue() == 10889298) && (raindit == 0))
  5.         ){
  6.         //whatever
  7.         }


Ugyanis az kell neked, hogy igaz legyen a feltétel ha a raindit értéke 0 és a kapott kód 2819073 vagy 10889298
(#) kapu48 válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Szerintem igy:
  1. if (mySwitch.available()) {
  2.     int value = mySwitch.getReceivedValue();
  3.    
  4.     if ((value == 2819073) || (value == 10889298))  {   // BE-kapcsolas
  5.       if(raindit == 0){
  6.         led=5;           //4% fenyero
  7.         analogWrite(9, led);
  8.         feny=1;           //aktiv a fenyero felfele
  9.         raindit=1;        //nincs KI-kapcsolas es rainditas
  10.         delay(100);
  11.       }
  12.       else if (raindit == 1) {  
  13.      
  14.       }
  15.       else if (raindit == 2) {   // KI-kapcsolas
  16.         led=250;
  17.         analogWrite(9, led);
  18.         feny=2;
  19.         ido=0;           //idozito nullazasa
  20.         raindit=1;       //nincs KI-kapcsolas es rainditas
  21.         delay(100);
  22.       }
  23.       else if (raindit == 3) {    //rainditas
  24.         ido=1;           //idozito ujrainditasa
  25.         led=255;         //100% fenyero
  26.         analogWrite(9, led);
  27.         delay(1000);
  28.       }  
  29.     mySwitch.resetAvailable();
  30.     delay(50);
  31.     }
  32.    
  33.   }
(#) martin96 hozzászólása Nov 13, 2017 /
 
Sziasztok!
Vettem két attiny85-öt. UNO-val programoztam volna fel, de véletlenül az egyiknél external 16MHz-et választottam ki.
Most meg bootloadernél ezt írja ki: avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Meg lehet valahogy még menteni ezt?
A másiknál már internalt választottam az működik is tökéletesen.
(#) proba válasza martin96 hozzászólására (») Nov 13, 2017 /
 
Ha kötsz rá külső órajelet már látni fogja.(szerintem)
(#) martin96 válasza proba hozzászólására (») Nov 13, 2017 /
 
Kristály nélkül is lehetséges lenne? Az arduino adna ki valamelyik kimenetén 16MHz-et.
(#) Tasznka válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
  1. if (mySwitch.getReceivedValue() == 2819073 && raindit == 0 )

raindit == 0 -nál ami nálam (!raindit) ami ua. feltételből indultam ki,hogy az csak 0 -ként jó

Talán ez jó lesz:
  1. // Proba 1.2v  (vegleges???)
  2. // Arduino 1.6.6
  3. // Udvari vilagitas. 433Mhz taviranyitoval. (autos)
  4. // Itthon, a hazon van.
  5.  
  6. #include <RCSwitch.h>
  7.  
  8. RCSwitch mySwitch = RCSwitch();
  9. // const int nygomb1 = 5;     //nyomogomb ledmodul
  10. // const int nygomb2 = 7;     //nyomogomb fenyveto
  11. // const int rele = 10;       //fenyveto rele-je
  12. const int ledlampa = 9;       //Vezerelt 9-es kimenet
  13. int led=0;                    //Ledmodul fenyerejenek allapota
  14. int feny=0;                   //Fel vagy le fenyeroallitas valtozoja
  15. int ido=0;                    //Keslettetett kikapcsolashoz az ido
  16. int raindit=0;                //Be-Ki kapcsolas es a rainditas valtozoja
  17.  
  18. void setup() {
  19. pinMode(ledlampa, OUTPUT);
  20. // pinMode(rele, OUTPUT);
  21. // pinMode(nygomb1, INPUT);   //nyomogomb ledmodul
  22. // pinMode(nygomb2, INPUT);   //nyomogomb fenyveto
  23. mySwitch.enableReceive(0);    //Receiver on inerrupt 0 => pin #2
  24. Serial.begin(9600);           //a 2-es pin a bemenet (RF-is modultol)
  25.     }
  26.  
  27. void loop() {
  28.   analogWrite(9, led);        //ledlampa fenyenek frissitese
  29.     Serial.print(" raindit: ");
  30.     Serial.print(raindit, DEC);
  31.     Serial.print("     ido: ");
  32.     Serial.print(ido, DEC);
  33.     Serial.print("     led: ");
  34.     Serial.print(led, DEC);
  35.     Serial.print("     feny: ");
  36.     Serial.println(feny, DEC);
  37.  
  38. //RF taviranyito kod = 10889298 autos
  39. //RF taviranyito kod = 2819073 ledes
  40.  
  41. if (mySwitch.available()) {
  42. long value = mySwitch.getReceivedValue();
  43.                 //  int value = mySwitch.getReceivedValue();
  44.  // innen a value-t használd,mert minden mySwitch.getReceivedValue() újraolvas,így bejöhet másik érték,mielőtt lefutna
  45.  // Az int value stimmel??? mert az int általában 2 byte de itt mintha nagyobb értékek lennének
  46.     if (((value == 2819073) || (value == 10889298)) && (raindit == 0))  {   // BE-kapcsolas
  47.         led=5;           //4% fenyero
  48.         analogWrite(9, led);
  49.         feny=1;           //aktiv a fenyero felfele
  50.         raindit=1;        //nincs KI-kapcsolas es rainditas
  51.         delay(100);
  52.         }
  53.     if (((value == 2819073) || (value == 10889298)) && (raindit == 2))  {   // KI-kapcsolas
  54.         led=250;
  55.         analogWrite(9, led);
  56.         feny=2;
  57.         ido=0;           //idozito nullazasa
  58.         raindit=1;       //nincs KI-kapcsolas es rainditas
  59.         delay(100);
  60.         }
  61.     if (((value == 2819073) || (value == 10889298)) && (raindit == 3))  {    //rainditas
  62.         ido=1;           //idozito ujrainditasa
  63.         led=255;         //100% fenyero
  64.         analogWrite(9, led);
  65.         delay(1000);
  66.     }  
  67.     mySwitch.resetAvailable();
  68.     delay(50);
  69.     }
  70.  
  71. if (feny==1 && led<255){
  72.     led=led+5;      //fenyeroszabajozasa FEL-fele
  73.      delay(50);     //fenyerovaltozas sebessege
  74.     }
  75.      
  76. if (led==255){      //ha teljes a fenyero
  77.     feny=0;         //leall a fenyeroseg allitas (100%-on van)
  78.     ido++;          //kesleltettet kikapcsolas inditasa
  79.     raindit=2;      //aktiv a KI-kapcsolas
  80.      delay(50);     //50ms x 1000(ido) = 50mp a kesleltetett idozites
  81.     }
  82.    
  83. if (ido==600){      //kesleltettet kikapcsolas 1000=50 masodperccel
  84.     led=170;         //ledlampa vilogtatasa 2-szer
  85.      analogWrite(9, led);
  86.      delay(100);
  87.     led=255;
  88.      analogWrite(9, led);
  89.      delay(100);
  90.     led=170;
  91.      analogWrite(9, led);
  92.      delay(100);
  93.     led=255;
  94.      analogWrite(9, led);
  95.      delay(200);
  96.     ido=0;         //idozito nullazasa
  97.     feny=3;        //aktiv a fenyero lefele
  98.     raindit=3;     //aktiv a rainditas
  99.     }
  100.  
  101. if (feny==2 && led>0){  //nyomogombra
  102.     led=led-5;       //fenyeroszabajozas LE-fele (alap 5)
  103.      delay(50);      //fenyerovaltozas sebessege
  104.      if (led==0){    //teljes elhalvanyulaskor
  105.       feny=0;
  106.       raindit=0;
  107.      }
  108.     }
  109. if (feny==3 && led>0){  //idozitore
  110.     led=led-1;       //fenyeroszabajozas LE-fele (alap 1)
  111.      delay(50);      //fenyerovaltozas sebessege
  112.      if (led==0){    //teljes elhalvanyulaskor
  113.       feny=0;
  114.       raindit=0;
  115.      }
  116.     }
  117. }
(#) kegyetlen19 válasza kapu48 hozzászólására (») Nov 13, 2017 /
 
- Tbarath. Az első válaszod nem jó, error-t ír rá. A második válaszod ugyanúgy működik mint Andyka válasza.
- Kapu48. A te verziód lett a nyerő. Köszönöm szépen. Igaz a VALUE azonosítást nem fogadta el. Maradt az eredeti: if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298))
Köszönöm a hozzászólásokat minden.
(#) kapu48 válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Tansznka vette észre, hogy az int kicsi oda!
Használd a long definiciót:
unsigned long value = mySwitch.getReceivedValue();
vagy csak:
long value = mySwitch.getReceivedValue();
Amelyiket elfogadja?

és maradj a if(value...) vizsgálatánál!
A hozzászólás módosítva: Nov 13, 2017
(#) kegyetlen19 válasza Tasznka hozzászólására (») Nov 13, 2017 /
 
Köszönöm, ez a megoldás is tökéletesen működik.
(#) kegyetlen19 válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
És még 3db-al is működik.
if (((value == 2819073) || (value == 2819076) || (value == 10889298)) && (raindit == 0))
(#) Tasznka válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Amúgy ezt nézd át,és ami a legfontosabb,hogy ne sajnáld a zárójeleket feltételvizsgálatoknál,mert pl. itt ha value = 2819073,és a raindit = 2 ,akkor a

if ((value == 2819073) || (value == 10889298) && (raindit == 2))
hamis lesz,mert a predencia szabály miatt a (value == 10889298)) && (raindit == 2) hamis lesz.

Ha berakod a zárójelet,akkor jó lesz
if (((value == 2819073) || (value == 10889298)) && (raindit == 2))

(#) tbarath válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Ami ugye az szinte az én válaszom, csak az adott lib működésétől függ
mert ha a mySwitch.getReceivedValue() mindig a legutolsó kapott értéket adja vissza, akkor működik. Ha nem, akkor előbb el kell pakolni változóba.

De maga az if struktúra ugyanaz.
(#) csatti2 válasza tbarath hozzászólására (») Nov 14, 2017 /
 
Ja, csak épp a függvényhívás drága. Eszi a vermet ezerrel, sok CPU idő kell neki, ráadásul ha nem változóban van a végeredmény hanem származtatott akkor még számolni is kell vele (még több CPU). Ha később vmiért megváltozik a működése és változhat menet közben az értéke, akkor pedig borul a programlogika.

Azaz, ne hívogass feleslegesen, tárold inkább az értéket.
(#) Tasznka válasza Tasznka hozzászólására (») Nov 14, 2017 /
 
Bocsika,de ezt a hozzászólásomat ne vegyétek figyelembe,mert mást írtam,mint amit szerettem volna...de a link az jó .Picit el voltam varázsolva

Mint Csatti2 és én
Idézet:
„// innen a value-t használd,mert minden mySwitch.getReceivedValue() újraolvas,így bejöhet másik érték,mielőtt lefutna”
javasoltuk,hogy átmeneti,fix változókba kell kiolvasni az értéket,mert ha az if -ek között jön be az,ami a kövinél is jó,akkor mind a kettő lefut,és azt fogja csinálni,amit nem szeretnél
(#) tbarath válasza csatti2 hozzászólására (») Nov 14, 2017 /
 
Jogos.
(#) krauszkrisztian hozzászólása Nov 14, 2017 /
 
Egy CNC projektbe lehet, hogy csak egy L293D-t használok?
Ha nem, akkor lehet egy másodikat egy ULN2003AGP-vel helyettesíteni?
DVD meghajtó léptető motorát kellene vezérelnie.
Előre is köszönöm!
(#) Bakman válasza krauszkrisztian hozzászólására (») Nov 14, 2017 /
 
Amelyien kicsi az a motor, bármi meghajtja.
(#) krauszkrisztian válasza Bakman hozzászólására (») Nov 14, 2017 /
 
Bekötni hogyan kell a másodikat?
Vagy az arduino kódon mit kell változtatni?
Itt a kód meg a video.
Ha esetleg valamit kell rajta változtatni, legyen szíves valaki írja meg nekem!
Én csak az elöbbiekben leírt IC-ket tudom használni.
(#) Fizikus válasza krauszkrisztian hozzászólására (») Nov 15, 2017 /
 
Szia!
Itt van 2 pelda leptetomotor hajtasra ULN2003-al, peldaprogrammal:
Instructables link
4tronix link
(#) Georgee hozzászólása Nov 15, 2017 /
 
Sziasztok! Arduino témában még nagyon új vagyok, és elakadtam. (PIC-ben már van rutinom). Építettem az autómba egy fedélzeti computert, aminek a lelke arduino nano. Viszont szeret váratlanul lefagyni. Van amikor az indítás pillanatában, amikor a kijelzőn 1-2 betű fut be az üdvözlő szövegből, van amikor menet közben 1-5 percen belül. Magát a modult már többen utánépítették, így a szoftverhibát kimerem zárni. Ötlet van valakinek, mitől fagyhat le? Van rajta egy led ami amíg fut az eszköz addig villog, viszont a fagyás pillanatától sötét marad és nem villog. Álló motornál is lefagy, illetve járónál is. Merre induljak el szerintetek?
(#) berkesandor válasza Georgee hozzászólására (») Nov 15, 2017 /
 
Kellene egy jobb leírás a HW-ről.
(#) Georgee válasza berkesandor hozzászólására (») Nov 15, 2017 /
 
Feltettem a panelról a képet illetve a kapcsolási rajzot is.
(#) kiborg válasza Georgee hozzászólására (») Nov 15, 2017 /
 
Szia!
A 7809 elé(és a dióda közé) egy 100µF és 100nF-os kondi és utána pedig egy 100nF-os kondi.
Hiányzik a stabil feszültség/szűrés. Próba szerencse.
(#) Georgee válasza kiborg hozzászólására (») Nov 15, 2017 /
 
Nekem is ez volt a következő tippem. Viszont, ha gyújtás nélkül laptop USB-ről használom akkor is fennáll a szituáció.
(#) kiborg válasza Georgee hozzászólására (») Nov 15, 2017 /
 
Esetleg a Reset láb felhúzó ellenállása rajta van a nyákon? Egy külső felhúzó ellenállás?
(#) Georgee válasza kiborg hozzászólására (») Nov 15, 2017 /
 
Délután kibontom megnézem. Kínából rendeltem egy ESD zacsiba érkezett. Így nem tartom kizártnak a fizikai sérülést is. Egyébként a LED-nek üzem közben kell villognia?
(#) kiborg válasza Georgee hozzászólására (») Nov 15, 2017 /
 
A 4 led közül melyikre gondolsz,ami villog? RX/TX a soros adatkapcsolat során villog, a power tápfesz esetén, míg az L jelűt a felhasználói program határozza meg.
Tehát elvileg lehet villoghat is.Meg nem is.

De most nézem: Miért használod a 7809-et? Miért nem 7805 és akkor kapásból a 5V- ki/bemenetre kötnéd, így kihagynád a játékból az Arduino saját feszültségstabilizátorát?
A hozzászólás módosítva: Nov 15, 2017
(#) Georgee válasza kiborg hozzászólására (») Nov 15, 2017 /
 
Az volt a kapcsoláson, az került bele a 7809, de szerintem kiszedem, és direktbe hagyom a tápot a generátor ha jár is, akkor is 14V körül lesz a feszültség. Az L jelű led villog nekem addig, amíg le nem fagy az eszköz.
(#) vargaf válasza Georgee hozzászólására (») Nov 15, 2017 /
 
Miért nem mellékeled a programot? Abból ki lehetne olvasni miért villog az L LED és hogyan kell működni a kapcsolásnak.
Következő: »»   394 / 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