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   308 / 863
(#) bujan válasza brumbrus hozzászólására (») Jan 1, 2017 /
 
Ezt írd be a google-ba "230v dimmer arduino" és rengeteg megoldást találsz.
(#) kapu48 hozzászólása Jan 1, 2017 / 2
 
B.U.É.K minden kedves Forum társnak!
(#) brumbrus hozzászólása Jan 1, 2017 /
 
Üdv!
Találtam egy másikat is:pwm drimmer
Bizonyára a kettő kapcsolás(triakos és mosfetes) teljesen eltér egymástól, de mégis milyen különbség tapasztalható, ha ohmos terheléssel terhelem mindkettőt? Melyik a kiszámíthatóbb?
A másik kérdés:
Ha a képen látható áramkörbe bekötök egy kuplungus varrógép motort, aminek a fordultszáma a kuplunk legyomásának erősségétől függ, és mondjuk felére csökkentem a kimeneti elektromosságot(elnézést tudatlanságomért,de mit is változtatunk ilyenkor ha változik a lámpa fényereje? A szinuszjel meredekségét? Nyújtottságát?) akkor ha tövig nyomom a kuplungot, akkor a fordulatszám is fele lesz körübelül?
Köszönöm!
A hozzászólás módosítva: Jan 1, 2017
(#) szikorapéter hozzászólása Jan 2, 2017 /
 
Sziasztok. 2 kérdéssel fordulnék hozzátok. Az első: Attiny12 ic-t tudok-e UNO-n keresztül programozni? A másik: Találtam sok projectet 45-ös processzorral ( leginkább a "snowfall" nevű project fogott meg),viszont itthon csak a 12 és 13-as típusom van. Nem gond ha a programot erre viszem fel?
(#) GPeti1977 válasza brumbrus hozzászólására (») Jan 2, 2017 /
 
Hát csak meg ne rázzon az áram, kicsit még tanulgass inkább.
Ami instructables -en van az jó lehet motorra, csak ki kell próbálni, persze ha külső gerjesztésű kefés motorod van.
A hozzászólás módosítva: Jan 2, 2017
(#) roland9 hozzászólása Jan 2, 2017 /
 
Sziasztok!
Egy olyan gondom lenne a következő kóddal, hogy a "Tank" felirat és az alatta lévő " LcdBarGraph" nem a kijelző szélén kezdődik, hanem beljebb. Valaki tudna nekem segíteni, hogy mit rontottam el?
  1. #include <LiquidCrystal.h>
  2. #define lenght 16.0
  3. double percent=100.0;
  4. unsigned char b;
  5. unsigned int peace;
  6. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  7. byte p1[8] = {
  8.   0x10,
  9.   0x10,
  10.   0x10,
  11.   0x10,
  12.   0x10,
  13.   0x10,
  14.   0x10,
  15.   0x10};
  16. byte p2[8] = {
  17.   0x18,
  18.   0x18,
  19.   0x18,
  20.   0x18,
  21.   0x18,
  22.   0x18,
  23.   0x18,
  24.   0x18};
  25. byte p3[8] = {
  26.   0x1C,
  27.   0x1C,
  28.   0x1C,
  29.   0x1C,
  30.   0x1C,
  31.   0x1C,
  32.   0x1C,
  33.   0x1C};
  34. byte p4[8] = {
  35.   0x1E,
  36.   0x1E,
  37.   0x1E,
  38.   0x1E,
  39.   0x1E,
  40.   0x1E,
  41.   0x1E,
  42.   0x1E};
  43. byte p5[8] = {
  44.   0x1F,
  45.   0x1F,
  46.   0x1F,
  47.   0x1F,
  48.   0x1F,
  49.   0x1F,
  50.   0x1F,
  51.   0x1F};
  52. const int analogInput = 0;
  53. int analogInput2 = 1;
  54. int mVperAmp = 100;
  55. int ACSoffset = 2500;
  56. int Value = 0;
  57. int Value2 = 0;
  58. double Amps = 0;
  59. double Volt = 0;
  60. float vout = 0.0;
  61. float vin = 0.0;
  62. float R1 = 100000.0;
  63. float R2 = 10000.0;
  64.  
  65. void setup(){
  66.    pinMode(analogInput, INPUT);
  67.    pinMode(analogInput2, INPUT);
  68.    lcd.createChar(0, p1);
  69.   lcd.createChar(1, p2);
  70.   lcd.createChar(2, p3); //genere i caratteri personalizzati
  71.   lcd.createChar(3, p4);
  72.   lcd.createChar(4, p5);
  73.    lcd.begin(16, 4);
  74. }
  75. void loop(){
  76.  
  77.    Value = analogRead(analogInput);
  78.    Volt = (Value / 1024.0) *5000;
  79.    Amps = ((Volt - ACSoffset) / mVperAmp);
  80.    
  81.    lcd.setCursor(0, 1);
  82.    lcd.print("AkuAram: ");
  83.    lcd.print(Amps);
  84.    lcd.print("A");
  85.    delay(500);
  86.    
  87.   Value2 = analogRead(analogInput2);
  88.   vout = (Value2 * 5.0) / 1024.0;
  89.   vin = vout / (R2/(R1+R2));
  90.   if (vin<0.09) {
  91.     vin=0.0;
  92.   }
  93.  lcd.setCursor(0, 0);
  94.    lcd.print("AkuFesz:  ");
  95.    lcd.print(vin);
  96.    lcd.print("V");
  97.    delay(500);
  98.    
  99.    {
  100.   lcd.setCursor(0, 2);
  101.   //ADC conversion
  102.   unsigned int value = analogRead(2); //legge il valore dal potenziometro
  103.   percent = value/1024.0*100.0; //calcola la percentuale
  104.   lcd.print("Tank: ");
  105.   lcd.print(percent);
  106.   lcd.print("%");
  107.   lcd.setCursor(0, 3); //sposta il cursore
  108.   double a=lenght/100*percent;
  109.   // disegna i rettangoli neri sull'lcd
  110.   if (a>=1) {
  111.     for (int i=1;i<a;i++) {
  112.       lcd.write(4);
  113.       b=i;
  114.     }
  115.     a=a-b;
  116.   }
  117.   peace=a*5;
  118.   // drawing charater's colums
  119.   switch (peace) {
  120.   case 0:
  121.     break;
  122.   case 1:
  123.     lcd.print((char)0);
  124.     break;
  125.   case 2:
  126.  
  127.     lcd.write(1);
  128.  
  129.     break;
  130.   case 3:
  131.  
  132.     lcd.write(2);
  133.  
  134.     break;
  135.   case 4:
  136.  
  137.     lcd.write(3);
  138.  
  139.     break;
  140.  
  141.   }
  142.   //clearing line
  143.  
  144.   for (int i =0;i<(lenght-b);i++) {
  145.     lcd.print(" ");
  146.   }
  147. }
  148. }

kijelző.png
    
(#) szeg76 válasza roland9 hozzászólására (») Jan 2, 2017 /
 
Az lcd.begin előzze meg az összes egyéb lcd-hivatkozást.
(#) roland9 válasza szeg76 hozzászólására (») Jan 2, 2017 /
 
így gondoltad?
  1. void setup(){
  2.   lcd.begin(16, 4);
  3.   pinMode(analogInput, INPUT);
  4.   pinMode(analogInput2, INPUT);
  5.   lcd.createChar(0, p1);
  6.   lcd.createChar(1, p2);
  7.   lcd.createChar(2, p3); //genere i caratteri personalizzati
  8.   lcd.createChar(3, p4);
  9.   lcd.createChar(4, p5);
(#) szeg76 válasza roland9 hozzászólására (») Jan 2, 2017 /
 
Igen.
(#) roland9 válasza szeg76 hozzászólására (») Jan 2, 2017 /
 
sajnos így is ugyan az helyzet
(#) szeg76 válasza roland9 hozzászólására (») Jan 2, 2017 /
 
Csak szimulációt futtattál?
Nálam élőben a kódtól elvárt képet adja ( I2C-s kijelzővel, de az mindegy kell, hogy legyen)
A hozzászólás módosítva: Jan 2, 2017
(#) roland9 válasza szeg76 hozzászólására (») Jan 2, 2017 /
 
nem, fel is töltöttem de ugyan az mint szimulálva
(#) roland9 válasza roland9 hozzászólására (») Jan 3, 2017 /
 
Sajnos nem jó

DSC_0460.JPG
    
(#) kapu48 hozzászólása Jan 3, 2017 /
 
Melyik arduino IDEt használod?
(#) roland9 válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
1.0.5-r2, próbáljam meg egy újabbal?
(#) kapu48 válasza roland9 hozzászólására (») Jan 3, 2017 / 1
 
Lehet, hogy nem állítod vissza a kurzort a törlés után?:
  1. for (int i =0;i<(lenght-b);i++) {
  2.     lcd.print(" ");
  3.   }


Én frissítenék nálam az : 1.6.10-es bevált.
(#) roland9 válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
De a kód végén ott van a kurzortörlés, pár hozzászólással előrébb feltettem az egész kódót.
Most szedem az 1.8-at az a legfrissebb, aztán próba cseresznye
(#) RoliNyh válasza roland9 hozzászólására (») Jan 3, 2017 /
 
Mintha olvastam volna valahol olyat, hogy bizonyos látszólag négy soros kijelzők valójában csak két sorosak, csak sortörés van...

Próbálj a 17.-ik oszlopba írni, úgy mi az eredmény?...
A hozzászólás módosítva: Jan 3, 2017
(#) roland9 válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
A frissítés megoldotta a problémát, köszi a segítséget!!

DSC_0460.JPG
    
(#) roland9 válasza RoliNyh hozzászólására (») Jan 3, 2017 /
 
Nem változott semmi, ugyan az maradt.
(#) kapu48 válasza roland9 hozzászólására (») Jan 3, 2017 /
 
A régi IDE nem jól kezelte az ilyen kód közben i változó helyfoglalásokat:
  1. lcd.setCursor(0, 2);
  2.   //ADC conversion
  3.   unsigned int value = analogRead(2); <<<<<?  //legge il valore dal potenziometro
  4.   percent = value/1024.0*100.0; //calcola la percentuale
  5.   lcd.print("Tank: ");
  6.   lcd.print(percent);
  7.   lcd.print("%");
  8.   lcd.setCursor(0, 3); //sposta il cursore
  9.   double a=lenght/100*percent; <<<<<<<<?
  10.   // disegna i rettangoli neri sull'lcd


Mintha most is ezek után jeletkezet a hiba nálad?

Jobb, ha ezeket a kódod elejére teszed a többi változó definiálások közé, kevésbé lesz töredezett a memória.
(#) roland9 válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
A frissítés után jól működik, minden a helyén van.
(#) kapu48 válasza roland9 hozzászólására (») Jan 3, 2017 /
 
Bár folyamatosan fejlesztik az arduino IDEt, de még mindig nem tökéletes.
Ezt jelzik a sok panaszok, hogy hosszabb használat után egyes programok kiakadnak memoria szivárgás hibajelenséggel. Aminek általában ismeretlen az oka.

Ezt megelőzendő, javasoltam az említett változó deklarációs változtatást.
A hozzászólás módosítva: Jan 3, 2017
(#) roland9 válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
Oksa, mindenképp megcsinálom
(#) Gabó válasza roland9 hozzászólására (») Jan 3, 2017 /
 
Azért ezekkel az új kiadásokkal csak óvatosan. Nálam, meg ahogy itt 1-2 embernek javasoltam, akik netes mintaprogramokat próbáltak, azoknál volt fordítási hiba a frissebb kiadásokkal leginkább az 1.6.x és felette. Nálam konkrétan egy saját program nem akart lefordulni, az 1.6.xes verzióba, de visszatéve az 1.5.7est, simán ment.
(#) gaspa válasza kapu48 hozzászólására (») Jan 3, 2017 /
 
Ez tényleg így van,délután én is ilyen for-on belüli változóval kínlódtam,most kipróbáltam,a program elején definiálva lefordítja.Egyébként a laptopon 1.8 van win 10-el,az mindkét esetben jól fordít,az asztali gépen is 1.8 van,de XP-vel és csak elöl definiált változóval fordít.
(#) gaspa hozzászólása Jan 4, 2017 /
 
A Mega hat megszakítás bemenetének van-e egymáshoz képest prioritása,vagy ezt a programban kell elintézni?Lehet-e egy megszakítást egy másikkal megszakítani?A megszakítás egyszerű függvény(neve a megszakítás utasításban),ami a loop-ba tér vissza?
(#) Kovidivi válasza gaspa hozzászólására (») Jan 4, 2017 /
 
Meg lehet szakítani az interruptot, de elég veszélyes, rosszul időzítve soha sem lépsz ki a megszakítás fv-ből. A megszakítás amikor életbe lép, akkor az aktuális programfutás megáll, bárhol is voltál, a uC megjegyzi ezt a pontot. Lefuttatja az interrupt függvényt, ha ez kész, visszatér oda, ahol volt, és minden megy tovább.
(#) gaspa válasza Kovidivi hozzászólására (») Jan 4, 2017 /
 
Ezek szerint,ha több interrupt van érvényesítve és az egyik éppen fut,ennek elején célszerű a többit letiltani?Így mindig annak van prioritása amelyik előbb lép be,ez kicsit fura,a régi It kontrollerekre emlékszem homályosan.Az említett rossz időzítés hogyan jöhet létre?
(#) Kovidivi válasza gaspa hozzászólására (») Jan 4, 2017 /
 
Automatikusan letiltódik minden más interrupt, ha egybe belépsz. Paranccsal ez a cli(). Ha az interrupt elején beírod, hogy sei(), akkor jöhet egy másik interrupt, amiben esetleg ismét engedélyezve van a megszakítás, még mielőtt végezne, bejön az első, amit megszakított, és így toväbb, amíg a stack túl nem csordul, vagy a memória elfogy.
Aki gyorsabb, az nyer. Minek várjunk a másodikra? Honnan tudjuk mikor fog bekövetkezni? Addigra lehet végez az előző. Interruptban pedig általában csak pár sornyi programot írunk, flag-et állítunk be, vagy ilyesmi. Bármi másnak tudnia kell ennyit várni! Ha jól tudom 12 órajel amíg belépünk az interruptba. Kiszámolhatod nagyjából, hogy egy 10 órajeles interrupt mennyi időt igényel, szinte semmit. Ennek így is kell lennie. Kivételes esetekben, mint pl. LED-mátrix meghajtása, sok időt elszöszölhetek az interrupton belül, de ezt figyelembe véve a loopban, baj nem történhet. Pl. amikor DS18b20-szal kellett kommunikálnom, és a kijelzőt is frissíteni, akkor olvastam ki a szenzor adatait, amikor a kijelző éppen váltott, tehát sötét volt. Így elkerültem a villogást. Vagy olyan ritkára időzítettem a lekérdezést, hogy ne legyen zavaró a kijelzésnél. OneWire kommunikációnál fontos az időzítés. Ha megzavarom a kommunikációt interruottal, hibás eredményt kapok.
Következő: »»   308 / 863
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