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   294 / 864
(#) RoliNyh válasza Kovidivi hozzászólására (») Nov 24, 2016 /
 
Ránézek, de ma már nem lesz rá időm.
Most a szövegszín beállításokkal variálok, nem tudom, hogy kell RGB módban használni a tft.setTextColor() fügvényt. Vagyis félig értem mert úgy működik, hogy:

  1. tft.setTextColor(0xFFFF)


Csak azt nem vágom, hogy miért négy értékből áll a HEX kód.
Igazából úgy akartam, hogy vagy 1x3, vagy 2x3 csoportra legyen osztva, de úgy összevissza színez...
A hozzászólás módosítva: Nov 24, 2016
(#) Bakman válasza RoliNyh hozzászólására (») Nov 24, 2016 /
 
Idézet:
„Csak azt nem vágom, hogy miért négy értékből áll a HEX kód.”
0xFFFF = 0b1111 1111 1111 1111

R: 5 bit
G: 5 bit
B: 6 bit

Általában így oszják el a színeket. Lehet, hogy a piros vagy a zöld a hat bites, most csak gyorsan tippeltem, nincs kedvem megnézni. A lényeg, hogy 2x5 és 1x6 bites a felbontás.
A hozzászólás módosítva: Nov 24, 2016
(#) RoliNyh válasza Bakman hozzászólására (») Nov 24, 2016 /
 
Akkor már csak egy olyan online konvertert kéne találnom, ami ismeri is ezt a formátumot, mert amit eddig próbáltam az is mind 2x3 -as formátumba (0xFFFFFF) adja vissza az értéket...
(#) Kovidivi válasza RoliNyh hozzászólására (») Nov 24, 2016 /
 
Amit linkeltem lib, abban van ilyen konverter.
(#) bujan hozzászólása Nov 25, 2016 /
 
Tisztelt Fórumozók!
Működik a 6 led fényerejét (PWM) szabályzó kapcsolásom 3 nyomógombbal. Az egyikkel kiválasztom a beállítandó ledet, a másik kettővel a fényerejét (+-). Az egészet az EEPROM-ba írom és így megőrzi azokat. Ha változtatok valamelyiken annak értékét felülírja.
Tovább akarnám fejleszteni IR távirányítóra, de van egy probléma. Ha beírom a irrecv.enableIRIn(); kötelező vevő parancsot akkor a digital pin 3 (PWM) nem működik. Nem tudom találkozott e már valaki ilyen problémával? Mi lehetne a megoldás?
Válaszotokat előre is köszönöm.
(#) Kovidivi válasza bujan hozzászólására (») Nov 25, 2016 / 1
 
3 timer van az Arduinoban. Te mindet használod a 6pwm-mel. Az infravevő is szeretne timert használni. Ő nem tudja, hogy már használatban van, így kisajátítja magának. Itt érkeztünk el az Arduino uno/mini pro korlátaihoz. Arduino nélkül, szépen c-ben leprogramozva megoldható lenne a probléma, kapásból 2 féleképpen. Vegyél nagyobb Arduino-t, ott van pl. a mega. Abban már sokkal több pwm modul van.
Esetleg átrakod a nem működő kimenetet szoftveres pwm-re, egy másik lábon. De ha egy pwm nem megy, a párjával is gondban leszel, ugyanis egy timerre 2 pwm kimenet csatlakozik. A másikat is át kellene pakolni, hogy a timer teljesen szabad maradjon az infravevőnek. Aztán már csak reménykedjünk, hogy a szoftveres pwm nem akad össze semmivel.
A hozzászólás módosítva: Nov 25, 2016
(#) Xox hozzászólása Nov 25, 2016 /
 
Egy kis segítséget kérek.

Arduino nano digit lába (mondjuk D2) és RTC modul (zs-042 - DS3231 chipes) 32k lába közé elég egy vezeték vagy szükséges valami áramvédelem (200 ohm mondjuk)?

Gondolok arra, hogy ha valamiért a nano D2-ese kimenetre (H szintre) áll és a 32k-n jön a föld - vagy fordítva - akkor nem bántják egymást?
(#) bujan válasza Kovidivi hozzászólására (») Nov 25, 2016 /
 
Köszönöm a segítségedet, most utána nézek a szoftveres pwm-nek. Most, hogy újra átnéztem a beállításoknak igazad volt, mert a digital11 lábat is elvette a digital3 mellé.
(#) Bakman válasza Xox hozzászólására (») Nov 25, 2016 /
 
De, bánthatják egymást. A kimenetek nyitott kollektorosak. Vagy nem jó helyen keresem, vagy az adatlap hallgat róla, hogy mekkora a maximális áram, amit ezek a lábak elviselnek. Én 10 kOhm-os ellenállást javaslok.
(#) Xox válasza Bakman hozzászólására (») Nov 25, 2016 /
 
Köszi!

A 328p leírása néhol kétségbeejtően részletes van amit meg örjítően nehéz megtalálni.

Na igen, az RTC chip speckóját meg nem is néztem. Őt sem árt védeni.
Akkor a 10k-val a biztos.
(#) Antennaman hozzászólása Nov 26, 2016 /
 
Sziasztok,
Engem is utol ért az ARDUINO-s aktivitás vagyis szeretném közelebbről is megtanulni a programozásukat.
Kérdés: El ronthattam-e az ARDUINO MINI PRO-t azzal, hogy 5 V-tal is próbáltam bele tölteni a programot? Nincs különösebb jelölés rajta, hogy hány voltot szeret . Egyszer valahogy sikerült betölteni, lehet akkor még 3,3 V-on próbálkoztam de aztán soha többé semmi nem megy bele, azóta is az az egy program fut rajta.
Közületek volt valakinek hasonló gondja?
(#) jeges hozzászólása Nov 26, 2016 /
 
Halihó!

Szeretném resetelni a beállittot időn belül pl 10sec idő allat megnyomom a button2 akkor újra kezdje a számolást a 10sec ami void Timer_reset() nem igazán müködik zavaros!

Igy kelene hogy müködjön timmer diagram képen!


  1. int wirePin = 13;
  2.  
  3. int button = 3;
  4. int button2 = 5;
  5.  
  6.  
  7. long t1, t_kovetkezo1;
  8.  
  9. void setup() {
  10. pinMode(wirePin, OUTPUT);
  11. pinMode(button, INPUT);
  12. pinMode(button2, INPUT);
  13.  
  14. t_kovetkezo1=millis();
  15.  
  16. Serial.begin(9600);
  17. //digitalWrite(wirePin, HIGH);
  18. }
  19.  
  20. void loop() {
  21.  
  22. Serial.println(t_kovetkezo1);
  23.  
  24. Timer_counter1();
  25.  
  26. // if(digitalRead(wirePin)){Timer_counter1();}
  27.  
  28. if(digitalRead(button)){ digitalWrite(wirePin, HIGH);}
  29.  
  30.  
  31. if(digitalRead(button2)){ Timer_reset();}
  32.  
  33. }
  34.  
  35. void Timer_counter1()
  36. {
  37. t1=millis();
  38. if( t1 > t_kovetkezo1 )
  39. {
  40. t_kovetkezo1=t1+10000;
  41.  
  42. delay(10);
  43.  
  44. digitalWrite(wirePin, LOW);
  45.  
  46. }
  47.  
  48. }
  49.  
  50.  
  51. void Timer_reset()
  52. {
  53. t1=millis();
  54.  
  55. // t_kovetkezo1=t1+10000;
  56.  
  57.  t_kovetkezo1 == 0;
  58.  
  59.  
  60.  
  61. delay(10);
  62.  
  63.  
  64. }
(#) Kera_Will válasza jeges hozzászólására (») Nov 26, 2016 /
 
Ekkor a delay -t ne használd ! Azzal rontod el.

A delay(10) helyett az idő múlását millis() fügvénnyel számold ki (lekéred mindig a millisel az induló értéket 1 változóba majd összehasonlítod az értékét a sok ezerrel többel (millis 1000 érték változása egyenlő 1 sec ) ha ez éppen 10ezer akkor 10 sec az időzítés!
Ekkor nem függesztődik fel a uC működése , megszakításokra is jobban reagál .
DELAY esetén "kvázi megáll a uC" teljesen .
A hozzászólás módosítva: Nov 26, 2016
(#) jeges válasza Kera_Will hozzászólására (») Nov 26, 2016 /
 
figyelek....
felvázolnád mire gondolsz én kifogytam az ötletekböl egyenlöre!
(#) Kera_Will válasza jeges hozzászólására (») Nov 26, 2016 /
 
A millis függvényt használd fel időzítésre ennyi a lényeg ...
Vissza olvasol, itt többen belefutnak ebbe a problémába.
Vagy keressél rá multitasking arduino vagy időzítés delay nélkül.
Erre van tipikus példa program is hogy gombnyomásra lehet villogó sebességet váltani...
Amíg delayyal dolgozol akkor csak adott pillanatban tudsz váltani, millis esetén bármikor.
Vagy nézd át azt amit az arduino megszakítás kezeléséről írnak.
delay nelkul idozit
multitasking millis
A hozzászólás módosítva: Nov 26, 2016
(#) jeges válasza Kera_Will hozzászólására (») Nov 26, 2016 /
 
Az egész kodban van 2 db millis idözités ami fix 10sec millis a másiknak kelene ezt ujra inditani 10sec belüli idö intervalumba ha button2 meg nyomon na ez ami nem müködik Timer_reset() !
(#) jeges válasza Kera_Will hozzászólására (») Nov 26, 2016 /
 
Timer_counter1 teljes millis idözités!
(#) Kera_Will válasza jeges hozzászólására (») Nov 26, 2016 /
 
A delay(10) utasitassal rontod el ... ezt csak ismételni tudom ... enélkül végezd el millis el a 10 sec időzítést.
(#) Kera_Will válasza jeges hozzászólására (») Nov 26, 2016 /
 
Idézet:
„void Timer_counter1()
{
t1=millis();
if( t1 > t_kovetkezo1 )
{
t_kovetkezo1=t1+10000;

delay(10);

digitalWrite(wirePin, LOW);

}”


ott a delay 10 ... ez baj !
(#) kapu48 válasza jeges hozzászólására (») Nov 26, 2016 /
 
Első hiba, hogy elöjelnélküli: unsigned long nak kel deklarálni a változókat!
  1. unsigned long t1, t_kovetkezo1;
(#) jeges válasza Kera_Will hozzászólására (») Nov 26, 2016 /
 
void Timer_counter1()
{
t1=millis();
if( t1 > t_kovetkezo1 )
{
t_kovetkezo1=t1+10000;


digitalWrite(wirePin, LOW);

}
igy is a helyzet változatlan de ez a rész frankon idözit 10sec is!!!
(#) (Felhasználó 120038) válasza jeges hozzászólására (») Nov 26, 2016 /
 
Szia!

t_kovetkezo1 == 0;

Ez sem jó! (már ha értékadó utasítást szerettél volna)
(#) jeges válasza kapu48 hozzászólására (») Nov 26, 2016 /
 
long vagy unsigned long nincs változás....
(#) jeges válasza (Felhasználó 120038) hozzászólására (») Nov 26, 2016 /
 
erre a részre gongolok énis de mi???
amikor folyik 10sec a Timer_counter1 azon idön belül ha nyomok egy button2 akkor kelene ujrainditani induljon 10 sec ez lene a logikai lényeg az egész megoldásnak!
(#) Kera_Will válasza jeges hozzászólására (») Nov 26, 2016 /
 
ok akkor használd ... én szóltam ... ...
(#) (Felhasználó 120038) válasza jeges hozzászólására (») Nov 26, 2016 /
 
fáradt vagyok, de:

t_kovetkezo1 = 0;
(#) jeges hozzászólása Nov 26, 2016 /
 
leirom fizikai példával!

button2=mozgásérzékelö " void Timer_reset()"
lámpa bekapcsolva maradási idö =10sec "Timer_counter1();"
mozgási idö = véletlenszerü

ha mozgás van egyszer lámpa bekapcsolási idö max 10sec van több mozgás 10sec mindig ujra indul lámpa bekapcsolás folyamatos látszik vagyis csak nullázuk a 10sec!
A hozzászólás módosítva: Nov 26, 2016
(#) szeg76 válasza jeges hozzászólására (») Nov 26, 2016 /
 
button elindítja az időzítést, button2 újraindítja a futó időzítést

  1. int wirePin = 13;
  2. int button = 3;
  3. int button2 = 5;
  4.      
  5. long t1, t_kovetkezo1;
  6.      
  7.  
  8. void setup()
  9.   {
  10.     pinMode(wirePin, OUTPUT);
  11.     pinMode(button, INPUT);
  12.     pinMode(button2, INPUT);
  13.      
  14.     t_kovetkezo1=millis();
  15.   }
  16.  
  17.      
  18. void loop()
  19.   {
  20.   if(digitalRead(wirePin)) Timer_counter1();
  21.      
  22.   if( digitalRead(button))  digitalWrite(wirePin, HIGH);
  23.      
  24.   if( digitalRead(button2))  Timer_reset();
  25.   }
  26.      
  27.      
  28.      
  29.      
  30. void Timer_counter1()
  31.   {
  32.     t1=millis();
  33.     if( t1 > t_kovetkezo1 )
  34.       {
  35.       t_kovetkezo1=t1+10000;
  36.       digitalWrite(wirePin, LOW);
  37.       }
  38.   }
  39.      
  40. void Timer_reset()
  41.   {
  42.     t_kovetkezo1=millis()+10000;
  43.   }
A hozzászólás módosítva: Nov 26, 2016
(#) jeges válasza szeg76 hozzászólására (») Nov 26, 2016 /
 
Gergő köszönöm nagyon!
Ez ugy müködik ahogy kell teljesült egy nagy problémám ami univerzálisan felhasználható lett több projektemhez is!
(#) Kera_Will válasza szeg76 hozzászólására (») Nov 26, 2016 /
 
Kapu48 írását nem vetted figyelembe : előjel nélküli long változó kell.

Idézet:
„Első hiba, hogy elöjelnélküli: unsigned long nak kel deklarálni a változókat!

unsigned long t1, t_kovetkezo1;”


Másik amikor a millis 0-zódik kb.: 50naponként ... azt is illik figyelni és lekezelni.
Következő: »»   294 / 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