-
Fototrend
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
-
gyapo11
őstag
válasz
dave0825 #670 üzenetére
Olyat, amelyiken van DTR, ezzel reseteli az arduinot, és így tudja átküldeni a programot. Ha ez nincs, akkor kézzel kell nyomni egy resetet. Ez 5 láb (vcc, gnd, rx, tx, dtr), a hatodik nem tudom mi, de nem kell. Nekem 4 lábas van, még az arduino előtt vettem, és működik a kézi resettel.
-
gyapo11
őstag
válasz
dave0825 #653 üzenetére
Natív usb az lehet, hogy nem kell usb-serial chip a boardra, mert maga az atmega kommunikál az usb buszon. Ha a chip soros porton kommunikál, akkor az usb-vel nem tud mit kezdeni, ezért kell egy ftdi vagy a klónokon ch340 chip, ami a pc usb-je és az atmega serialja közötti interface.
A bootloader nem kell a programhoz, az csak azért van rajta, hogy könnyebb legyen programozni, nem kell hozzá más, mint a pc-re csatlakoztatni usb-vel. Az usb-n kapott programot a bootloader írja be a flashbe, majd futtatja. Ha nincs bootloader, akkor is lehet az avr-t programozni, de akkor programozó eszköz kell hozzá. Ilyen programozó eszköz lehet egy arduino is link, ennél jóval drágábbak általában a programozók.
Csupasz chipnek nem sok értelmét látom, mert egy pro mini 600 Ft körül van az ebayen, és ezen már ott vannak a körítés alkatrészek, benne van a bootloader, csak egy 300 ft-os usb-serial átalakító kell hozzá (mert az nincs rajta). Vagy 800 a nano, és akkor már egyből mehet az usb-re. -
gyapo11
őstag
válasz
dave0825 #614 üzenetére
Nem olyan bonyolult az. Az arduino kimenete megy a D-tároló bemenetére, ahány kimenetet akarsz pufferelni, annyi D-tároló kell. Majd ha már mindet kiírta a program, akkor egy újabb kimenettel aktiválod az áttöltést, ebben a pillanatban az összes kimenet beáll arra, ami az arduino kimenetein van.
Közben eszembe jutott egy másik megoldás is, a soros shift regiszter. Abba meg belépteted egyenként a biteket, itt egy példa: http://fritzing.org/projects/10-leds-and-2-shift-register -
gyapo11
őstag
válasz
dave0825 #612 üzenetére
Egyszerre nem lehet, az utasításokat egymás után hajtja végre. Olyat el tudok képzelni, hogy a kimenetek nem közvetlenül mennek a perifériákra, hanem D-tárolók vannak közben, és miután már az arduino összes kimenete be van állítva, egyszerre be lehet kapcsolni az áttöltést, így valóban egyszerre jelennek meg a tárolók kimenetein az adatok.
-
gyapo11
őstag
Nem feltétlenül kell megszakítással számolni, a loop egy ledvillogtatással 100 ezerszer fut le másodpercenként, a te programod nyilván hosszabb lesz, de ha csak 10 ezerszer fordul, akkor is lesz ideje számolni az impulzusokat.
Nyomógombot (mikrokapcsolót) simán kezelem bármelyik lábon, még kondi se kell. Az első lenyomott állapot érzékelése után 30 ms múlva kell leolvasni, ha még mindig benyomott, akkor jó, addigra az összes prell elmúlik. Ezután kell figyelni a fölengedést, nekem 40 ms volt kb. a leggyorsabb fölengedésem, de inkább 100 ms-re kell számítani. Fölengedésnél a prellel nem kell törődni, amint 1-be ugrik a bemenet az föl van engedve.
Ez az egyszeri megnyomás beolvasására igaz, ha nyomvatartott állapot is van, akkor kicsit más, én órát programoztam egy gombbal, és volt 500 ms-nél kisebb, 500-1500 közötti, és ennél hosszabb idő, ezek mind más funkciót töltöttek be.
Mivel számolnod kell az impulzusokat, a delay() függvényt felejtsd el, vannak timer libraryk delay nélkül, vagy akár programozhatod magad is, de a loop pörögjön. -
gyapo11
őstag
válasz
MineFox54 #578 üzenetére
Egy program van, persze annak lehet sok funkciója, és kívülről is lehet vezérelni, hogy éppen mely részek fussanak. Ha módosítasz a programon, azt újra fel kell tölteni, és nem lehet valami már ott levő mellé.
Viszont kerülő módszerrel lehet ügyeskedni, pl. külső eeprommal. Abban ugyan program nem lehet, de lehet mondjuk egy tokensorozat, amit az arduinon futó program értelmez és végrehajt. És ezt a külső eepromot le lehet húzni, beletölteni egy újabb tokencsoportot, és akkor már két program van benne, és a méretétől függően lehet sok is. Ha az arduinon futó sketch fel is tudja tölteni az eepromot, akkor már le se kell húzni, hanem magával az arduinoval feltölteni. -
gyapo11
őstag
Lejárt a szerkesztési idő, itt a javított, van még benne egy hiba, szóval csak körülbelüli mintának jó:
void setup() {
}
int tulcsordulas = 0;
unsigned long cel = 15724800; //fél év másodpercben 182*24*60*60
unsigned long start = millis() / 1000;
unsigned long eltelt = 0;
unsigned long reszido = 0;void loop()
{
if (tulcsordulas == 0)
{
reszido = millis() / 1000 - start;
}
else
{
reszido = millis() / 1000;
}
if (reszido < 0) //túlcsordult
{
tulcsordulas++;
reszido = millis() / 1000;
}
eltelt = reszido;if (tulcsordulas == 1)
{
eltelt += 4294967 - start;
}
if (tulcsordulas > 1)
{
eltelt += 4294967 - start + (tulcsordulas - 1) * 4294967;
}if (eltelt > cel)
{
//akció;
start = millis() / 1000;
tulcsordulas = 0;
eltelt = 0;
reszido = 0;
}
eltelt = 0;
} -
gyapo11
őstag
A millissel lehet bármekkora időzítést csinálni, csak le kell kezelni a túlcsordulást.
Pl. fél évente hajtja végre az "akciót":void setup() {
}
int tulcsordulas = 0;
unsigned long cel = 15724800; //fél év másodpercben 182*24*60*60
unsigned long start = millis() / 1000;
unsigned long eltelt = 0;
unsigned long reszido = 0;void loop()
{
reszido = millis() / 1000 - start;
if (reszido < 0) //túlcsordult
{
tulcsordulas++;
}
else
{
eltelt = reszido;
}if (tulcsordulas == 1)
{
eltelt += 4294967 - start;
}
if (tulcsordulas > 1)
{
eltelt += 4294967 - start + (tulcsordulas - 1) * 4294967;
}if (eltelt > cel)
{
//akció;
start = millis() / 1000;
tulcsordulas = 0;
eltelt = 0;
reszido = 0;
}
eltelt = 0;
}Nem próbáltam, a fordító nem jelzett hibát.
-
gyapo11
őstag
Esetleg lehetne nem interruptos megoldással, hanem tápkapcsolással, hogy a számláló kapcsolja rá a tápot az arduinora, az elvégzi amit kell és reseteli a számlálót, ettől megszűnik a tápja. Két bekapcsolás között a fogyasztása 0, viszont minden szükséges adatot föl kell írnia valahova, hogy a következő ébredéskor tudja hol hagyta abba.
Új hozzászólás Aktív témák
- OHH! Dell Precision 7560 Tervező Vágó Laptop -70% 15,6" i7-11850H 32/1TB NVIDIA A3000 6GB FHD
- Asztali PC , i7 6700K , 1080 Ti 11GB , 32GB DDR4 , 500GB NVME , 500GB HDD
- Asztali PC , R5 8400F , RTX 3070 , 32GB DDR5 , 500GB NVME , 2TB HDD
- Legion Go 1TB
- Lenovo LOQ 15IRX9 - i5 13450HX, 16GB, RTX 4060 8G, 1TB M.2 (Gari: 2027.03.11.)
- ÖRÖK GARANCIÁVAL - OLCSÓ, LEGÁLIS SZOFTVEREK 0-24 KÉZBESÍTÉSSEL - Windows - Office - LicencAruhaz.hu
- Telefon felvásárlás!! Samsung Galaxy Note 10+/Samsung Galaxy Note 20/Samsung Galaxy Note 20 Ultra
- AKCIÓ! ASUS ROG Zephyrus GA403UV Gamer notebook - R9 8945HS 16GB RAM 1TB SSD RTX 4060 8GB WIN11
- LENOVO ThinkSystem NVIDIA Quadro RTX 6000 24GB PCIe Passive GPU
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RX 6500 XT 4GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest