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   391 / 854
(#) csatti2 válasza Balagemann2031 hozzászólására (») Nov 2, 2017 /
 
Valamennyit lehet rajta javítani, de mindenképp látszani fog, az arduino uno nem alkalmas nagy sebességű TFT képernyő kezelésre.

Ebben a projektben is egy hasonló van (picit nagyobb), a jóval jobb hardver ellenére is látszik a képernyő újrarajzolása: Videó
(#) Balagemann2031 válasza csatti2 hozzászólására (») Nov 2, 2017 /
 
Ez elszomorít, tehát ez a kényelem ára... Eddig PIC-ekre programoztam assemblyben, és ott sosem volt gondom a sebességgel, csak a lassú fejlesztés miatt, próbáltam arduinoval időt spórolni a kész könyvtárak révén. (gondolom, itt sem a vezérlő a ludas hanem a könyvtár, elvileg ha 16MHz-en jár az Ardu akkor az 16MIPS-es műveleti sebesség.) Köszi azért!
(#) csatti2 válasza Balagemann2031 hozzászólására (») Nov 2, 2017 /
 
A max SPI 8MHz. Ez max 1Mbyte elméleti maximum. A kijelző feltöltéséhez kb. 150kbyte adat kell, ez 1/8-ad másodperc (ennél persze rosszabb a helyzet, mert CPU-ból kell csinálni, nincs DMA), ez már mindenképp látszik.
(#) berkesandor hozzászólása Nov 3, 2017 /
 
Ezzel a megoldással használok egy plusz interrupt lábat: Bővebben: Link.
Az interruptot egy nyomógomb indítja be, hogyan tudok védekezni a gomb prellelése ellen?
Ez a jelenlegi kódom:

  1. void rtcwakeUp()
  2. {
  3.   ebren();
  4.   detachInterrupt (0);
  5.  
  6.  if ( digitalRead (lcdwakePin)  == LOW )
  7.   {kijelzo = 1;
  8.     gomb = 1;  
  9.   }
  10.   else
  11.   {    eber = 1 ;
  12.          rtc = 1;
  13.   }
  14. }
(#) andyka hozzászólása Nov 3, 2017 /
 
Hali
Az Adafruit_ILI9341 konyvtarral futtatok egy tft lcd-t.A gondom az hogy a default karakterekkel kiiraskor mindig torli egyszer az uj karakterek helyet a tft.setTextColor(szin1, szin2); utasitassal, de nem ugyan ez tortenik a specialis karakter keszletkor (Adafruit_GFX\Fonts). Ha innen vallasztok egy akarmilyen karaktert ( tft.setFreeFont(&_font_); ) akkor nem hajlando mar torolni az ujonnan kiirando karakter helyet, hiaba van a tft.setTextColor(szin1, szin2); utasitas beszurva a kiiras elebe.
Lehet ezt valamikeppen orvosolni ?
A hozzászólás módosítva: Nov 3, 2017
(#) Kovidivi válasza Balagemann2031 hozzászólására (») Nov 3, 2017 /
 
Ez nem az Arduino hibája, csak kicsit gondolkozni kellene. Pl. miért törlöd le az egész kijelzőt, ha csak egy szám változik? Odamész a kijelzőn a szám pozíciójához, rajzolsz egy megfelelő méretű (egy karaktert elfeledő) háttér színű négyzetet, majd ugyanoda kiírod az új számot. Trükközni kell, ennyi a lényeg.
Ha ebook olvasónak akarod használni a kijelzőt, akkor marad a várakozás, de akkor el kell olvasni a kijelző adatlapját, mert nem mindegy, hogy karakterenként küldöd az infót, vagy egy ablakot írsz tele, hogy az írás alatt készíted el az új kijelző képét, ezzel is lassítva a folyamatot, vagy előre legyártod, majd utána csak kiküldöd, és a proci csak a küldéssel tud foglalkozni. Vannak könyvtárak, ahol nagyon pici delay-ek vannak a függvényekben, nagyobb stabilitás miatt, viszont ezekből sok egymás után igencsak lassítja a frissítést. Csak a megoldást kell keresni, és igen jó eredményt tudsz elérni.
Én pl. rengeteg számot jelenítek meg a kijelzőn, és csak akkor frissítem, ha változott a szám, és ha az utolsó változtatás óta eltelt x mS. Ezáltal folyamatos a kép, nem remeg, nem szaggat, nincs törlési efektus, egyszerűen csak pörögnek, változnak a számok.
(#) kapu48 válasza berkesandor hozzászólására (») Nov 3, 2017 /
 
Raksz a nyomógombokkal párhuzamosa 100n kerámia kondikat! Ez csökkenti a szikrázást.

Tapasztalatból tudva a gombok elengedéskór prelleznek.
És mivel nem tudjuk, menyi idő múlva engedik fel a gombot? Ezt megszakításban hiba lenne kivárni.
Inkább figyelni kellene, ha ugyan arra a gombra rövid időn belül még 1 megszakítás érkezik?
Azt nem hajtja végre.
(#) berkesandor válasza kapu48 hozzászólására (») Nov 3, 2017 /
 
Úgy csináltam, hogy az arduino D2 lába össze van kötve direktben egy DS3231 SQW lábával, az arduino D5 lába egy 4148-on keresztül a D2-vel, és ez a kör egy nyomógombon keresztül GND-re lehet kapcsolni.
Ha az rtc indítja az interrupt-ot, D5 magas marad az - > egyik funkció indul.
Ha a nyomógombot használom az indulás pillanatában D5 alacsony -> másik funkció indul.
Azt szeretném, a két "eset" elkülönítése tökéletesen működjön.
Úgy gondolom biztosabban működne dolog, ha többször megvizsgálnám, D5 szintjét, és utána döntenék.
(#) kapu48 válasza berkesandor hozzászólására (») Nov 3, 2017 /
 
Ez attól függ milyen gyorsan kel reagálni a megszakításra?
A többször i vizsgálat utáni döntés, szintén csak időhúzás a megszakításban.
Ezzel az a gond, hogy addig semmi mást nem tud csinálni az uC!

És már említettem akár másodpercekig is rajta hagyhatja az úját a gombon a felhasználó!
Addigra lekezeled a megszakítás, és mikor felengedi, akkor jön 1-3 prrel. Ha csak az elsőre reagálsz?
Ez már 2 végrehajtást jelent.
A hozzászólás módosítva: Nov 3, 2017
(#) berkesandor válasza kapu48 hozzászólására (») Nov 3, 2017 /
 
Nem kell gyors reakció, lehet 2-3 mp is.
Az interrupt egy mérési folyamatot indít (a ciklus kb. 30 mp-ig tart), aminek idejére ki vannak kapcsolva a interuptok, nem lehet, hogy új megszakítás érkezik a folyamat befejezése előtt.
(#) kapu48 válasza berkesandor hozzászólására (») Nov 3, 2017 /
 
Így működő képesnek tűnik!
Aztán úgy is tesztelni kel az egész rendszert!
(#) berkesandor válasza kapu48 hozzászólására (») Nov 3, 2017 /
 
Teszteltem, és van tévesztés.
(#) kapu48 válasza berkesandor hozzászólására (») Nov 3, 2017 /
 
Ilyenkor jön, hogy más módszert próbálunk!

Esetleg amit fentebb javasoltam?
Nem olyan nehéz azt sem megvalósítani!
(#) kapu48 válasza kapu48 hozzászólására (») Nov 3, 2017 /
 
Még van, hogy a megszakítás végén kikapcsolod a megszakítás kérés jelző bitet. (A neve most nem ugrik be)
Ezzel törlöd a közben beérkezett újbóli kérések végrehajtását.
A hozzászólás módosítva: Nov 3, 2017
(#) berkesandor válasza kapu48 hozzászólására (») Nov 3, 2017 /
 
Teszek rá kondit, kipróbálom. Aztán meglátom, kell e még valami szoftveres trükk.
(#) zsolt58 hozzászólása Nov 5, 2017 /
 
Sziasztok.
Segitséhet szeretnék kérni.
Még pedig abban, hogy egy adott idö allat lehessen nyomkodni 2 gombot aztán pedig ha letelt utánna már nem.
A program eddig igy áll, még erre kellene varázsolni egy ilyen idözitöt.
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3.  
  4. LiquidCrystal_I2C lcd(0x3f, 16, 2);
  5.  
  6. int gomb1 = 5;
  7. int gomb2 = 6;
  8. int reset = 7;
  9. int led1 = 8;
  10. int i = 0;
  11. int a = 7;
  12. int buttonState = 0;
  13. int buttonState2 = 0;
  14. int buttonState3 = 0;
  15.  
  16. void setup()
  17. {
  18.   Serial.begin(9600);
  19.   pinMode(gomb1, INPUT);
  20.   pinMode(gomb2, INPUT);
  21.   pinMode(reset, INPUT);
  22.   pinMode(led1, OUTPUT);
  23.         lcd.begin();
  24.   lcd.backlight();
  25. }
  26.  
  27. void loop(){
  28.    buttonState = digitalRead(gomb1);
  29.   if (buttonState == HIGH & a == 7) {
  30.     digitalWrite(led1, HIGH);
  31.     ++i;
  32.     a=8;
  33.      delay(200);
  34.   } else {
  35.     digitalWrite(led1, LOW);
  36.   }
  37.  
  38.   buttonState2 = digitalRead(gomb2);
  39.   if (buttonState2 == HIGH & a == 8) {
  40.    digitalWrite(led1, HIGH);
  41.     ++i;
  42.     a=7;
  43.      delay(200);
  44.   } else {
  45.     digitalWrite(led1, LOW);
  46.   }
  47.   buttonState3 = digitalRead(reset);
  48.   if (buttonState3 == HIGH) {
  49.    digitalWrite(led1, HIGH);
  50.    lcd.clear();
  51.    a = 7;
  52.    i = 0;
  53.    delay(200);
  54.   } else {
  55.     digitalWrite(led1, LOW);
  56.   }
  57.   lcd.setCursor(0,0);
  58.   lcd.print(i);
  59. }

Üdv.
(#) game4812 válasza zsolt58 hozzászólására (») Nov 5, 2017 / 1
 
Behozol egy értéket, amit összehasonlítasz a millissel pl:
  1. if (buttonState3 == HIGH && idozito>millis()) {

Így csak akkor fog történni valami, ha a program kevesebb ideje fut, mint az "idozito"-ben megadott érték.
(#) Tys23 hozzászólása Nov 5, 2017 /
 
Sziasztok találkoztatok már a következő jelenséggel?
vettem egy 3.5" os TFT-T UNOhoz /MCUFRIED/
letöltöttem hozzá a demo kódokat és jöttek a hibák..
-tükröződve jelenik meg rajta a kép
-az érintő panel kódját meg fel sem tölti
Inkább az első problémára keresek megoldást!
vezérlő elvileg ili9488
felbontás 480x320
elvileg helyes Libaykat töltöttem le.
(#) Tys23 válasza Tys23 hozzászólására (») Nov 5, 2017 / 1
 
megoldódott:

//
// This demo was made for modules with a screen resolution
// of 480x320 pixels.
//
// This program requires the UTFT library.
//

#include <Adafruit_GFX.h>
#include <UTFTGLUE.h>
UTFTGLUE myGLCD(0x9341,A2,A1,A3,A4,A0);

0x9341 helyén 0x9488 ált, átt keltet írni gondolom így ismeri meg a fordító hogy milyen kijelzőre vagyunk kötve
(#) djusee válasza zsolt58 hozzászólására (») Nov 6, 2017 / 1
 
Szia.
Hibásak a feltétel vizsgálásnál az AND jelek.
Idézet:
  1. if (buttonState == HIGH & a == 7)

Nem ugyanaz mint a
  1. if (buttonState == HIGH && a == 7) {

Helyesebben
  1. if ((buttonState == HIGH) && (a == 7)) {

Ez is lehetne még jobb de igy remélem érthetöbb.
A szimpla ÉS jel a bitközi ÉS.
A hozzászólás módosítva: Nov 6, 2017
(#) gammabuta hozzászólása Nov 6, 2017 /
 
Sziasztok!
Van egy egyszerű kis progim, az arduinon csak egy serial-al írható radioadó hc-12 modul van (SoftwareSerial.h-val használom) illetve egy mpu6050 gyro sensor amit i2c-n olvasok (Wire.h-val).
'Lopásgátló' lenne, küldené az adatokat, hogy elmozdult-e a szenzor.
De sajnos véletlenszerűen kiakad és a
while(Wire.available() < 14); sor egyszer csak beragad és sosem lesz 14...... ott leakad.

Az az érdekes, hogy csak a szenzor vagy csak a rádió kódja teljesen jól működik (csak a kód számít felforrasztva lehet mind a 2) ezen az arduinon is, ha mind a 2-t használom a progiban akkor történik csak hogy a a szenzor nem küld adatot...

Bővebben: Link kód
A hozzászólás módosítva: Nov 6, 2017
(#) zsolt58 hozzászólása Nov 6, 2017 /
 
Segitséget kérek.
  1. Arduino: 1.8.1 (Windows 7), Alaplap:"Arduino/Genuino Uno"
  2.  
  3. Sketch uses 5136 bytes (15%) of program storage space. Maximum is 32256 bytes.
  4. Global variables use 446 bytes (21%) of dynamic memory, leaving 1602 bytes for local variables. Maximum is 2048 bytes.
  5. avrdude: stk500_recv(): programmer is not responding
  6. avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xec
  7. avrdude: stk500_recv(): programmer is not responding
  8. avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xec
  9. avrdude: stk500_recv(): programmer is not responding
  10. avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xec
  11. avrdude: stk500_recv(): programmer is not responding
  12. avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xec
  13. avrdude: stk500_recv(): programmer is not responding
  14. avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xec
  15. avrdude: stk500_recv(): programmer is not responding
  16. avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xec
  17. avrdude: stk500_recv(): programmer is not responding
  18. avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xec
  19. avrdude: stk500_recv(): programmer is not responding
  20. avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xec
  21. avrdude: stk500_recv(): programmer is not responding
  22. avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xec
  23. avrdude: stk500_recv(): programmer is not responding
  24. avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xec
  25. Hiba a feltöltés során. A hiba elhárítása a http://www.arduino.cc/en/Guide/ oldalon a Troubleshooting#upload alatt került leírásra.
  26.  
  27. This report would have more information with
  28. "Show verbose output during compilation"
  29. option enabled in File -> Preferences.

Köszi.
(#) djusee válasza zsolt58 hozzászólására (») Nov 6, 2017 / 1
 
Hibás COM port van kiválasztva vagy valami használja a COM portodat, valamilyen program kommunikál az Arduino -val. Esetleg egy reboot, Windows -al volt nekem is ilyen gond, pl task manager ben szinte 100 százalékon pörgött az avrdude akkor is ha becsuktam az arduino IDE t.
A hozzászólás módosítva: Nov 6, 2017
(#) game4812 válasza zsolt58 hozzászólására (») Nov 6, 2017 / 1
 
Privátban megoldottuk, de hátha valakinek később segít, a hiba a Bluetooth modul volt az Rx-Tx lábakon.
(#) pjg hozzászólása Nov 6, 2017 /
 
Van egy egy FTDI 232 modul. Adna valaki egy működő drájvert Win 8.1-hez. Már letöltöttem párat. de csak vírust kaptam. Köszi
(#) icserny válasza pjg hozzászólására (») Nov 6, 2017 /
 
Ezt az oldalt nézted már? A Win 8.1 is szerepel a támogatási listáján.
(#) pjg válasza icserny hozzászólására (») Nov 6, 2017 /
 
Köszi. Már sikerült. De! A COM3 portot látja, az arduinót nem.
(#) frob hozzászólása Nov 7, 2017 /
 
Sziasztok

Mi lehet a hiba amiért nem jön meg aminek kellene?
szam=inputString.substring(0,2).toInt()

A bemenet pl "001" de 111 re sem ad vissza semmit...

Előre is köszi!
(#) frob válasza frob hozzászólására (») Nov 7, 2017 /
 
Ha az ember leírja hamarabb meglátja a hibát
Ami 2 is volt
1 töröltem a változót mielőtt feldolgoztam volna,
és a második szám a hossz, nem pedig hogy meddig...


A második hiba még se hiba csak félig, rossz szám megadás volt és mégse a hosszt hanem az addig jelöli, csak nem hje a help
A hozzászólás módosítva: Nov 7, 2017
(#) akos328 hozzászólása Nov 8, 2017 /
 
Szervusztok!
Szakdolgozatomat írom éppen és témám ÉKG görbe mérése arduinoval.
a test felszínről levett jel, nagyon zajos, amit többé kevésbé sáváteresztő szűrővel szűrök, de a szívképben frekvencia is előfordul, ezért nem tudok minden zajt leszűrni, anélkül, hogy a szívkép ne legyen veszteséges. konzulensem erre azt a tippet adta, hogy digitális szűrővel, autokorrelációval. Bőségesen utána olvastam a témának, de nagyon sok inkább matematikai teóriákat találtam csak a témával kapcsolatosan.
Határértékszámításokat, integrál számításokat, Fourier transzformációkat. Matematikai tanulmányiam miatt többé kevésbé értem a cikkeket, de például egy integrálszámítást vagy egy Fourier transzformáció nem tudok leprogramozni C nyelven arduinora.
Valaki estleg foglalkozott már ilyennel? esetleg van erről valami ismert cikk? csak mert én nem igazán találok.
Auokorreláció fogalma alatt találtam egy cikket, mely azt mondja, hogy egy értéket összehasonlít egy eltolt értékkel, például az előző időpillanatban felvett értékével. A példaprogram úgy nézett, ki, hogy egy tömböt feltöltött mért értékekkel, majd az i tömb elemet, összeadta i-1 tömb elemmel és az összeget eltárolta egy változóba. Elképzelhető, hogy ilyen egyszerű lenne? ha igen akkor valaki eltudná magyarázni, hogy miért is működik ez a fajta metodika?
Előre is köszönöm a segítséget
Következő: »»   391 / 854
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