van egy arduino klónom ch340 (kinai). az a gondom vele,hogy amikor rákötöm a pc-re beismeri, a portot is megadja, viszont amikor sketchet töltenék fel rá sokáig "gondolkodik", majd kiír egy STK- 500 hibakódot. mi lehet a gond? bootloader vagy valami hardveres izé? Feltöltés alatt az rx-tx ledek nem villódznak.
Arduinoban Mega2560 -at programozgatok hobby szinten, de most szeretnék egy komolyabb project-et létrehozni, és ebben kérném a segítségeteket.
A problémám: szeretnék érintőképernyőt és rajta elég sok információt és gombot, almenüt megjeleníteni.
Létezik valamilyen grafikus szerkesztő program ilyen célra?
A MikroE Visual TFT-je megvan, de annak a kódját át lehet vinni Arduino-ba?
Vagy találtam még az MS Visual Studio-hoz az Arduino IDE for Visual Studio and Atmel Studio, illetve ott van még az Atmel Studio, de ezek kódjai átvihetők, vagy közvetlen belőlük leprogramozható a Mega2560 (CH-s USB illesztő van a panelen)?
A MikroE -vel az a "problémám", hogy kényelmesen tanultam meg programozni, és a tris és egyéb bitek beállítása nem nagyon megy, mert hát ugye Arduino-ban nem kellenek...csak input output..szóval sokkal könnyebb, de most érzem a kényelem hátrányát!
Ellenőrizd a bekötéseket. Nekem volt olyan 1602-es displaym, I2c vezérlővel, ami nem volt hajlandó csak 5 volt tápról megszólalni - az elvileg ikertestvére meg 3.3V-ot kért, az 5V-ot nem szerette :( Nem méregettem az alkatrészeiket, egyébként sem rutin művelet nálam a felületszerelt panelek forrasztgatása.
szerintem minden, hozzánk hasonló amatőr megszívta már, hogy nem állította be az LCD kontraszt-feszültségét.
ez egy sima trimmerpoti a nyákon - az LCD már az inicializálás során kiír értelmezhetetlen karaktereket - ha azokat SEM látod, akkor én ezzel a potival kezdeném.
Az i2c lcd meghajtó pontos típusától és paraméterezésétől (gyakorlatban: címzésétől) függ. Ha hardveresen alkalmas a 3,3V-ról való működésre (és ezt a kijelző is támogatja), akkor minden további nélkül működnie kellene. Ha nem, akkor két eset van. A jobbik az, hogy bár az i2c meghajtó 5 V tápfeszt kér, de elfogadja magas jelszintnek a 3,3V-ot és alacsonynak a 0 és 1 V közötti értéket az i2c buszon. A nehéz kérdés itt mindig az, hogy a 4k7 felhúzást mihez képest csinálod, 3,3 V-hoz, vagy 5 V-hoz... Elrontani ezzel nem tudod, érdemes mindkettőt kipróbálni (ha és amennyiben az illesztőn magán nincs ilyen -- ez ahány, annyi féle interpretáció). Mindent i2c szkennerrel. Ha semmi sem megy, érdemes megnézni, hogy egyáltalán jön-e ki bármi is az ESP-ből. Ehhez egy bármilyen alap szintű oszcilloszkóp elég.
Nekem 10 ilyen esetből 9-szer az volt, hogy szoftveresen el sem indult az i2c. Ez sok tíz óra szívást jelent. Szkóppal ez 2 perc. Se.
Ja, egyébként ha bármi megjelenik a szalagokon, ami legalább hasonlít arra, amit szeretnél, akkor a könyvtárak jók, csak az adatkezelést kell megoldani.
Ez nem hardver, hanem szoftver feladat. Ha a betűk szétesnek, annak az az oka, hogy rossz címzéssel megy ki az információ.
A megfelelő megoldás, hogy négyzethálós papírra felrajzolod azt a négyzethálót, amit a ledek kiadnak, és sorban megszámozod őket, ahogy be vannak kötve. Erre kerül egy mátrix, amely a kiküldött adatokat kell tartalmazza. A megoldás lényege, hogy a kiküldött adatok sorrendjét kell egy megadott szisztéma szerint megváltoztatni. Nem ördöngősség, de gondolkodni kell hozzá.
a WS2812b nem egy mezei led. van benne kontroller. a bejövő adatból levesz 24 bitet a saját színéhe, a többit továbpasszolja. ha a szalag az 100led, akkor az elején betolsz egy 2400bites keretet, és szépen az összes led olyan színű lesz, amilyet akartál.
Tulajdonképpen semmi mást nem tettem, mint hogy minden levágott szalagot összekötöttem forrasztás nélkül (ilyen csatit lehet kapni). Az első szalag alá tettem a másodikat , ez alá a harmadikat és így tovább.... Tulajdonképpen az első szalag -mondjuk 10-ik ledje a második szalag 25-ik ledje.... ehhez hasonló az elrendezés (remélem sikerül belinkelnem) : https://subethasoftware.com/2014/03/15/simple-scrolling-led-sign-for-neopixel-ws2811-or-lpn8806/
Szeretnék egy kis segítséget kérni, amennyiben ez lehetséges. Elsősorban leszögezném, nem vagyok programozó, hobby célból próbálkozom. Van egy 5 méteres WS2812b led szalagom (300 led), melyet feldaraboltam 8-szor 36 ledes csíkra.
Sorba kötöttem őket (, nem párhuzamosan, hanem sorba-, láncba), így helyeztem el minden csíkot egymás alá. Így készítettem egy led panelt, egy oldali betáppal (5 V). Olyan szeretnék hogy ezen a panelen egy irányba betűk és számok fussanak (jobbról-balra például). Találtam hozzá kódot, de nem működik, azért nem, mert a betűk "szétesnek". A program elvileg kimondottan ilyen láncra van írva.
Létezik-e olyan kód Arduino alá, ami ezt megoldja. Azt tudom, hogy minden második szalag "adata" ellentétes irányú. Hiába próbáltam ki a különböző könyvtárakat Arduino alatt (FastLed, FabLed, Ledws, Ms Parola stb....) nem találtam olyat ami "visszafordítja" a ledeket. Remélem értitek, hogy mit szeretnék Előre is köszönöm mindenki segítségét...
Nincs jelentősége, hogy utángyártott, a filléres kínai modulok 99 százaléka ipari hulladék sajnos, a legtöbbnek eleve elbaltázott a tervezése minden szempontból.
Alapvetően kód nélkül nem lehet megítélni, hogy mi jó és mi nem jó. A ledes visszajelzés jó, de ha számítógép mellett vagy és érdemben nem befolyásol semmit, a soros vonal (Serial) használata debura jó megoldás. Sajnos más sincs... :-(
Nem adást, hanem vételt.
Változódeklarációk C++ viszonylatban nagyon egységesek, csak nagyon magas szinten vagy speciális esetekben vannak kivételek.
Ha void függvényeket használsz és van memóriád szabadon, akkor a legtöbb esetben praktikus eleve globális változókat deklarálni.
Procedurának az eljárást hívják. Annyiban különbözik a függvénytől, hogy nincs visszatérési értéke. Persze, ha beteszel egy végtelen ciklust, akkor tényleg csak avval foglalkozik. Pont mint egy függvény.
Végül sikerült asztali körülmények között mindent egyszerre működtetni .
Tulajdonképen összeállt. Valószínű , több jó megoldás lehet:
CE, CSN lábakon tiltani
radio.startListening(); radio.stopListening(); / ezt a 60 napos TavIr tanfolyamon olvastam
mindenképen le kell állítani az adást, mert végtelen ciklusban marad/
Turbo Pascalban procedurának hívták , hogy egyszerre csak egy témakörrel foglalkozott a program , itt több ilyen void procedurát csináltam és végül bejött.
méri a hőmérsékleteket
páratartalmakat
pontos időt
kiírja lcd 16,2 kijelzőre
veszi a távadók rádójeleit
SD kártyára menti txt fájlba
Turbo Pascal sokat segített, de mindig volt benne egy kis hiba .
Sokat szívatott a globális és lokális változók deklarációja is.
Mindig tettem bele egy kis késleltetést és egy kis ledet , hogy lássam merre jár a program . Nem vagyok teljesen képben , de úgy tűnik az RF24L01 rádióval kell nagyon vigyázni , ha megszerzi az irányítást akkor nagyon nehéz kizökkenteni.
A rádióról azt írják : 100 métert is tud szabadban. Én 3 falon keresztül próbáltam , ott a 8-10 méter is bizonytalan . Egy melegvíztartáy hőfokát majd relézni fogom, átküldöm a hőmérőhöz és úgy a szobába.
Lehet az is benne van , hogy ezek utángyártott darabok .
Apró lépésekkel haladtam előre, már régebben tudtam több adatot SD kártyára menteni txt fájlba , majd később excel táblázatban grafikon képezni belőle .
Valójában ezek a lábak közösek :
Rádió és SD kártya MISO Arduino D12 fekete színnel
„ „ „ „ MOSI „ „ D11 piros „ „
„ „ „ CLOK „ „ D13 rózsaszín „ „
Itt az RF24L01 rádió képe
Azt hittem , lesz valami pár lépéses szoftveres ötlet mint a kimenetek megerősítése.
Most a következőket fogom tenni:
- megpróbálom nagy szkóppal megnézni „ hálózati 20 MHz .-es „ szerencsére szkópom van 4 db
- különösen a hidegítéseket , tápfesz kondikra gondolok
- először megpróbálom a tápfeszűltséget felváltva elvenni, ez a könnyebb
- ha nem jutok dűlőre , akkor a MOSI és MISO lábakat relével átkapcsolhatóra teszem, mivel egyszerre nem kell adatot átvenni és adatkártyára rögzíteni.
Ha beindul , akkor megpróbálok valami elektronikus megoldást.
Csak régebben láttam ilyen 3 állapotú „ tri state „ illesztőket, de soha nem csináltam.
Olyan volt mint kettő műveleti erősítő és egyik vagy a másik esetleg egyik sem „ ekkor lebegett „ kapott tápfeszültséget.
Beteszem a kódját , ezt ne nézd túl kritikusan, biztosan sokat tudnál rajt fésülni , de működik .
Én ezt nem tanultam iskolába , csak össze ollóztam több működő kapcsolást és bele változtattam
rtc.stop(); /*stop/pause RTC -.- NEM TUDOM MÉG MIÉRT KELL */ rtc.start(); /*start RTC -.- NEM TUDOM MÉG MIÉRT KELL */ radio.begin(); radio.openReadingPipe(1, 0xE8E8F0F0E1LL ); // pipe radio.startListening(); lcd.begin(16, 2); lcd.setBacklight(255); lcd.clear(); lcd.setCursor( 0,0); lcd.print("lcd felallt"); // x.x.x-x.-x- while (!Serial) { ; // várjon a soros port csatlakoztatásához. Szükség van a natív USB portra } if (!SD.begin(chipSelect)) { Serial.println("Kártya nyitási hiba"); //ne csinálj többet: lcd.setCursor( 0,1); lcd.print("SD befosott"); return; } Serial.println("Kártya nyitása sikerült"); lcd.setCursor( 0,1); lcd.print("SD faszentos");
A zseb méretű szkóppal semmit nem fogsz érni itt. Egy valamilyen állapotanalizátor kellene (saleae például), amivel a SPI jelet tudnád bontani csomag szintre. Nem filéres holmi ugyan, de borzasztó hasznos. A kutya ott van elásva, hogy mindkét eszköz ugyanazt a fizikai sínt használja, így ha szoftveresen nincsenek elkülönítve (erre van a CS láb), akkor össze fognak akadni, és az erősebb kutya elvén az egyik elvérzik. Nem tartom kizártnak, hogy ide-oda kell majd őket élesztgetni, de ez attól függ, hogy a két alkatrész támogató könyvtárait hogyan írták meg. Konkrét kapcsolási rajz is kellene.
Fiúk ! Gyorsan leszögezem , hogy én okleveles hozzá nem értő vagyok. Angolul nem tudok és Turbo Pascalt is csak önerőből könyvből olvastam , plusz a TaVir 60 napos oktatóanyagon rágtam át magam.
Szeretnék egy meteorológiai adatgyűjtőt készíteni, ami mérné:
udvari hőmérsékletet Dallas 18B20
udvari fényerőt fényellenállással , valamelyik analóg bemeneten
udvari páratartalmat valami DH11.-el
és ezt egy Arduino UNO küldené be rádión a szobába kb. 10 méterről NRF24L01
szobában hőmérsékletet és párát DH11.-el
radiátor előremenő Dallas 18B20 „ez még nincs a skiccen „
radiátor visszatérő Dallas 18B20 „ez még nincs a skiccen „
itt venné egy Arduino UNO rádión az udvari jelet NRF24L01
kijelzés lcd 16,2 kijelzőn I2C .-s megoldással
az adatokat 1-2 percenként SD kártyára mentené szöveg fájlba
egy óra is lenne benne az adatrögzítéshez
Itt a skicc , remélem , hogy áttekinthető .
A vevő részleteiben minden működik , de rádió leáll ha az SD kártya is megy .
Az SD kártyával régen is volt gondom , ott Cseh Robi találta meg a hibát. Az SD kártya CS lába kevés meghajtást kapott és beítunk + egy sort , hogy kimenet határozottabb legyen
„ pinMode (10, OUTPUT) ; „
Nézzétek meg, hogy ez így rendben van -e.
Csak ott van gondom, vagy rádió , vagy SD kártya , de együtt nem mennek, a rádió vétel leáll.
Elektroműszerész vagyok , de 70.-es évekből ez nekem új technika. Ez csak olyan játék, de nagyon élvezem.
1. Clok az Ardunon ki vagy bemenet ?
2. MOSI és MISO szerintem TRI STATE ez talán a három állapotú ?
Egy kis zsebszámoló méretű szkóppal néztem , hálózatit nem mertem rátenni,így aztán nagyon megbízhatatlan volt a mérés. Ezt a mérést ne is vegyétek figyelembe !
Csak az SD kártyával:
- CLOK 0V 1,5-2V tüskék csomagban
- CS 5V negatív tüske csomagok
- MOSI 5V "" "" ""
- MISO 5V "" "" ""
SD kártya és RF24L01 :
- CE mindig 5V
- CSN mindig 5V 1-1,5V negatív tüske
- CLOK 0V max 1V tüskék csomagban
- MOSI 5V nincs tüske
- MISO 5V nincs tüske
A rádió így veszi a jeleket :
Ezt úgy csináltam, hogy a poti jelét, rávittem A0 bemenetre és hozzáadtam 20.-at és 40.-et , majd egy másik Arduinoval rádión tömbben küldtem 10 méterről és 2 fal volt közte.
Vasárnap estig nem leszek gépközelben , de utána minden ötletet elolvasok.