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   287 / 864
(#) (Felhasználó 120038) válasza Massawa hozzászólására (») Okt 31, 2016 /
 
Én is!
(#) kapu48 válasza troby hozzászólására (») Okt 31, 2016 /
 
Flash Memory 32 KB (ATmega328P)
of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)

Bővebben: Link
(#) kapu48 válasza troby hozzászólására (») Okt 31, 2016 /
 
Kicsit össze szedtem:
  1. #include <Servo.h>
  2.  
  3. char servoPin = 0;
  4. Servo servo;
  5. char angle = 0;
  6.  
  7. void setup()
  8. {
  9.   servo.attach(servoPin);
  10. }
  11. void loop()
  12. {
  13.   for(angle = 0; angle < 180; angle++)
  14.   {
  15.     servo.write(angle);
  16.     delay(15);
  17.   }
  18.   delay(6000);
  19.   for(angle = 180; angle > 0; angle--)
  20.   {
  21.     servo.write(angle);
  22.     delay(15);
  23.   }
  24.   delay(1000);
  25. }


Sketch uses 1 962 bytes (6%) of program storage space. Maximum is 32 256 bytes.
Global variables use 55 bytes (2%) of dynamic memory, leaving 1 993 bytes for local variables. Maximum is 2 048 bytes.
A hozzászólás módosítva: Okt 31, 2016
(#) Massawa válasza (Felhasználó 120038) hozzászólására (») Okt 31, 2016 /
 
Kösz megkaptam - továbbadtam de most még durcos, mert jo 2 orat ült rajta és semmi sem megy. ....
(#) (Felhasználó 120038) válasza Massawa hozzászólására (») Okt 31, 2016 /
 
Gép ujraindít, arduino leszed, újrarak, gép ujraindít, tesztel.

Nálam már előfordult ilyen.
(#) atus1981 válasza Massawa hozzászólására (») Okt 31, 2016 /
 
Ezt a programot töltsd fel és soros porton figyeld a címzést. 0x27 vagy 0x35.
  1. #include <Wire.h>
  2.  
  3. void setup() {
  4.   Serial.begin (115200);
  5.  
  6.   // Leonardo: wait for serial port to connect
  7.   while (!Serial)
  8.     {
  9.     }
  10.  
  11.   Serial.println ();
  12.   Serial.println ("I2C scanner. Scanning ...");
  13.   byte count = 0;
  14.  
  15.   Wire.begin();
  16.   for (byte i = 8; i < 120; i++)
  17.   {
  18.     Wire.beginTransmission (i);
  19.     if (Wire.endTransmission () == 0)
  20.       {
  21.       Serial.print ("Found address: ");
  22.       Serial.print (i, DEC);
  23.       Serial.print (" (0x");
  24.       Serial.print (i, HEX);
  25.       Serial.println (")");
  26.       count++;
  27.       delay (1);  // maybe unneeded?
  28.       } // end of good response
  29.   } // end of for loop
  30.   Serial.println ("Done.");
  31.   Serial.print ("Found ");
  32.   Serial.print (count, DEC);
  33.   Serial.println (" device(s).");
  34. }  // end of setup
  35.  
  36. void loop() {}
(#) troby válasza kapu48 hozzászólására (») Okt 31, 2016 /
 
Köszi, igen ez megvan meg ismerem is, azt csak azért írtam, hogy azon lefordítottam, hogy maga a program menyit foglal. De amire feltölteném az attiny85 elvileg 6012bytes helye van.
De szerintem valami a servo.h val kapcsolatosan nem tetszik senki csak még nem tudom mi.
(#) vyky válasza icserny hozzászólására (») Okt 31, 2016 /
 
Szia. De jó fej vagy,köszönöm. Hálám kerget
(#) troby válasza troby hozzászólására (») Okt 31, 2016 /
 
A megszakítások nem tetszenek neki gondolom mert ezen a panelen nincs quarz, így sajnos ez a progi nem fog itt lenni
A hozzászólás módosítva: Okt 31, 2016
(#) kapu48 válasza pjg hozzászólására (») Okt 31, 2016 /
 
Ne igazán győztél meg!
Már kaptam így, kellemetlenül erőszakos reklám küldő vírust!

Inkább hiszek az Esetnek! És mellőzöm a kíváncsiskodást!
(#) pjg válasza kapu48 hozzászólására (») Okt 31, 2016 /
 
Bármit én sem nyitok meg, de icserny kolléga megbízható helyen oszt meg.
(#) Electricboy hozzászólása Okt 31, 2016 /
 
Sziasztok!
Van egy program ami RTC-ből veszi a dátumot és az időt (ezt nevezzük "pontos időnek"),
a feladatom az lenne, hogy egy más általam megadott időpontot (dátum, óra, perc) hasonlítson össze a pontos idővel és ha a két érték egyforma, vagy a pontos idő már elhaladt a megadott időponton akkor egy kimenet magas állapotba kéne hogy kerüljön. Ez így megoldható akár egy ilyen iffel is:

  1. if((rtc ho==megadott ho)&&(rtc nap==megadott nap)&&(rtc ora==megadott ora)&&(rtc perc==megadott perc)){
  2. digitalWrite( kimenet, 1)};


Viszont ez csak azt figyeli hogy megegyezik e a két időpont és ugye ez csak 1 percig áll fent. Ezzel az a baj, hogy ha ebben az időpontban áramszünet van akkor a program le marad az eseményről. (Nyilván a megadott időpontot is az eepromba kell írnom.)

Valami nagyobb egyenlő megoldás kéne, de az meg kilőve a ciklikus ismétlődés miatt (0-59-0 stb).
(#) (Felhasználó 120038) válasza Electricboy hozzászólására (») Okt 31, 2016 /
 
Szia!

Egyelőre csak annyit tennék, hogy egymásba ágyaznám a feltételeket és a másodperceket is figyeltetném.

  1. if (rtc nap==megadott nap)
  2.  
  3.     {
  4.         if (rtc ho==megadott ho)
  5.             {
  6.                   if (rtc perc==megadott perc)
  7.                       {
  8.                           if ( (rtc masodperc>=0) &&  (rtc masodperc<=59)) //Nyilván kell ezt is lekérdezned az RTC-től
  9.                              {
  10.                                  digitalWrite( kimenet, 1);
  11.                               }  
  12.                        }  
  13.              }
  14.  
  15.      }


Áramszünet esetén, ha ujra indul akkor belefut, és ha éppen kellene neki kapcsolnia akkor fog. Ha olyat szeretnél, hogy akkor is jelezzen, ha áramszünet volt, de eltellt az idő, akkor egy logikai változót kellene még valahova felvenni, és azt elmenteni.

Természetesen összevonhatod ezeket az if szerkezeteket, de talán így átláthatóbb.
(#) Bakman válasza Electricboy hozzászólására (») Okt 31, 2016 / 1
 
Amit én csinálnék: Hónap, nap, óra, perc. Ezeket a számokat egymás mellé rendezném, pl. December 5, 13:30 --> 12051330. Ezt eljátszani mindkét oldalon. Ha a két érték egyezik vagy az RTC értéke magasabb mint a megadott, mehet az akció.

Már csak azt kell tisztáznod, hogy mennyivel utána is jelezzen még, ugyanis. Ha te január 5.-én akarsz egy riazstást, akkor egészen december 31 -ig bezárólag aktiválódni fog. Ez kicsit kevesebb, mint 12 hónap. Ha december 10.-én kell jelezni, akkor december 31-ig csak 21 nap van, január 1-től már nem fog a kimenet magasra állítódni. Érdemes belevenni az évet is és meghatározni, hogy az esetleges mulasztás meddig legyen érvényben.
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Okt 31, 2016 /
 
Ok, félreértettem a feladatot. Bocsánat.
(#) (Felhasználó 120038) válasza Electricboy hozzászólására (») Okt 31, 2016 / 1
 
Kicsit fáradt vagyok, ha nem értem a feladatot akkor bocsánat.

Ha az a gond, hogy hoszabb áramszünet volt, ami átfedte a kapcsolási eseményt és szeretnéd, hogy kapcsoljon akkor is, akkor egy lehetséges megoldás.

Az eepromba az időpont mellé felveszel egy byte-ot is, ami megmondja, hogy lefutott-e ez az esemény az Arduino felől. Kezdetben ez 0. Ha belefut a fenti kódodba, akkor az adott esemény utáni byte legyen 1. (digital write után írni kellene az eepromba) Arra kell figyelni, hogy az eeprom írás is csak 1x fusson le az alarm alatt, mert hamar kinyiffanhat. (felesleges több százszor írni)

Namármost, kellene egy függvény, amit a setup-ból hívsz meg. Ez a függvény végignézi az eepromban naplózott időpontokat, vizsgálja, hogy van-e olyan esemény (események), ami már eltelt, de a mellette lévő byte 0. Ha igen, akkor jelezzen akár 1 percig is, majd adja vissza a vezérlést a main loop-nak. (vagy míg a felhasználó valamilyen billentyű kombóval meg nem szakítja.)
(#) david10 hozzászólása Okt 31, 2016 /
 
Sziasztok,
Adott az alábbi forráskód, amivel az a baj, hogy ha 0-val kezdődő Hexadecimálist akarok kiírni, akkor a 0-ás lemarad a kiírt eredmény elejéről.
  1. void setup() {
  2.  Serial.begin(9600);  
  3. }
  4. void loop() {
  5.  Serial.println(0xA0, HEX);  //Ha A0-át írok, akkor a soros monitoron A0-át ír ki. Ha 0A-t írok, akkor csak A-t ír ki és a 0-ás lemarad.
  6.  delay(1000);
  7. }

Szerintetek mi lehet a gond? Hogyan lehetne megoldani, hogy a 0-ást is kiírja soros monitorra?
A választ előre is köszönöm!
(#) Bakman válasza david10 hozzászólására (») Okt 31, 2016 /
 
Küldd el szövegként. 0xA0 = 160, 0x0A = 10. A 0x utáni két karakter egy számot jelöl, nem pedig két karaktert.

0000000A = A
A0000000 = A0000000

Vagy keress olyan monitort, ami automatikusan kiírja a nullát is az A elé.
(#) pjg válasza david10 hozzászólására (») Okt 31, 2016 /
 
Nem kéne idézőjelek közé tenni? "0xA0"
(#) (Felhasználó 120038) válasza david10 hozzászólására (») Okt 31, 2016 /
 
Szia!

Itt megoldották:

Bővebben: Link
(#) Electricboy válasza Bakman hozzászólására (») Okt 31, 2016 /
 
Köszi ez jó ötlet, viszont valóban bele kell vennem az évet ennél a logikánál. Kicsit többet le írok a lényegéről hogy jobban érthető legyen mit is akarok. Ez egy zárt ládika amiből addig nem lehet kivenni semmit, amíg az adott időpontot el nem értük, miután elértük nyitható és visszacsukás után be lehet állítani egy másik időpontot. Pl a karácsonyi ajándékot oda tudom adni októberben, de megnézni csak dec 24 este 6 után lehet
(#) Bakman válasza Electricboy hozzászólására (») Okt 31, 2016 /
 
Elég nagy aljasság így ajándékozni.
(#) david10 válasza Bakman hozzászólására (») Okt 31, 2016 /
 
Köszönöm szépen mindenki válaszát!
Bakman: Holnap megprobálom a Bray Teminal-al. Kiváncsi vagyok, hogy az mutassa-e.
pjg: Ha idézőjel közé teszem, az nem oldja meg a problémát, mert az érték a program futása közben változik. (Most csak példaképpen írtam oda, hogy 0xA0).
Agent_Z: A linken amit küldtél a második (bootsector által írt) hozzászolásban lévő forráskodót kiprobáltam és jónak tünik. Holnap még kifogom egészíteni azzal, hogy az &ByteDatum méretét ne kelljen mindig megadni, hanem maga a függvény számolja ki.
(#) proba válasza proba hozzászólására (») Okt 31, 2016 /
 
(#) proba válasza szikorapéter hozzászólására (») Okt 31, 2016 /
 
Gondolom, nekem még nem volt. A rendes sem nagy durranás, egy szintillesztő az elején (talán 3 tranzisztor, meg két kimenet igénye van) rákapcsolja a 12V-ot, a végén meg le. A többi folyamat 5V-on zajlik. Talán az égető impulzusra van időbeli megkötés ( de az is 5V -os jel. )
(#) proba válasza Electricboy hozzászólására (») Okt 31, 2016 /
 
Ha rtc-t használsz, talán van olyan, ami helyből tudja a megszakítás lábon jelezni, ha a két beírt időpont egyezik.(ds3231) Ha az elemről megy, akkor lehet processzor csak a felprogramozáshoz kell, utána le is kapcsolható.(ami akár a dobozba rakást is lehetővé teszi.) A másik ha az ajándékozottat érdekli mi van a dobozban, csak figyel az időpontra.( ha csak úgy nem jár a dobozzal, mint Wilson bácsi a virággal )
A hozzászólás módosítva: Okt 31, 2016
(#) vyky válasza vyky hozzászólására (») Nov 1, 2016 /
 
Szia. Megcsináltam,beraktam egy tranzisztort. tökéletes két szálon lehet vezérelni a fogásirányt és a sebességet. Köszönöm ismét
(#) Electricboy hozzászólása Nov 1, 2016 /
 
Nektek mit dob a soros monitoron értéknek?
  1. long idopont=0;
  2. int ho=11;
  3. void setup() {
  4.  Serial.begin(9600);
  5. }
  6.  
  7. void loop() {
  8.   idopont=(ho*10000);
  9.  Serial.println (idopont);
  10.  delay (500);
  11. }


Nekem -21072. Most én vagyok hülye?
(#) benjami válasza Electricboy hozzászólására (») Nov 1, 2016 /
 
Teljesen jól csinálja. Egy szóval sem mondtad neki, hogy a szorzást ne 16bites előjeles számokkal csinálja, hanem 32bites módon.
(#) david10 válasza david10 hozzászólására (») Nov 1, 2016 /
 
Bakman: A Bray Terminálban is ugyanugy jelenik meg, mint a soros monitorban.
Agent_Z: Amit linkeltél, annak az első hozzászolásában található kódot copy-pasteltem és jól müködik. A mérettel végül nem kellett foglalkozzak, mert 16 elemből álló arrayt kell mindig kiírni.
Következő: »»   287 / 864
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