Hirdetés
-
Retro Kocka Kuckó 2024
lo Megint eltelt egy esztendő, ezért mögyünk retrokockulni Vásárhelyre! Gyere velünk gyereknapon!
-
Dead by Daylight - Castlevania karakterek érkeznek a játékba
gp A nagyon rövid teaser videón semmi részletet nem kaptunk, augusztusig kell várnunk a teljes leleplezésre.
-
Két fontosabb újítással megjelent az iOS 17.5
ma Az EU-ban webről is telepíthetők ezzel appok, illetve bővül a nyomkövetőkre való figyelmeztető rendszer.
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
gordonfreemN
addikt
Sziasztok!
Legutóbb meg lettem jegyezve, hogy feltöltöttem a kódomat ide. Isten lássa lelkem, most beregeltem a github-ra, de azért ezt egy nem ősprogramozói lélek 10perc alatt nem látja át. Vagy lehet csak én vagyok béna, mindegy. Most se hosszú a kód amiről kérdeznék, talán elfér itt.
#include <IRremote.h>
int RECV_PIN = 11;
int playPin = 8;
int pausePin = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
pinMode(playPin, OUTPUT); // sets the digital pin as output
pinMode(pausePin, OUTPUT); // sets the digital pin as output
}
void loop() {
if (irrecv.decode(&results)) {
long int decCode = results.value;
Serial.println(decCode);
switch (results.value) {
case 6072407:
Serial.println("Play");
digitalWrite(playPin, HIGH); // sets the LED on
digitalWrite(pausePin, LOW);
break;
case 6066287:
Serial.println("Pause");
digitalWrite(pausePin, HIGH); // sets the LED on
digitalWrite(playPin, LOW);
break;
default:
Serial.println("Waiting ...");
}
irrecv.resume(); // Receive the next value
}
}
Infra kommunikáció megvan, veszi az arduino a táv jeleket, de arra nem jövök rá, hogyan tudnám azt megcsinálni, hogy csak addig világítson a LED még nyomom a gombot a távon. Ebben tudna valaki segíteni?¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
KoVee84
senior tag
Sziasztok!
Segítsetek lsz, mert felrobbanok
Adott egy Lilygo T5 E-ink 4.7 kijelző és az istennek nem jövök rá, hogy hogyan tudok nagyobb betűméretet megjeleníteni. Example fájlból indultam ki, tehát mondjuk azt, hogy a programozói tudásom végesEz nem működik:
uint8_t frame = 2;
writeln((GFXfont *)&FiraSans, (texts[i]), &cursor_x, &cursor_y, &frame);illetve még ezzel próbálkoztam, de miután hozzáadtam a libraryt includenál hibát dob:
U8g2_for_Adafruit_GFX[ Szerkesztve ]
-
bagarol
junior tag
válasz gordonfreemN #19751 üzenetére
default:
Serial.println("Waiting ...");. digitalWrite(pausePin, LOW);
digitalWrite(playPin, LOW);[ Szerkesztve ]
-
nagyúr
válasz gordonfreemN #19751 üzenetére
Szia! Szerintem ebből ne csinálj gondot, egy ilyen rövid kód simán elfér itt (hiszen pont ezért is van kódbeszúrás funkció az oldalon), ami hosszabb mondjuk 1-2 oldalnál, azt meg tedd fel mondjuk ide.
A kolléga már leírta a megoldást, én annyit tennék hozzá, hogy így viszont nagyon rövid ideig fog a LED világítani, hacsak a távirányító nem ismétli a kódot amíg a gombot nyomva tartod, de pont a play/pause gombokat nem szokták újraküldeni, inkább a hangerő, programváltó stb ahol számít, meddig nyomod, úgyhogy én tennék oda egy
delay(500);
sort minden felkapcsolás után:case 6072407:
Serial.println("Play");
digitalWrite(playPin, HIGH); // sets the LED on
digitalWrite(pausePin, LOW);
delay(500);
break;
case 6066287:
Serial.println("Pause");
digitalWrite(pausePin, HIGH); // sets the LED on
digitalWrite(playPin, LOW);
delay(500);
break;Ha ez a késleltetés zavarja a program működését (ugyebár ennyivel később fog kapcsolni) akkor állapotgépet kell használni helyette.
[ Szerkesztve ]
-
Janos250
őstag
válasz gordonfreemN #19751 üzenetére
Én úgy gondolom, hogy azokat a kódokat, ami még valamikor valakinek hasznára válhat a rá kapott magyarázatokkal együtt, azokat érdemes ide berakni. Nem kép, ami rengeteg helyet foglal, hanem szöveg.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
válasz Janos250 #19756 üzenetére
Azért nyilván van egy ésszerű határ, amit mondjuk telefonról nézve már sokáig tart átgörgetni (én például szinte kizárólag telefonról nézem a fórumot, írni is arról szoktam), de aki asztali gépről nézi az oldalt, ott is zavaró lehet, ha egy beszúrt kód egyetlen hozzászólásban hosszabb, mint az oldalon lévő összes 49 további hozzászólás együtt.
-
KoVee84
senior tag
válasz its_grandpa #19754 üzenetére
https://github.com/Xinyuan-LilyGO/LilyGo-EPD47 ő lenne a lib, és a demo exampleből indultam ki.
A feladat végtelenül egyszerű (lenne, ha értenék hozzá). 18650-es akkuval üzemelne a kijelző, hetente más-más max 8 karakter hosszúságú szöveg jelenne meg a kijelzőn, 4 hetente újrakezdődik. + ha már az exampleben pont ott volt, minden szövegváltásnál kiírja az aktuális akkufeszt.
A kód működik, bár rtc modul nélkül csak úgy tudtam önerőből megoldani a heti egyszeri szövegváltást, hogy delay(604800000);
A problémám viszont, hogy megjelenítendő szöveg karaktereinek méretét nem tudom megnövelni... Azt honnan tudom egyébként, hogy az aktuális lib milyen fontokat kezel?köszönöm előre is ha tudsz/tudtok valami okosságot erre!
-
gordonfreemN
addikt
Szia!
Köszönöm mindenkinek a segítséget. Sajnos az említett kód nem segített, egyszer felvillan aztán süket a led. Delay-el is ez a helyzet. Próbálkoztam már én is ilyesmivel, de nekem se jött be. Esetleg más ötlet?
Gondolom a kódok miatt érdemes ennél a switch-case-nél maradni és ezt csűrni csavarni valahogy.¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
agent_k
őstag
Sziasztok!
Valamikor ilyen iskolába jártam, de már sok mindent elfelejtettem, elnézést kérek a feltehetően igen amatőr kérdésért.
Van egy esp8266-om meg egy kapacitív földnedvesség mérőm. Napelemről megy, aksival. Az mcu-t meg a szenzort is 3.3V-ról üzemeltetem. Gondolom már sejtitek, a probléma, hogy ha az mcu deep sleepben is van, a szenzor nyilván akkor is fogyaszt, hiszen direktben kapja a feszt.
Szeretném egy GPIO pinről hajtani, de a szenzornak minimum 40mA kell, tehát kellene nekem egy alkalmas mosfet. A google keresések valahova ide lyukadtam ki: AO3400A és IRLZ24N
Segítsetek nekem melyik legyen? Vagy ezek tök rossz választások és van ennél sokkal jobb?Köszönöm!
-
Tankblock
aktív tag
válasz agent_k #19761 üzenetére
Szia,
N-channellel Low side tudsz kapcsolni "önmagában".
A high side-ot kapcsolnám (azaz a tápoldalt) a projectedben, nehogy valahol másfele elfolyon az áram....- Vagy egy high side drivert keresel a N-Channelhez,
- vagy P-channel logic level mosfetet használsz, mondjuk egy 100k ellenállással felkötöd a Gatet a tápra, majd földre rántod amikor kell.Release the Beast....
-
vargalex
félisten
válasz gordonfreemN #19760 üzenetére
A soros monitoron ilyenkor mit látsz? Valami csak lekapcsolja azt a ledet, ha csak felvillan... Ennyi a teljes kód, vagy csak kiemelted a lényeget?
Alex
-
agent_k
őstag
-
nagyúr
válasz gordonfreemN #19760 üzenetére
Ha jól értem azt szeretnéd, hogy amíg tartod a gombot a távirányítón, addig világítson a LED, de írtam, hogy azért nem fog menni, mert a távirányító nem ismétli a kódot (nem küldi újra és újra amíg a gombot nyomod) csak bizonyos gomboknál, például a hangerő gombok. Illetve van olyan távirányító, ami ilyenkor nem a kódot küldi újra, hanem egy általános "ismétlés" kódot, ami azt jelenti, hogy "az előző gomb még nyomva van". Ha ez a helyzet, derítsd ki, mi ez a kód (például 16777215, ami 0xffffff-nek felel meg, úgy emlékszem egy távirányító ezt küldte ilyenkor). Egy telefon kamerájával könnyen tudod ellenőrizni, hogy a távirányító egyáltalán küld-e valamit: irányítsd a távot a kamera felé, a kijelzőn lilán fogod látni villogni a ledet.
[ Szerkesztve ]
-
vargalex
félisten
Ezért kérdeztem a kollégától, hogy ez a teljes kód-e. Mert ugye a bemásolt kód csak a másik gomb megnyomásakor kapcsolná le a ledet, addig folyamatosan világítania kellene.
A telefon kamárájához megjegyzés: telefon kérdése is, mert pl. iPhone-ok esetén (talán már a 6-os, vagy 7-es óta) a kamerán van IR szűrő, ott nem látszik a villogás...
Alex
-
bagarol
junior tag
válasz gordonfreemN #19760 üzenetére
Így kb 1 másodpercig világít.
#include <IRremote.h>
int RECV_PIN = 11;
int playPin = 8;
int pausePin = 13;IRrecv irrecv(RECV_PIN);
decode_results results;
uint32_t lastms= 0;void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
pinMode(playPin, OUTPUT); // sets the digital pin as output
pinMode(pausePin, OUTPUT); // sets the digital pin as output
}
void loop() {
if (irrecv.decode(&results)) {
long int decCode = results.value;
Serial.println(decCode);
switch (results.value) {
case 6072407:
Serial.println("Play");
digitalWrite(playPin, HIGH); // sets the LED on
digitalWrite(pausePin, LOW);
lastms = millis();
break;
case 6066287:
Serial.println("Pause");
digitalWrite(pausePin, HIGH); // sets the LED on
digitalWrite(playPin, LOW);
lastms = millis();
break;
default:
Serial.println("Waiting ...");
if (millis() - lastms > 1000) {
lastms = millis();
digitalWrite(pausePin, LOW);
digitalWrite(playPin, LOW);
}
}
irrecv.resume(); // Receive the next value
}
}[ Szerkesztve ]
-
gordonfreemN
addikt
& vargalex: Ennyi az egész kód egyelőre.
Köszi.
Küldi a jelet nyomva tartáskor. A soros monitoron ezek szerint az ismétlés kódja a -1 ?
Ha igen, akkor gomdolkodom, hogyan lehetne megoldani ezt így ebben a formában.na még tovább olvasva a válaszok: igen ez a kód amit betettem még csak arra képes, hogy vagy az egyik led vagy a másik világít. Azt szeretném, hogy amíg nyomom a távon a gombot (hangerőt nyomom egyébként) addig világítson, azután ha elengedtem, kapcsoljon ki a led is. Az a LED világítson amelyik gombot épp nyomom.
Ebből majd egy DC motort fogok vezérelni hangerőszabályzásra: ALPS RK27112.Lehet látni S22-n az infrát.
[ Szerkesztve ]
¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
nagyúr
válasz gordonfreemN #19779 üzenetére
ezek szerint az ismétlés kódja a -1 ?
Akkor nyertem az 0xffffff-el, előjelesen az -1 (valójában 0xffffffff, nem tudtam hány byte-os az IR kód).
Így akkor egyszerű a megoldás:
...
case -1:
break;
default:
Serial.println("Waiting ...");
digitalWrite(pausePin, LOW);
digitalWrite(playPin, LOW);[ Szerkesztve ]
-
gordonfreemN
addikt
Valami nem oké még, mindössze annyit tettem, hogy bemásoltam a -1-es caset ahogy mutattad. Most ugyanúgy működik mint eredetileg. Felvillan és úgy marad ha megnyomom.
Közben még: arra volna tiapasztalatotok, hogy a potméter DC motorját H-hidas vezérléssel milyen eszközel érdemes megoldani? Jó lenne a minél kevesebb fesz esés a vezérlőn, mert 5VDC-m van és a motornak is kell ennyi. Ez esetben csak szubminiatűr relé jöhet szóba?
[ Szerkesztve ]
¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
gordonfreemN
addikt
Nem ugrik be a defaultba, ha a
case -1:
break;
-et beteszem a kódba. Enélkül bemegy defaultba és waiting jön a com-on ahogy kell.
Nem értem.
Ha kiveszem a break-et a -1-es case után akkor belép, és végrhajtja a benne lévő utasítást, de ki is jön belőle ugye és megy tovább a default-ba.
Ha beteszem a break-et, nem hajlandó a benne lévő utasítást se végrehajtani
Másik távval is teszteltem, az is -1-et ad hosszú nyomásra, azzal is igyanez a hiba.[ Szerkesztve ]
¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
gordonfreemN
addikt
válasz gordonfreemN #19786 üzenetére
Na mostmár valamit a könyvtáraknál is szétcsesztem, le se tudom fordítani a kódot.
Ha valakinek lenne türelme ebben segíteni, akkor a maradék hajam hálával fog tartozni, amiért nem hullik ki.
Szerintem előlről kellene kezdeni, tehát, ahhoz hogy az IRremote.h lib nemtudom mitcsináljon kellene ez a lib, addig a kódban megírt "hivatkozások" nincs mire mutassanak szerintem. Tehát most fogom, törlöm az összes ilyen lib-et és akkor innen kezdjük.Na semmi. Van ez az IR remote könyvtár. Ezt lehet telepíteni többféle verzióban, az újjabbakban (2 felett) történt valami változtatás ami a régi hivatkozásokat (nem tudom mi ennek a neve, amikor a libben lévő megírt kódra egy paranccsal hivatkozunk) már nem ismerte, a példaprogramom meg a régi szerint volt megírva.
[ Szerkesztve ]
¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
-
dew28
aktív tag
válasz gordonfreemN #19786 üzenetére
Ha beteszem a break-et, nem hajlandó a benne lévő utasítást se végrehajtani
case -1:
***vegrehajtando feladat***;
break;
ugye igy csinaltad? ugye?[ Szerkesztve ]
-
bagarol
junior tag
válasz gordonfreemN #19787 üzenetére
Látom más sem tud aludni.
VOLUME_UP DOWN != PLAY STOP.
Akkor mégis jó, amit itt [link] írtam, ezzel a változtatással:case -1:
lastms = millis();
break;
default:
Serial.println("Waiting ...");
if (millis() - lastms > 200) {
lastms = millis();
digitalWrite(pausePin, LOW);
digitalWrite(playPin, LOW);
}[ Szerkesztve ]
-
vargalex
félisten
válasz gordonfreemN #19786 üzenetére
A break lényege, hogy utána más ág (így a default sem) hajtódik végre. Vagy nem értem, amit írsz...
Alex
-
vargalex
félisten
válasz gordonfreemN #19786 üzenetére
A soros log alapján Ayres kolléga megoldása jó kell, hogy legyen. A case -1 ágába a break-on kívül más nem kell. Viszont azt gyanítom, hogy kellene valami timeout is, mert amíg nyomod, addig jön a -1, de ha elengeded, akkor nem fog jönni semmi és nem is fut be a default ágba. Vagy, ha nem nyomsz gombot, akkor az irrecv.decode-ban áll?
Alex
-
vargalex
félisten
válasz bagarol #19795 üzenetére
Ezt így nem értem. Ha az
irrecv.decode false
-t ad, amikor nincs bejövő adat, akkor az eredeti kód szerint nem atrue
ág fut, azaz nincscase
, tehát nincs, ami kikapcsolja a ledet. Vagy nem erre gondoltál?Alex
-
vargalex
félisten
válasz bagarol #19797 üzenetére
Erre írtam, hogy
false
-t kellene visszaadnia, ha nem volt fogadott adat. Erre válaszoltad, hogy azt is ad. Tehát mégsem azt ad... Az is biztos, hogy nem 0-t, mert akkor azelse
ág futna (ami nincs).Alex
-
gordonfreemN
addikt
Megérkeztem, tudok tesztelni. Tehát akkor mit nézzek meg?
¯\_(ツ)_/¯ ▁ ▂ ▃ ▅ ▆ ▇ Üdv, Andris.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs