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   85 / 853
(#) dokidoki válasza mikrokapcsolo hozzászólására (») Feb 17, 2015 /
 
Szia. Nem tudom milyen az a szünetmentes tápegységed, de amivel én találkoztam, azok kétféle üzemmódban voltak indíthatóak. Régen szívtam is miatta, azóta jól megjegyeztem mit kell tenni, hogy olyan jelenséget elkerüljem mint amivel Te is küzdesz. Alapesetben gombnyomásra un. Green módban indulnak, és lekapcsolgatnak kis terhelés esetén. De ha ezt el akarod kerülni, akkor a bekapcsológombot nyomva kell tartani, míg kettőt nem villan - csippan, ekkor normálisan indul, és kimerülésig hasít. Nem függ, hogy van -e rajta terhelés vagy nincs.
(#) csatti2 válasza mikrokapcsolo hozzászólására (») Feb 17, 2015 /
 
Hát ezt a kódot félelmetesen túlbonyolítottad.

Próbáld ki ezt. (Nincs nálam mikrokontroller, nem tudtam kipróbálni)

  1. #include <LiquidCrystal.h>
  2.  
  3. LiquidCrystal lcd0(7, 8, 6, 5, 4, 3);
  4. LiquidCrystal lcd1(7, 9, 6, 5, 4, 3);
  5.  
  6. int gomb = 0; //interrupt pin, 2-es láb
  7.  
  8. volatile unsigned long latestbeep = 0;
  9. volatile unsigned long beepcycletime = 0;
  10. volatile bool newbeep = false;
  11.  
  12. void setup() {
  13.   lcd0.begin(16, 2);
  14.   lcd1.begin(16, 2);
  15.   lcd0.clear();
  16.   lcd1.clear();
  17.   attachInterrupt(gomb, beepd, FALLING);
  18. }
  19.  
  20. void loop()
  21. {
  22.   bool checked = true;
  23.  
  24.   if (newbeep) {
  25.     checked = false;
  26.     newbeep = false;
  27.     lcd0.setCursor(0, 0);
  28.     lcd0.print(latestbeep);
  29.     if (beepcycletime > 1000UL && beepcycletime < 5000UL) lcd1.print("B");
  30.     else if (beepcycletime > 9000UL && beepcycletime < 11000UL) lcd1.print("A");
  31.     else
  32.       lcd1.print(" ");  
  33.   }
  34.  
  35.   unsigned long check = latestbeep - millis();
  36.  
  37.   if (check > 12000UL && !checked) {
  38.     lcd1.print("C"); //
  39.     checked = true;
  40.   }
  41. }
  42.  
  43. void beepd()
  44. {
  45.   static unsigned long ltime = 0;
  46.   latestbeep = millis();
  47.   beepcycletime = latestbeep - ltime;
  48.   ltime = latestbeep;
  49.   newbeep = true;
  50. }
A hozzászólás módosítva: Feb 17, 2015
(#) csatti2 válasza csatti2 hozzászólására (») Feb 17, 2015 /
 
Persze, hogy benéztem.

unsigned long check = millis() - latestbeep;
(#) mikrokapcsolo válasza dokidoki hozzászólására (») Feb 17, 2015 /
 
Helló! Sajos ez a szünetmentes nyomókapcsolóval kapcsol be, hiába tartom nyomva, nem változtat rajta.

csatti2: Köszönöm a programot, este kipróbálom.
A hozzászólás módosítva: Feb 17, 2015
(#) mikrokapcsolo válasza csatti2 hozzászólására (») Feb 17, 2015 /
 
Fölraktam gyorsan a programot, de semmit nem ad az lcd1-en, vagyis semmi kimenetet nem ad.
Szerk.: Kicseréletm a print(" ") részt print ("_")-re, és így látom, minden jelnél kiír kettő _-t.
A hozzászólás módosítva: Feb 17, 2015
(#) erdeidominik1999 hozzászólása Feb 17, 2015 /
 
Sziasztok! Egy kicsit elakadtam egy Serial.read()-os programmal, már 3 napja szenvedek vele, és nem jutok dűlőre, az a lényeg, hogy az alábbi szöveg érkezik serialon:
  1. +CMGR: "REC READ","+36xxxxxxxxx","3","15/02/17,17:24:22+04"
  2. Ez most egy proba
  3.  
  4. OK

és ebből ki kéne szednem azt a részt, hogy "Ez most egy proba" ill. a telefonszámot és egy változóba betuszkolni, (külön változóba) de ez a szöveg akármilyen hosszú lehet, az a gond, egyedül az az "OK" lehetne a támpont utána. Előre is nagyon köszi!
(#) proba válasza erdeidominik1999 hozzászólására (») Feb 17, 2015 /
 
Támpont +cmgr: utána az idéző jelek, soremelés a vesszők.....
(#) erdeidominik1999 válasza proba hozzászólására (») Feb 17, 2015 /
 
De már csomót szenvedtem vele stringgel és nem jó...
(#) proba válasza erdeidominik1999 hozzászólására (») Feb 17, 2015 /
 
Mondjuk én piccel próbáltam, M35 üzeneteiből kiszedni a telefonszámot, üzeneteket, ott ezek a támpontok teljesen jól működtek. Arduinón még nem foglalkoztam string darablással. Lehet rosszul közelíted meg. Eltárolod egy stringbe, utána azt hiszem a stringet lehet tömbként használni, így minden karakter egyesével vizsgálható. Ha ez megy, már csak egy lépés a CMGR: kikeresése, utána az x-edik idézőjel megkeresése és a következő idézőjelig egy másik változóba átpakolás.
Nem tudom a serialread() - nek van e karakter olvasós változata, hogy ezt valós időben elvégezd. Itt viszont a gond az lehet, nagyon tömör programot kell írni, mert két byte vétele között nagyon rövid idő van, max 1-200 utasítás (már a lefordított változatban) lehet.
A hozzászólás módosítva: Feb 17, 2015
(#) erdeidominik1999 válasza proba hozzászólására (») Feb 17, 2015 /
 
Sikerült megcsinálnom, viszont mivel a szöveg új sorba kezdődik az időzőjel után nekem is bekerül egy sortörés, azt hogyan lehetne eltávolítani?
(#) proba válasza erdeidominik1999 hozzászólására (») Feb 17, 2015 /
 
Szerintem sima számként vizsgálva csere ill törlés, figyelmen kívül hagyás. Vizsgálatnál nem karakterként hanem számként nézed, és ha nem érvényes asc értékkel rendelkezik törlés. pl 0A, 0D akkor az a sorvéget jelenti tehát egy jó szinkronizálási pont, de a feldolgozáshoz nem kell.
(#) erdeidominik1999 válasza proba hozzászólására (») Feb 17, 2015 /
 
Köszi és még annyi, hogy ha egy stringhez hozzáfűzök, azt hogyan tudom megcsinálni, hogy a két string között legyen egy sortörés?
(#) Újbácsi válasza csatti2 hozzászólására (») Feb 17, 2015 /
 
Köszönöm a hasznos infót!
Ez egy motorvezérlőt helyettesítő program, és mutatott a programozó videót is, láthatóan működik vele a moci.
Így reménykedem, hogy nem cseszek el valamit...
Viszont pm-ben kérdeznék egy-két kisebb dolgot, ha nem baj...
(#) csatti2 válasza Újbácsi hozzászólására (») Feb 17, 2015 / 1
 
Persze kérdezz nyugodtan. Ha viszont másoknak is hasznos az infó, akkor inkább itt a fórumon menjen.
(#) csatti2 válasza mikrokapcsolo hozzászólására (») Feb 17, 2015 /
 
Hmm, annak csak egyszer szabadna megjelennie (Első beepnél, amikor még nincs infónk a ciklushosszról). Lehetséges, hogy picit ugrál a jel és nem atomstabil. Próbáld meg ezt.
  1. if (newbeep) {
  2.     checked = false;
  3.     newbeep = false;
  4.     if (beepcycletime > 500UL) {
  5.         lcd0.setCursor(0, 0);
  6.         lcd0.print(latestbeep);
  7.         if (beepcycletime > 1000UL && beepcycletime < 5000UL) lcd1.print("B");
  8.         else if (beepcycletime > 9000UL && beepcycletime < 11000UL) lcd1.print("A");
  9.         else
  10.           lcd1.print("_");
  11.      }
  12.   }
(#) kocsgab002 hozzászólása Feb 17, 2015 /
 
Sziasztok.
FTDI adapterrel fel tudok tölteni arduino UNO bootloader ATMEGA328P-re? valahogy nekem nem jön össze. Com port kiválasztva, programozónál AvrISP MKII van beállítva, de
avrdude: usbdev_open(): did not find any USB device "usb" hibaüzenetet kapok. Ötlet esetleg?
(#) csatti2 válasza erdeidominik1999 hozzászólására (») Feb 17, 2015 /
 
Szám kinyerése egyszerűen, ha egyezik a parancskód.
Teszteléshez csak írj be tesztszövegeket a serial monitor-ra.

  1. #include <string.h>
  2. #include <stddef.h>
  3.  
  4. void setup()
  5. {
  6.   Serial.begin(9600);
  7.  
  8. }
  9.  
  10. void loop()
  11. {
  12.   if (Serial.available())
  13.   {
  14.           const char delimiters[] = ":,\n";
  15.           const char dataID[] = "+CMGR";
  16.           String str = Serial.readStringUntil('\n');
  17.           char *cstr = &str[0u];
  18.           char *token;
  19.           token = strtok (cstr, delimiters);
  20.           if (!strcmp(token,dataID)) {
  21.                   token = strtok (NULL, delimiters); //"REC READ"
  22.                   token = strtok (NULL, delimiters); // Phone
  23.                   Serial.println(token);                 
  24.           }
  25.          
  26.   }
  27. }
A hozzászólás módosítva: Feb 17, 2015
(#) csatti2 válasza kocsgab002 hozzászólására (») Feb 17, 2015 /
 
Hmm, nem vagyok benne biztos, hogy ez működhet. Az FTDI egy soros port illesztő. Az IC-d nem nagyon hallgatózik ott, amíg nincs rajta bootloader. Az AvrISP pedig ICSP csatlakozóra van kitalálva (az FTDI-d nem tudja szimulálni azt, mert nem AvrISP). Ha van egy másik arduinod, akkor azt felprogramozhatod ISP-nek (példák között van a program: ArduinoISP). Ezen keresztül már feltöltheted a bootloadert és onnan az FTDI cuccod is működni fog (fontos, hogy csak azután kösd össze az arduinót a chippel [a program leírásában, hogy kell összekötni], amikor már rajta van az ISP szoftver).
(#) mikrokapcsolo válasza csatti2 hozzászólására (») Feb 17, 2015 /
 
Tuti, hogy csak egyetlen lefutó él van, mert egy 555 adja egyenlőre a kimenetet, még szkóppal is megnéztem, nem cakkozik, határozottan vált.
A kódot amint lesz lehetőségem, kipróbálom, lehet, hogy csak csütörtökön fogom tudni. De addig is köszi.
(#) icserny válasza kocsgab002 hozzászólására (») Feb 18, 2015 /
 
A bootloadert akarod beégetni, vagy az már benne van és bootloaderrel az alkalmazást akarod feltölteni?

A kapcsolásod szerintem nem jól van összedugva (a kristály és a kondenzátorok lábai körül nincs minden rendben - bár a fényképen nehezen vehető ki, hogy mi hova megy). A két GND láb legyen összeköve. A VCC és AVCC lábakat is kösd össze!
(#) andykaaa hozzászólása Feb 18, 2015 /
 
Sziasztok.
Lenne egy elmeleti kerdesem, lehet egy PWM labat, kimenetnek, ketfele keppen hasznalni ? Sima digital, magas vagy alacsony szintunek es PWM -nek, na persze nem ugyanabba a pillanatba ?
(#) mrobi válasza andykaaa hozzászólására (») Feb 18, 2015 /
 
Ha a kitöltési tényezőt maximálisra állítod akkor az logikai 1 nek felel meg.
(#) andykaaa válasza mrobi hozzászólására (») Feb 18, 2015 /
 
Koszi.
(#) kocsgab002 válasza icserny hozzászólására (») Feb 18, 2015 /
 
Szia.
Először a bootloadert szerettem volna beégetni, de sokadik próbálkozásra sem ment, feladtam. Nincs baj, mert van másik arduino uno-m, meg USBasp-m, meg avr doper-em, tehát meg tudtam oldani, csak kíváncsi voltam. Viszont. ArduinoISP-n keresztül beégettem egy UNO bootloadert ebbe a próbapanelos kapcsolásba, rátöltöttem a blink alapprogramot, minden működik, okés. De visszakábeleztem az FTDI adaptert, hogy akkor most már mennie kell az alkalmazás feltöltésnek, de sajna így sem. Milliószor átnéztem, minden ok, GND-k össze vannak kötve, VCC-k össze vannak kötve, FTDI adapter helyesen van bekötve. Ugyanakkor van egy Arduino mini PRO-m, azzal hibátlanul megy. Egyenlőre tanácstalanul pislogok..
A hozzászólás módosítva: Feb 18, 2015
(#) csatti2 válasza kocsgab002 hozzászólására (») Feb 18, 2015 /
 
Tegyél fel légyszi egy képet felülnézetből. Talán látjuk a bekötésből, hogy mi nem stimmel. Pl. a korábbi képednél én nem látom a 10k-s ellenállást a reset vonalon (lehet ott van, de nem látszik). A kristálynál sem látok földet.
(#) kocsgab002 válasza csatti2 hozzászólására (») Feb 18, 2015 /
 
Szia.
Amint hazaérek tesztek fel. 10k-val felhúztam a resetet, 100nF-on keresztül ment a dtr lábra az FTDI adapteren. kvarcnál megvan a GND, mert mondom, ISP-n keresztül felmegy rá a blink.
(#) Újbácsi hozzászólása Feb 18, 2015 /
 
Lehet értelmes oszcilloszkópot írni Arduino Mega-ra?
Illetve egy mondjuk 3,2"-os 240x320-as felbontású panel elég gyors lehet megjelenítőnek?
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Feb 18, 2015 /
 
Köszi!
(#) Kovidivi válasza Újbácsi hozzászólására (») Feb 18, 2015 / 1
 
Az Spi sebessége a korlátozó tényező. Megaval (vagy Unoval) csak képkockákat kapsz. Gyorsabb mikrovezérlő kell, pl. Due. Rákereshetsz: arduino duo vs. mega (youtube).
(#) GPeti1977 válasza Újbácsi hozzászólására (») Feb 18, 2015 / 1
 
Nézd meg az alacsony költségű digitális oszcilloszkóp topikot, szerintem az spi sebessége nem lesz elég.
Következő: »»   85 / 853
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