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   139 / 852
(#) vicsys válasza erdeidominik1999 hozzászólására (») Júl 26, 2015 /
 
Igen, de kalkuláld bele a diódákon eső feszt.
(#) ALI hozzászólása Júl 26, 2015 /
 
Sziasztok! Hogy lehet azt megoldani, hogy van egy mért hőmérséklet, szeretnék be állítani egy min
értéket ez a mért lenne és egy max-ot az pedig 10-el felette legyen?
Illetve az LM 35 egész fokban tud csak mérni?

Előre is köszi
(#) vicsys válasza ALI hozzászólására (») Júl 26, 2015 /
 
Az LM35-nek analóg kimenete van, nem? Miért csak egész fokokban mérne...?
A mért értékedet vegye fel egy "min" nevű változó.
Így: min=mért érték és max=min+10
-ha jól értettem amit akarsz...
(#) ALI válasza vicsys hozzászólására (») Júl 26, 2015 /
 
Köszi. Igen jól értetted mit akarok. Rossz volt a kód amit használtam ezért mért egészet.
(#) erdeidominik1999 válasza vicsys hozzászólására (») Júl 26, 2015 /
 
A diódákon eső fesz elèg arra, hogy mivel ugye a trafó 6v-os az arduinó meg 5 hogy ne nyírja ki az ardut? Illetve a trafó után milyen kondi kéne? És ezt program ügyileg hogyan lehetne megoldani, hogy valós érték legyen. A másik kérdés hogy a trafó kissebb feszen is megy, tehát ha mondjuk csak 210v van, akkor is tudom mérni? Előre is köszi!
(#) ALI válasza ALI hozzászólására (») Júl 26, 2015 /
 
Nem igazán megy ez a min-max. Be tennéd nekem ebbe a kódba?
  1. float temp;
  2. int tempPin = 1;
  3.  
  4. void setup()
  5. {
  6.   Serial.begin(9600);
  7. }
  8.  
  9. void loop()
  10. {
  11.   temp = analogRead(tempPin);
  12.   temp = temp * 0.48828125;
  13.   Serial.print("TEMPRATURE = ");
  14.   Serial.print(temp);
  15.   Serial.print("*C");
  16.   Serial.println();
  17.   delay(1000);
  18. }
(#) szitko válasza ALI hozzászólására (») Júl 26, 2015 /
 
  1. float temp;
  2. int tempPin = 1;
  3. float min, max;
  4.  
  5. void setup()
  6. {
  7.   Serial.begin(9600);
  8. }
  9.  
  10. void loop()
  11. {
  12.   temp = analogRead(tempPin);
  13.   temp = temp * 0.48828125;
  14.   min = temp;
  15.   max = min + 10;
  16.   Serial.print("TEMPRATURE = ");
  17.   Serial.print(temp);
  18.   Serial.print("*C");
  19.   Serial.println();
  20.   delay(1000);
  21. }

Bár az nem világos, hogy a mért érték kell legyen a "min", vagy a számított... Jele esetben a számított értéket veszi fel.
(#) ALI válasza szitko hozzászólására (») Júl 26, 2015 /
 
Köszi szépen ez így jó lesz.
(#) Kera_Will válasza erdeidominik1999 hozzászólására (») Júl 26, 2015 /
 
Számold ki mekkora felbontásod van az AD bemenetén 5V / 10 bit esetén 1 bitre mekkora feszültség esik.
Ezután számold ki a trafó áttétele alapján mekkora feszültség változásnak felel ez meg a 230V hálózatnál.Persze némi szorzó tényező beleszól , mert egyenirányítás után vagyunk.
Effektívből csúcs értéket fogsz kapni mert a kondenzátor csúcsra töltődik.
Sajnos 6 voltos secunder után pufferelve kb.: 9V lesz a kimeneten tehát oda 1 ellenállás osztó is kell akkor közel 4,5-5V lesz a bemeneten.De a nyitó irányú diódák miatt lesz állandó feszültség esés is.Ezek után vissza lehet számolgatni az arányokat.
Nagyon durván saccolva.
10bit esetén 1024 részre osztod az 5 voltot : 4.8mV
ez 2szer mert 9 voltot osztottunk 2vel ... akkor ~ 10mV van a bemeneten.
Persze ez nem lesz mert erre nem nyit ki a dióda.
greazt esetén kb.: 1.4 V alatt nem nyit ki ... így kb 1.4*(230/6) volt a legkisebb fesz amit mérni tudsz. kb: 50V váltó.Tehát alulról kissé nyomott lesz a skála.
1 utas egyen írányítás esetben kb.: 25V váltót tudsz mérni mert akkor csak Si 1 dióda van.
Schottky esetén jobb lesz akár 10V váltó is mérhető lehet.
Persze ha te inkább a felső értékét méred akkor jobb a viszony... de lehet jobb lenne nagyobb secunder feszültség 12 24 V mert akkor kisebb a hiba a diódákból adódó nyitó feszültség miatt.(persze itt is kell fix ellenállásosztó ami 5 voltra osztja a 12/24 V váltó csúcsértékét )
A hozzászólás módosítva: Júl 26, 2015
(#) Kera_Will válasza Kera_Will hozzászólására (») Júl 26, 2015 /
 
Érdemesebb 250-300 Voltra méretezni a feszültség osztókat a trafó szekunder kimenete után és az Arduinó AD bemenet elé.
230 csak névleges érték annál lehet akár több is.
(#) erdeidominik1999 válasza Kera_Will hozzászólására (») Júl 27, 2015 /
 
Köszi, és gondolom elég a 2w-os trafó. Még az értékekben tudnál segíteni? Illetve akkor inkább 12v-os legyen?
(#) Gabó válasza erdeidominik1999 hozzászólására (») Júl 27, 2015 /
 
Csak egy halk megjegyzés. Az unot, miről táplálod? Trafó? Akkor meg is van a trafód. A trafó és az uno közé, ahol még nincs stabilizálva (ha stabilizálod a feszt) mehet az a pont, amit az unohoz vezetsz ad bemenetnek. Gondolom nem mV nagyságrenddel akarod figyelni a 230V-ot.
(#) erdeidominik1999 válasza Gabó hozzászólására (») Júl 27, 2015 /
 
Az ötlet jó, csak az a gond, hogy az ardut nem onnan táplálom, amit mérni kell, hanem másik hálózatról.
(#) Gabó válasza erdeidominik1999 hozzászólására (») Júl 27, 2015 /
 
Mivel ezt nem írtad, ezért írtam csak halk megjegyzésnek, opcióként Nálam a hálózat kimaradás így van megoldva.
(#) Kera_Will válasza erdeidominik1999 hozzászólására (») Júl 27, 2015 /
 
Igen bármilyen kis teljesítményű trafó jó pár VoltAmperes és nem Watt.
Mivel nem lesz rajta terhelés csak a uC portja.
Ha a fenti leírásomból nem érted mit, miért írtam?
Nem tudod eldönteni mit fogsz kapni a használni kívánt alkatrészek esetén.
Akkor légy szíves további elektrotechnikai ismereteknek utána nézni!
Fogalmak: Váltakozó áram és feszültség jellemzői , tulajdonságai, 1 és 2 utas egyenírányítás , félvezetők nyitó /záró irányú karakterisztikája, üzemi jellemzői , transzformátor működése, jellemzői.
Milyen pontosságú mérésre van szükséged? Ez is befolyásolja a mérőátalakítód kivitelét.
A hozzászólás módosítva: Júl 27, 2015
(#) Kera_Will válasza erdeidominik1999 hozzászólására (») Júl 27, 2015 /
 
Némi egyenirányítós elmélet és gyakorlat : másik kezdő topicbanmeg válaszolva
(#) saua hozzászólása Júl 28, 2015 /
 
Sziasztok,

Az eredeti kód itt található Bővebben: Link
a késleltetés kódot szeretném úgy módosítani, hogy mikor a 6-os lábon levő LED világít, akkor egyszer lefusson a blink5 függvény.
  1. /*
  2.  Debounce
  3.  Nyomógomb megnyomásával tudjuk be-, majd újbóli megnyomásával  kikapcsolni a LED fényét.
  4.  
  5.  Áramkör:
  6.  * LED a 6 pinbe és a földbe kötve
  7. * LEDB az 7 pinbe és a földbe kötve (blink5)
  8.  * nyomógomb 2 pinből az 5 V-ba megy
  9.  * 10 kiloohmos ellenállás a 2 pinből
  10.  
  11.  created 21 November 2006 by David A. Mellis
  12.  modified 30 Aug 2011 by Limor Fried
  13.  */
  14.  
  15. // állandókkal megadjuk a pin értékeket:
  16. const int buttonPin = 2;     // nyomógomb pin
  17. const int ledPin =  6;      // LED pin
  18. int ledBPin = 7;
  19. // változókat hozunk létre:
  20. int ledState = HIGH;   // kimeneti pin aktuális állapota
  21. int buttonState;   // bemeneti pin aktuális állapota
  22. int lastButtonState = LOW;   // bemeneti pin előző értéke
  23.  
  24. /* a következő változók long típusúak lesznek, mivel az időt milliszekundumban mérjük, ezért értéke gyorsan nagyra nő, akkorára, amit integerben nem tudunk tárolni */
  25.  
  26. long lastDebounceTime = 0;  
  27. // a kimeneti pin átkapcsolásának utolsó időértéke
  28. long debounceDelay = 50;    
  29. // késleltetési idő; ha a kimenet vibrál, meg kell növelni
  30.  
  31. void setup() {
  32.   pinMode(buttonPin, INPUT);
  33.   pinMode(ledPin, OUTPUT);
  34.   pinMode(ledBPin, OUTPUT);
  35.   // adjuk meg a LED állapotának kezdő értékét
  36.   digitalWrite(ledPin, ledState);
  37.  
  38. }
  39.  
  40. void loop() {
  41.   // helyi változóba kiolvassuk a kapcsoló állapotát:
  42.   int reading = digitalRead(buttonPin);
  43.  
  44.   // leellenőrizzük, hogy elég idő telt-e el a két kiolvasás között:
  45.  
  46.   // Ellenőrizzük, hogy megnyomás vagy zaj
  47.   // hatására változott-e a kapcsoló:
  48.   if (reading != lastButtonState) {
  49.     // a késleltetés időzítőt újraindítjuk:
  50.     lastDebounceTime = millis();
  51.   }
  52.  
  53.   if ((millis() - lastDebounceTime) > debounceDelay) {
  54.     /* ha az eltelt időből kivonjuk az utolsó átkapcsolás idejét, és az nagyobb, mint a késleltetési idő, akkor – mivel ez gombnyomásra utal – a reading nevű integer változóban eltárolt adatunkat hozzárendeljük a nyomógomb aktuális értékét tároló változónkhoz */
  55.  
  56.     // ha a nyomógomb állapota megváltozik:
  57.     if (reading != buttonState) {
  58.       buttonState = reading;
  59.  
  60.       // ha a nyomógomb állapota HIGH, benyomott, akkor
  61.       // átkapcsoljuk a LED állapotát az aktuális ellenkezőjére
  62.       if (buttonState == HIGH) {
  63.         ledState = !ledState;
  64.       }
  65.     }
  66.   }
  67.  
  68.   // és ezzel az értékkel beállítjuk a  LED állapotát:
  69.   digitalWrite(ledPin, ledState);
  70.  
  71. //beolvasni a ledPin allapotat
  72. if(ledState ==HIGH)
  73. blink5();
  74.   // majd elmentjük. A loop következő lefutásánál már
  75.   // ez lesz a kezdő értéke ennek a változónak  
  76.   lastButtonState = reading;
  77. }
  78.  
  79. void blink5()
  80. {
  81. for(int i=0;i<5;i++){
  82. digitalWrite(ledBPin,HIGH);
  83. delay(500);
  84. digitalWrite(ledBPin,LOW);
  85. delay(500);
  86. }
  87. return;
  88. }


beszúrtam a loop() -ba a függvény meghívást 72. és 73. sor és utána pedig void blink5() függvényt, 79. sor. Most mikor a 6-os láb magas szinten van beindul a blink5() függvény de nem akar leállni, gondolom a delay miatt a nyomógombot se érzékeli.
Ha a függvényből a return utasítást törlöm semmi sem változik.

Tehát hogy lehetne megoldani hogy egy meghívott függvény csak egyszer fusson le?
A hozzászólás módosítva: Júl 28, 2015
(#) kapu48 válasza saua hozzászólására (») Júl 28, 2015 /
 
Ha megérted az 53. sorban alkalmazott késleltetés (inkább időzítés) módszert?
Akkor már tudod alkalmazni a LED villogtatásnál is!
A lényeg, hogy ne használj delajt! Vagy figyeled az idő múlását, (mint fentebb) vagy futás számlálót használsz.
Az eltelt idő érzékelésére.

Ui.: Az a return csak akkor kellene a „blink5”, végére ha valami értéket vissza akarsz adni a függvényből.
A hozzászólás módosítva: Júl 28, 2015
(#) saua válasza kapu48 hozzászólására (») Júl 28, 2015 /
 
köszi a választ.

az most nem is lenne nagy probléma, hogy a dalay miatt nem működik a gomb, hanem hogy állandóan újraindul a blink5 fuggvény. Csak egyszer kellene lefusson. Próbáltam azt a megoldást is, hogy a LED-et a 2-es lábra kötni, és figyelni mikor kerül alacsony szintről magasra és akkor beindítani a blink függvényt
attachInterrupt(0, blink5, RISING);
de nem működik.
A hozzászólás módosítva: Júl 28, 2015
(#) saua válasza erdeidominik1999 hozzászólására (») Júl 28, 2015 /
 
itt foglalkoznak a témával ami téged érdekel, de egyenirányítást nem látok benne.
(#) kapu48 válasza saua hozzászólására (») Júl 28, 2015 /
 
Ötlet?:
  1. Valahol a setup előtt:
  2.  
  3. char oldLedState = LOW;
  4.  
  5.         a programod
  6.         ...
  7.     // ha a nyomógomb állapota megváltozik:
  8.     if (reading != buttonState) {
  9.       buttonState = reading;
  10.  
  11.         oldLedState = HIGH;             //      Elngedélyezük a  blink5 hivást
  12.  
  13.       // ha a nyomógomb állapota HIGH, benyomott, akkor
  14.       // átkapcsoljuk a LED állapotát az aktuális ellenkezőjére
  15.       if (buttonState == HIGH) {
  16.         ledState = !ledState;
  17.       }
  18.     }
  19.   }
  20.  
  21.   // és ezzel az értékkel beállítjuk a  LED állapotát:
  22.   digitalWrite(ledPin, ledState);
  23.  
  24.   if((ledState == HIGH) && (oldLedState == HIGH)) blink5();   // !!!
  25.  
  26. }
  27.  
  28. void blink5()
  29. {
  30.         for(int i=0;i<5;i++){
  31.                 digitalWrite(ledBPin,HIGH);
  32.                 delay(500);
  33.                 digitalWrite(ledBPin,LOW);
  34.                 delay(500);
  35.         }
  36.         oldLedState = LOW;      // tiljuk a további meghívást
  37. }
A hozzászólás módosítva: Júl 28, 2015
(#) saua válasza kapu48 hozzászólására (») Júl 28, 2015 /
 
Köszi a segítséget.

Egy probléma csak maradt, a függvény kétszer fut le.
Most így néz ki a kód:
  1. /*
  2.  Debounce
  3.  Nyomógomb megnyomásával tudjuk be-, majd újbóli megnyomásával  kikapcsolni a LED fényét.
  4.  
  5.  Áramkör:
  6.  * LED a 6 pinbe és a földbe kötve
  7. * LEDB az 7 pinbe és a földbe kötve (blink5)
  8.  * nyomógomb 2 pinből az 5 V-ba megy
  9.  * 10 kiloohmos ellenállás a 2 pinből
  10.  
  11.  created 21 November 2006 by David A. Mellis
  12.  modified 30 Aug 2011 by Limor Fried
  13.  */
  14.  
  15. // állandókkal megadjuk a pin értékeket:
  16. const int buttonPin = 2;     // nyomógomb pin
  17. const int ledPin =  6;      // LED pin
  18. int ledBPin = 7;
  19. // változókat hozunk létre:
  20. int ledState = HIGH;   // kimeneti pin aktuális állapota
  21. int buttonState;   // bemeneti pin aktuális állapota
  22. int lastButtonState = LOW;   // bemeneti pin előző értéke
  23.  
  24. /* a következő változók long típusúak lesznek, mivel az időt milliszekundumban mérjük, ezért értéke gyorsan nagyra nő, akkorára, amit integerben nem tudunk tárolni */
  25.  
  26. long lastDebounceTime = 0;  
  27. // a kimeneti pin átkapcsolásának utolsó időértéke
  28. long debounceDelay = 50;    
  29. // késleltetési idő; ha a kimenet vibrál, meg kell növelni
  30. char oldLedState = LOW;
  31. void setup() {
  32.   pinMode(buttonPin, INPUT);
  33.   pinMode(ledPin, OUTPUT);
  34.   pinMode(ledBPin, OUTPUT);
  35.   // adjuk meg a LED állapotának kezdő értékét
  36.   digitalWrite(ledPin, ledState);
  37.  
  38. }
  39.  
  40. void loop() {
  41.   // helyi változóba kiolvassuk a kapcsoló állapotát:
  42.   int reading = digitalRead(buttonPin);
  43.  
  44.   // leellenőrizzük, hogy elég idő telt-e el a két kiolvasás között:
  45.  
  46.   // Ellenőrizzük, hogy megnyomás vagy zaj
  47.   // hatására változott-e a kapcsoló:
  48.   if (reading != lastButtonState) {
  49.     // a késleltetés időzítőt újraindítjuk:
  50.     lastDebounceTime = millis();
  51.   }
  52.  
  53.   if ((millis() - lastDebounceTime) > debounceDelay) {
  54.     /* ha az eltelt időből kivonjuk az utolsó átkapcsolás idejét, és az nagyobb, mint a késleltetési idő, akkor – mivel ez gombnyomásra utal – a reading nevű integer változóban eltárolt adatunkat hozzárendeljük a nyomógomb aktuális értékét tároló változónkhoz */
  55.  
  56.     // ha a nyomógomb állapota megváltozik:
  57.     if (reading != buttonState) {
  58.       buttonState = reading;
  59. oldLedState = HIGH;          //   Elngedélyezük a  blink5 hivást
  60.       // ha a nyomógomb állapota HIGH, benyomott, akkor
  61.       // átkapcsoljuk a LED állapotát az aktuális ellenkezőjére
  62.       if (buttonState == HIGH) {
  63.         ledState = !ledState;
  64.       }
  65.     }
  66.   }
  67.  
  68.   // és ezzel az értékkel beállítjuk a  LED állapotát:
  69.   digitalWrite(ledPin, ledState);
  70.   if((ledState == HIGH) && (oldLedState == HIGH)) blink5();   // !!!
  71.  
  72.   // majd elmentjük. A loop következő lefutásánál már
  73.   // ez lesz a kezdő értéke ennek a változónak  
  74.   lastButtonState = reading;
  75. }
  76.  
  77. void blink5()
  78. {
  79. for(int i=0;i<5;i++){
  80. digitalWrite(ledBPin,HIGH);
  81. delay(500);
  82. digitalWrite(ledBPin,LOW);
  83. delay(500);
  84. }
  85. oldLedState = LOW;      // tiljuk a további meghívást
  86. }
(#) kapu48 válasza saua hozzászólására (») Júl 28, 2015 /
 
Ugyan, legyen már kis bátorságod gondolkozni!


Mi lenne, ha 59. sort, átraknád a 63. közé 64.?
(#) saua válasza kapu48 hozzászólására (») Júl 28, 2015 /
 
OK ... sajnos csak holnap tudom kipróbóbálni, egyenlőre nem világos ha a 70. sorban semmi sem változik miért javulna a helyzet. Tehát most 10X villan a LED.
(#) kapu48 válasza saua hozzászólására (») Júl 28, 2015 /
 
Mert most 2* hívod meg a blink5 rutint.
1* Mikor lenyomod a gombot, 2. mikor felengeded!

Neked viszont, Csak az egyik változásra kellene reagálnia.
(#) saua válasza kapu48 hozzászólására (») Júl 29, 2015 /
 
Köszi még egyszer. Jól működik, már tesztelgetek egy email küldő függvényt a villogó helyett.
(#) erdeidominik1999 hozzászólása Júl 29, 2015 /
 
Sziasztok! Valaki próbált már arduinóval emailt küldeni? Mert nekem nem akar működni, próbáltam több példaprogit, de nem akar menni, ha pedig nem dhcp-vel csinálom, akkor nem is csatlakozik. Előre is köszi!
(#) GPeti1977 válasza erdeidominik1999 hozzászólására (») Júl 29, 2015 /
 
Itt van, a jelszavam már megváltozott.
  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3.  
  4. byte mac[] = {
  5.   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  6.  
  7. IPAddress ip( 192, 168, 0, 177 );    
  8. char server[] = "smtp.upcmail.hu";
  9. EthernetClient client;
  10.  
  11. void setup()
  12. {
  13.   Serial.begin(9600);
  14.   pinMode(10,OUTPUT);
  15.   digitalWrite(10,HIGH);
  16.   Ethernet.begin(mac, ip);
  17.   delay(2000);
  18.   Serial.println(F("  Ready. Press 'e' to send."));
  19. }
  20.  
  21. void loop()
  22. {
  23.   byte inChar;
  24.  
  25.   inChar = Serial.read();
  26.  
  27.   if(inChar == 'e')
  28.   {
  29.       if(sendEmail()) Serial.println(F("  Email sent"));
  30.       else Serial.println(F("  Email failed"));
  31.   }
  32. }
  33.  
  34. byte sendEmail()
  35. {
  36.   byte thisByte = 0;
  37.   byte respCode;
  38.  
  39.   if(client.connect(server,587)) {
  40.     Serial.println(F("  connected"));
  41.   } else {
  42.     Serial.println(F("  connection failed"));
  43.     return 0;
  44.   }
  45.  
  46.   //if(!eRcv()) return 0;
  47.   //Serial.println(F("DATA"));
  48.  
  49. // user name
  50.   client.println(F("HELO Peti")); //HELO fontos ez nelkul lebasz a server !!
  51.  
  52.   if(!eRcv()) return 0;
  53.   Serial.println(F("  AUTH LOGIN"));
  54.  
  55. // change to your email address (sender)
  56.   client.println(F("AUTH LOGIN"));
  57.  
  58.   if(!eRcv()) return 0;
  59.  
  60. // change to recipient address
  61.   Serial.println(F("  gonda.peter72@upcmail.hu"));
  62.   Serial.println(F("  Z29uZGEucGV0ZXI3MkB1cGNtYWlsLmh1")); //base64 encoded
  63.   client.println(F("Z29uZGEucGV0ZXI3MkB1cGNtYWlsLmh1"));   //base64 encoded
  64.  
  65.   if(!eRcv()) return 0;
  66.  
  67.   Serial.println(F("  95586245"));
  68.   Serial.println(F("  OTU1ODYyNDU=")); //base64 encoded
  69.   client.println(F("OTU1ODYyNDU="));   //base64 encoded
  70.  
  71.   if(!eRcv()) return 0;
  72.  
  73.   Serial.println(F("  Sending email"));
  74.  
  75. // change to recipient address
  76.   client.println(F("MAIL FROM: gonda.peter72@upcmail.hu"));
  77.  
  78.  
  79.   client.println(F("RCPT TO: gonda.peter72@upcmail.hu"));
  80.   client.println(F("DATA"));
  81.   client.println(F("Subject: Arduino email test\r\n"));
  82.  
  83.   client.println(F("This is from my Arduino!"));
  84.  
  85.   client.println(F("."));
  86.  
  87.   if(!eRcv()) return 0;
  88.  
  89.   Serial.println(F("Sending QUIT"));
  90.   client.println(F("QUIT"));
  91.  
  92.   if(!eRcv()) return 0;
  93.  
  94.   client.stop();
  95.  
  96.   Serial.println(F("disconnected"));
  97.  
  98.   return 1;
  99. }
  100.  
  101. byte eRcv()
  102. {
  103.   byte respCode;
  104.   byte thisByte;
  105.   int loopCount = 0;
  106.  
  107.   while(!client.available()) {
  108.     delay(1);
  109.     loopCount++;
  110.  
  111.     // if nothing received for 10 seconds, timeout
  112.     if(loopCount > 10000) {
  113.       client.stop();
  114.       Serial.println(F("\r\nTimeout"));
  115.       return 0;
  116.     }
  117.   }
  118.  
  119.   respCode = client.peek();
  120.  
  121.   while(client.available())
  122.   {  
  123.     thisByte = client.read();    
  124.     Serial.write(thisByte);
  125.   }
  126.  
  127.   if(respCode >= '4')
  128.   {
  129.     efail();
  130.     return 0;  
  131.   }
  132.  
  133.   return 1;
  134. }
  135.  
  136.  
  137. void efail()
  138. {
  139.   byte thisByte = 0;
  140.   int loopCount = 0;
  141.  
  142.   client.println(F("QUIT"));
  143.  
  144.   while(!client.available()) {
  145.     delay(1);
  146.     loopCount++;
  147.  
  148.     // if nothing received for 10 seconds, timeout
  149.     if(loopCount > 10000) {
  150.       client.stop();
  151.       Serial.println(F("\r\nTimeout"));
  152.       return;
  153.     }
  154.   }
  155.  
  156.   while(client.available())
  157.   {  
  158.     thisByte = client.read();    
  159.     Serial.write(thisByte);
  160.   }
  161.  
  162.   client.stop();
  163.  
  164.   Serial.println(F("  disconnected"));
  165. }
(#) erdeidominik1999 válasza GPeti1977 hozzászólására (») Júl 29, 2015 /
 
Köszi, kipróbáltam, de nekem ez is megakad, az eRcv()-nél, az egyébként micsoda?
(#) Thomm hozzászólása Júl 29, 2015 /
 
Üdv!
Segítséget szeretnék kérni.
Adott egy arduino uno, egy ir vevő, és egy dc motor controller (l298d).
Az ir a d2-es, a motor a 0 és 1, a motor enable lába a d11 lábakon.
Külön külön mindkettő remekül működik, ha viszont egyszerre szeretném használni akkor nem megy a motorvezérlő.

  1. #include <EEPROM.h>
  2. #include <IRremote.h>
  3.  
  4. #define E1 11  // Enable Pin for motor 1
  5. #define I1 0  // Control pin 1 for motor 1
  6. #define I2 1  // Control pin 2 for motor 1
  7.  
  8. int val = 70;             // A motor mozgasa
  9. int step = 20;            // Lepes merete
  10. int  RECV_PIN = 2;        // IR reciver PIN
  11.  
  12. char debug = 'START';     // A program allapota
  13. byte engine = 1;          // A motor allapota
  14.  
  15. IRrecv irrecv(RECV_PIN);
  16. decode_results results;
  17.  
  18. void setup()
  19. {
  20.   //Serial.begin(9600);
  21.   pinMode(I1,OUTPUT);
  22.   pinMode(I2,OUTPUT);
  23.   pinMode(E1,OUTPUT);
  24.   irrecv.enableIRIn(); // Start the receiver
  25.   val = EEPROM.read(1);
  26.   engine = EEPROM.read(2);
  27. }
  28.  
  29. void loop()
  30. {
  31.   motor_works();
  32.   ir_works();
  33.   delay(500);
  34.  
  35. }
  36.  
  37. // motor basic work
  38. void motor_works()
  39. {
  40.   val= 90;
  41.   engine= 1;
  42.    if (engine == 1)
  43.         {
  44.       analogWrite(E1,val);
  45.       digitalWrite(I1, HIGH);
  46.       digitalWrite(I2, LOW);
  47.         }
  48.     else if (engine == 2)
  49.         {
  50.       analogWrite(E1,val);
  51.       digitalWrite(I1, LOW);
  52.       digitalWrite(I2, HIGH);
  53.         }
  54.   else
  55.     {
  56.       analogWrite(E1,0);
  57.       digitalWrite(I1, LOW);
  58.       digitalWrite(I2, LOW);
  59.      
  60.     }
  61. }
  62.  
  63.  
  64.  
  65. // Global ir proc
  66. void ir_works()
  67. {
  68. //Serial.println("IR START");
  69.   if (irrecv.decode(&results))
  70.     {
  71.   // BAL
  72.       if (results.value == 0xFD8877)
  73.     {
  74.         engine = 1;
  75.   //      Serial.println("BAL");
  76.         }
  77.       // JOBB
  78.       else if(results.value == 0xFD48B7)
  79.     {
  80.         engine = 2;
  81.     //    Serial.println("JOBB");
  82.         }
  83.       // STOP
  84.       else if(results.value == 0xFD48B7){
  85.         engine = 0;
  86.     val=0;
  87.       //  Serial.println("STOP");
  88.       }
  89.       //+25
  90.       else if(results.value == 0xFFE01F)
  91.         {
  92.               if (val > 230)
  93.               {
  94.                 val = 255;
  95.               }
  96.             else
  97.               {
  98.                 val = val + step;
  99.               }  
  100.         //Serial.println("+20");
  101.     }
  102.       else if(results.value == 0xFFA857)
  103.         {
  104.               if (val - step < 70)
  105.               {
  106.                 val = 70;
  107.               }
  108.             else
  109.               {
  110.                 val = val - step;
  111.               }  
  112.         //Serial.println("-20");
  113.       }
  114.      EEPROM.update(1,val);
  115.      EEPROM.update(2,engine);
  116.   }
  117.  
  118.     irrecv.resume();
  119.   //Serial.println("IR END");
  120.   }


Ahogy kikommentelem a IRrecv irrecv(RECV_PIN); sort működik a motor. Mi lehet a gond?
A helyes megfejtőnek felajánlok 10db tiny rtc modult
A hozzászólás módosítva: Júl 29, 2015
Következő: »»   139 / 852
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