- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Mikrotik routerek
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- XPEnology
- Facebook és Messenger
- A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
- Az USA nem akarja visszafogni Kína növekedését
- Crypto Trade
- Adobe Illustrator kérdések
- A pápa egyre jobban tart a romlott AI veszélyeitől
-
IT café
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
-
Janos250
őstag
válasz DigitXT #11895 üzenetére
Valóban, nem kicsit tud többet. Van rajta oprendszer (freeRTOS), két magos, igy ténylegesen párhuzamosan programozható, gyakorlatilag akárhány taskot indithatsz prioritással, az oprendszer kezeli. Tudja a C++11 párhuzamos programozását is. Nagyon sok hardware periféria kezelője van. 240 Mhz-en jár mindkét mag. Olyan számlálója is van a többi mellett, ami 80 Mhz-el jár, amivel már elég pontos időzités érhető el. Én nagyon kedvelem.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz zsolti_20 #11896 üzenetére
RFID:
Vigyázz, nehogy ilyet
https://www.ebay.com/itm/RC522-13-56Mhz-RFID-Module-for-Arduino-and-Raspberry-pi-new/311395182652?epid=1769319769&hash=item488099683c:g:RmwAAOSwB3BaCqPi
vegyél, mert használhatatlan, pedig elvileg nagyon kényelmes lenne.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
_q
addikt
válasz Janos250 #11903 üzenetére
Nekem összeakadt és nem működött a 2 magon kezelése a freeRTOS-nak. Én arra jutottam, hogy ez a 2 mag valójában inkább 1. Ezt úgy értem, hogy van 1 mag ami a perifériákat kezeli: Wifi, SPI, I2C... és van a másik mag amire te tudod írni a programokat. Ha a wifi kezelő magot elkezded saját kód futtatására használni, a wifi nem megy jól. Lehet én csesztem el, de már rengeteg prioritást és task állítást próbálgattam, a végén maradtam a loop megoldásnál.
-
zsolti_20
senior tag
Találkozott már valaki olyan problémával, hogy az MFRC522 RFID olvasó és az SD kártya olvasó nem akart működni együtt? Próbáltam 330ohm ellenállást forrasztani az SD kártya MISO lábához, de ugyan úgy nem működnek együtt. Külön-külön viszont hibátlanok.
-
zsolti_20
senior tag
válasz Gergosz2 #11907 üzenetére
Csatlakoztattam mind ketto modult az arduino megahoz es kulon kulon szerettem volna tesztelni oket pelda kodokkal. Igy ha a chip select szoftveres dolog akkor gondolom nincs bennd. Sima peldat csinaltam sd kartyaval ami kiolvassa mi van a kartyan es sima peldat ami csak kiolvassa az uid-t az rf kartyabol.
Lehet olyan kodot kellene kiprobalnom ahol mindket modul hasznalatban van es szoftveresen megvan azdva ez a chip select dolog?
-
zsolti_20
senior tag
válasz Gergosz2 #11909 üzenetére
Akkor a megoldas csupan annyi hogy a digital pint alligatom low es high kozott? SD kartya alapbol a digital 4re megy igy azt kell hasznalat elott low-ra allitanom az rfid olvaso pedig a digital 10-/re. nem tudom miert de azt hittem a MISO lab lesz a kulcs a megoldashoz mert ott kommunikal az arduino fele.
-
Janos250
őstag
A 0-s magra valóban kevesebb dolgot lehet rakni, és csak alacsony prioritásút, mert valóban az kezeli a WiFit, és az lényeges, hogy magas prioritással menjen, de én szoktam rá rakni programokat, amik "ráérnek".
Ha a C++11 szerint használod, akkor az OS elrendezi saját magának, mi hol menjen, de nem biztos, hogy ez lesz az optimum.
Én a Core0-n futó részek ciklusába jó hosszú várakozásokat szoktam tenni, hogy ráérős legyen. Ha éppen nincs dolga, egyből megy a várakozásba, azaz az OS egyből másnak adja a futási jogot.
Ez azért egy alapvető különbség a klasszikus várakozáshoz képest (atmega328 Arduino alatt), ott ugyanis a proci ténylegesen semmi hasznosat nem csinál, amig várakozik.
A taskoknak 1 msec-et ad az OS, aztán cserél. Ez egyben azt is jelenti, hogy mindkét magon 1 milsecenként megszakit akkor is,
ha a legmagasabb prioritású task fut, vagy ha minden más le van tiltva, akkor is. Ha mindent, pl. megszakitást tiltasz, akkor a task csere vizsgálat miatti
megszakitást - ha jól emlékszem - olyan 5-6 microsecre lehet levinni, lentebb nekem nem sikerült.
Külön jó még a kétféle megszakitas figyelés, hogy az egyik akkor kezd el futni, ha rá kerül a sor, a másik meg azonnal.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
-
zsolti_20
senior tag
Szeretnem most a szoftvert kicsit okosbban megoldani. NRF24L01 modulok kozti kommunikaciorol van szo.
Igz nez ki a cimzes:
const byte addresses[][6] = {"00001", "00002","00003","00004","00005"}Es igy nez ki a kuldes resze:
radio.begin();
radio.openWritingPipe(addresses[1]);
radio.openReadingPipe(1, addresses[0]); radio.setPALevel(RF24_PA_MIN);
Ugye itt a addresses[1] az 00002
Az addresses[0] pedig 00001Lehetseges ugy elkuldeni az osszes cimzettnek az uzenetet hogz ne kelljen minden kuldeshez kulon voidot csinalnom?
-
zsolti_20
senior tag
Valami olyasmire gondoltam ami kepes lenne a "const byte addresses" erteket novelni mondjuk egy for ciklusban minden korben 1-el. Mert a cimek szerencsere kovetik egymast.
-
DigitXT
félisten
válasz zsolti_20 #11915 üzenetére
Nem akarok windischgrätz lenni, de tudod, hogy a const az mitől const?
Mert ha igen, akkor hogy gondoltad, hogy majd azt növelgeted?Megint olyan tippeket kérsz tőlünk, hogy nem látjuk, hogy mit csinálsz,
de ebből mondjuk meg, hogyan kell jól/jobban csinálni. Legalább valami
normális kódrészletet szúrj be, amiből látszik a probléma. Ezek megint
nem Arduino specifikus dolgok, hanem a tömbökkel vannak gondjaid. -
zsolti_20
senior tag
válasz DigitXT #11916 üzenetére
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002", "00003", "00004", "00005"};
void setup() {}
void loop()
{radio.begin();
radio.openWritingPipe(addresses[1]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
delay(1000);
}
Ez kb a teljes kod. Es egz gombnyomassal szeretnem az osszes cimre elkuldeni anelkul hogz mindegyik cimhez kulon voidot hoznek letre. -
weiss
addikt
válasz zsolti_20 #11914 üzenetére
Én itt egy voidot sem látok, de lehet velem van a gond. Amit te szeretnél, ha tippelnem kellene, az egy for ciklus, vagy valami ilyesmi. Amúgy, ha a címek sorban követik egymást, akkor nem is kell őket letárolni. Bumm, spóroltam neked 30 bájtot
I did nothing, the pavement was his enemy!
-
DigitXT
félisten
Szerintem itt arra gondolt a költő, hogy ezt a kódrészletet bedobja egy nagyobb
kódba, amikor az itt a loopban szereplő dolgokat, egy kuldjedwaze nevű "voidba"
teszi, viszont valami furmányos okból nem ír bele for ciklust a tömbön való végig
lépkedéshez, hanem inkább kuldjedwaze2 néven újabb voidot szeretne írni, hogy
oda másik tömbhivatkozást használjon. Ez kétségkívül nagyon érdekes módja a
tömbök használatának... A 30 bájt spórolás külön tetszett, ínséges időket élünk. -
zsolti_20
senior tag
válasz DigitXT #11920 üzenetére
Igen valami ilyesmire gondoltam ahogz ossze foglaltad.
if gomb 1 megnyom
ugras a void kuldesbe
if gomb 2 megnyom
ugras void kuldes2void kuldes()
{
radio.begin();
radio.openWritingPipe(addresses[1]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
delay(1000);
}
void kuldes2()
{
radio.begin();
radio.openWritingPipe(addresses[2]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
delay(1000);
}valahogz igy gondoltam, de sporolni szeretnek kicsit.
[ Szerkesztve ]
-
DigitXT
félisten
válasz zsolti_20 #11921 üzenetére
Baromi egyszerű, csak az alapfogalmakat kell ismerni. Kezdve azzal, hogy a
void az nem egy hasra ütött elnevezés, hanem a visszatérési érték típus... ún.
visszatérési érték nélküli függvények ezek (leánykori nevükön szubrutinok).
Mint függvények viszont paraméterezhetők, tehát írhatsz ilyen függvényt, hogyvoid kuldes(int kinek){
radio.begin();
radio.openWritingPipe(addresses[kinek]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
delay(1000);
}Ezt pedig utána úgy hívod meg, mint bármilyen más függvényt, pl. kuldes(1).
És ez kényelmesen ciklusba szervezhető, ha úgy gondolod, hogy egy gomb
mindent vigyen:
"if gomb 1 megnyom"
for (i=0;i<5;i++) kuldes(i);Szerk: ne feledd, hogy tömböknél az első elem címe nem 1, hanem 0.
[ Szerkesztve ]
-
zsolti_20
senior tag
-
DigitXT
félisten
válasz zsolti_20 #11923 üzenetére
Neeem... A "kinek" lesz a helyi változód, konkrétan a függvény paramétere.
Ha csak egy pipe-ot tud egyszerre nyitni, mi lenne ha lezárnád küldés után?Szerk: a szerkre, na igen, nem definiáltam a móricka példában i-t, my bad...
A fordító sipákolna! Vannak amúgy nyelvek, ahol nem, és így is lefutna, LOL.Az az int változó amúgy nem a címnek kell, hanem a címek tömbjét címezni...
Mert ugye azért van a címeidnek tömbje, mert nem törvényszerű, hogy 1,2,3,4,5
az összes cím, lehetne öt tetszőleges számkombináció, viszont a ciklus csak a
tömb elemein lépdel végig, nem érdekli, hogy mi lesz az öt elem... Sőt valójában
az sem, hogy mire fogod használni a 0-4 közötti paraméterekkel hívott függvényt.[ Szerkesztve ]
-
zsolti_20
senior tag
válasz Gergosz2 #11907 üzenetére
Most próbálkozok a Chip selecttel. Az MRFC522 RF olvasó a PIN10-en van, az SD kártya a PIN8-on. Próbálom tesztelni őket úgy, hogy mindkettő csatlakoztatva van, de külön- külön kóddal. Hiába szúrom be azt a sort a setup részhez, hogy
digitalWrite(8, HIGH);
Vagy a másikhoz
digitalWrite(10, HIGH);
Ha mindkettő modul csatlakoztatva van nem működnek. A fura az, hogy előtte nanoval ment mindent elég volt egy 330ohm ellenállás a MISO lábhoz az SD kártya olvasóhoz. -
nagyúr
válasz zsolti_20 #11926 üzenetére
Merem feltételezni, hogy amikor az egyikhez odaírod, hogy
digitalWrite(8, HIGH);
ezzel egy időben odakerül mellé egy
digitalWrite(10, LOW);is, ami a másikat lekapcsolja az adatvonalakról...
Mégis mi a fenének a 330ohm ellenállás a MISO lábra?Tényleg én vagyok a hülye, hogy megint válaszolok, amikor megfogadtam, hogy nem írok többet, ha nem teszel fel kódot, hátha vaktában is ki tudjuk találni mi a hiba...
[ Szerkesztve ]
-
Drótszamár
őstag
Help!
Eszköz: Lora Node 1.0 [link]
ATmega328P
Arduino ide 1.8.83.3V 8Mhz Pro Mini bootloader van rajta, amivel a watchdog nem működik. Bootloop lesz, ha újraindítja.
Lecseréltem Optiboot Minicore-ra a boot loadert. Ezzel megy a watchdog, rendben újraindítja.
(8 Mhz external, BOD 2,7V, LTO OFF, 328P, UART0 YES)A csere után, ha visszaállítom az alaplapot az eddig működő arduino verzióra nem megy a kód feltöltése FTDI-n keresztül. Az összes listában lévő verziót kipróbáltam.
Ha átállítom az alaplapot az Optiboot miatt telepített Atmega328-ra, akkor fordítási hibát ad a program. Nem találja a time.h-t.
Egyszerű kódot ekkor rendben feltölt.Rohadtul nem értem ezt az egészet.
Valami config-ot át kéne még írni, amiről minden tutorial elfelejtkezik? Az új bootloaderrel változott a feltöltési mód? (pl baud, és azért nem megy a feltöltés már?)Végigtúrtam a netet, és nem nagyon találok hasonló gondot.
Mit rontok el?Hova lesz a time.h mikor itt megvan, és a gyári alaplapokkal működik is: C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include
( 2b || !2b ) az itt a kérdés...
-
Drótszamár
őstag
válasz Drótszamár #11928 üzenetére
Sikerült!
Bekapcsoltam a részletes infókat a feltöltésnél, úgy már egyből látszott a különbség.
Using Port : COM31
Using Programmer : arduino
Overriding Baud Rate : 57600
AVR Part : ATmega328P
Chip Erase delay : 9000 usUsing Port : COM31
Using Programmer : arduino
Overriding Baud Rate : 38400
AVR Part : ATmega328PAz optiboot boards.txt configjában ott volt a 38400-as sebesség.
Átírtam 57600-ra, most már rendben felmegy a kód, ha kiválasztom a "Pro mini" 3V 8 Mhz-s változatot az alaplapok közül.
Végre ki lehet tenni terepre az eszközt. Ha lefagyna újraindul magától( 2b || !2b ) az itt a kérdés...
-
zsolti_20
senior tag
A 330ohm ötlete innen jött:
[link]De közben sikerült megoldanom. Az RFID olvasó SS_PIN a D53-ra kell mennie, az SD kátyának pedig a D4-re.
Abból következtettem ezt ki, hogy az UNO 10-es lába az SS. Szóval a nanonál is annak kell lennie. És mivel a másik modullal hibátlanul működött, ezért gondoltam elég a mega SS-re csatlakoztatni a PIN-t és valóban elég volt. Még az a két sor sem kell amiről fentebb beszéltünk. Sőt a forráskód sem a hiba beazonosításához.
[ Szerkesztve ]
-
Janos250
őstag
Mert az Arduino main.cpp így néz ki:
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz DigitXT #11889 üzenetére
"az Arduino-féle String implementáció egy nagy sz"
"nem igazán ajánlott használni."
Így igaz. A nagybetűs String valóban gyengécske, de azt is mondjuk meg, hogy mit érdemes használni:
a kisbetűs string viszont jó.
Ismét mondom, hogy nem ötegapám UNO, NANO, MEGA lapja az, amit érdemes használni, hanem valami korszerűbb,
ami - mondhatni - nem drágább, de sokkal többet tud, és az UNO-ra, stb.-re írt programok símán áttehetők rá,
ha nincs benne valami nagyon hardware közeli dolog.
Mint már többször mondtam, én mostanság az ESP32-t használom.
5 dollárért megvehető postával együtt.
https://www.banggood.com/Geekcreit-30-Pin-ESP32-Development-Board-WiFibluetooth-Ultra-Low-Power-Consumption-Dual-Cores-ESP-32-ESP-32S-Board-p-1461896.html?rmmds=search&cur_warehouse=CN
Vagy az UNO mintájára:
https://www.banggood.com/LILYGO-TTGO-ESP32-WiFi-bluetooth-Board-4MB-Flash-UNO-D1-R32-Development-Board-p-1163967.html?rmmds=search&cur_warehouse=CN
Megnéztem a régi Arduino String osztályát. Bizony elég sok tagfüggvény nincs benne, ami a C++ -ban benne van. Példának az appendet vettem,
hogy a részletesebb infók netről megtekinthetők legyenek.
Ha már itt tartottam, még pár - szintén netről szedett - példát is beleraktam.
A mostani C++11 számos olyan dolgot is tartalmaz, amit az ősrégiek nem.
Használhatjuk az alábbiakat:#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
Ezek közül is raktam be példákat. Hogy miért jobb pl. az array, achrono
, athread
használata? Mert ez szabványos, bárhol ugyanígy fut, nem olyasmit tanulunk meg, amit máshol nem tudunk használni.
Íme:
Eredetileg ez egyetlen program lenne, de PH szerkesztője valamiért darabokra szedte.#define __cplusplus 201103L
#include <iostream>
#include <string>
#include <sstream>
#include <array>
#include <iterator>
#include <chrono>
#include <ctime>
#include <thread>
//ESP32 Dev Module
void setup() {
//http://www.cplusplus.com/reference/string/string/append/
std::string str;
std::string str2="Writing ";
std::string str3="print 10 and then 5 more";
// used in the same order as described above:
str.append(str2); // "Writing "
str.append(str3,6,3); // "10 "
str.append("dots are cool",5); // "dots "
str.append("here: "); // "here: "
str.append(10u,'.'); // ".........."
str.append(str3.begin()+8,str3.end()); // " and then 5 more"
// str.append<int>(5,0x2E); // "....."
std::cout << str << '\n';
/*
//A String (nagy S) a regi Arduino string kezelese
// ebben nincs append, forditasi hibat jelez
String xstr;
String xstr2="Writing ";
String xstr3="print 10 and then 5 more";
// used in the same order as described above:
xstr.append(xstr2); // "Writing "
xstr.append(xstr3,6,3); // "10 "
xstr.append("dots are cool",5); // "dots "
xstr.append("here: "); // "here: "
xstr.append(10u,'.'); // ".........."
xstr.append(xstr3.begin()+8,xstr3.end()); // " and then 5 more"
*/
//Ez is egy netrol vett pelda
//https://stackoverflow.com/questions/2066184/how-to-use-c-string-streams-to-append-int
std::stringstream stream("Something ");
stream.seekp(0, std::ios::end);
stream << 12345;
std::cout << stream.str();
// C++11 array
//https://en.cppreference.com/w/cpp/container/array
// construction uses aggregate initialization
std::array<int, 3> a1{ {1, 2, 3} }; // double-braces required in C++11 prior to the CWG 1270 revision
// (not needed in C++11 after the revision and in C++14 and beyond)
std::array<int, 3> a2 = {1, 2, 3}; // never required after =
std::array<std::string, 2> a3 = { std::string("a"), "b" };
// container operations are supported
std::sort(a1.begin(), a1.end());
std::reverse_copy(a2.begin(), a2.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
// ranged for loop is supported
for(const auto& s: a3)
std::cout << s << ' ';
// C++11 chrono
//https://en.cppreference.com/w/cpp/chrono
auto start = std::chrono::system_clock::now();
std::cout << "f(42) = " << fibonacci(42) << '\n';
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
// C++11 thread
//https://en.cppreference.com/w/cpp/thread
//https://thispointer.com/c-11-multithreading-part-1-three-different-ways-to-create-threads/
std::thread threadObj1(thread_function);
std::thread threadObj2(thread_function);
if(threadObj1.get_id() != threadObj2.get_id())
std::cout<<"Both Threads have different IDs"<<std::endl;
std::cout<<"From Main Thread :: ID of Thread 1 = "<<threadObj1.get_id()<<std::endl;
std::cout<<"From Main Thread :: ID of Thread 2 = "<<threadObj2.get_id()<<std::endl;
threadObj1.join();
threadObj2.join();
}
void loop() {
}
// mert a chrono minta hasznalja
long fibonacci(unsigned n)
{
if (n < 2) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
//// mert a thread minta hasznalja
void thread_function()
{
std::cout<<"Inside Thread :: ID = "<<std::this_thread::get_id()<<std::endl;
}
[ Szerkesztve ]
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 #11845 üzenetére
Kiderült, hogy csak véletlenül működött nekem azonnal a pickit2 isp arduino ide alatt, ugyanis az újabb avrdude.exe már nem ismeri fel! Én viszont először az arduino 1.6.12 alatt próbáltam ki, amivel még rendesen működik. Úgy olvastam, hogy talán 1.8.4 alatti verzióknál még működik, afelett nem. Ha esetleg szeretnéd a pickit2 programmert isp-ként kipróbálni, régebbi ide alatt próbáld ki, vagy cseréld az avrdude-ot egy régebbi verzióra (az 1.6.12 alatt 2017 márciusi build van).
-
Janos250
őstag
válasz Janos250 #11932 üzenetére
Nincs kérdés, magyarázat van, nem neked, hanem azoknak, akik nem pontosan értik, hogy az Arduino ugyanolyan cpp program, és ott van a main.cpp is. Amit átírni persze nem célszerű, de akár meg is tehetnénk. Pl. másik loopot is tehetnénk bele akár, bár a gyakorlatban ennek semmi értelme nem lenne.
[ Szerkesztve ]
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 #11935 üzenetére
Az arduino ide maradhat a legújabb, elvileg csak az avrdude-ot kell kicserélni... Az meg szerintem nem sokat számít, hogy melyik verzió van benne. Az avrdudess program alatt is, ami egy frontend az avrdude-hoz, szintén egy régebbi avrdude.exe van, pedig a héten frissítette magát. Talán nem csak ez az egy hibája van.
-
zsolti_20
senior tag
Gondoltam ez meger egy hozza szolast, de sikerult megtalalni a projektemhez a tokeletes boardot. Mega 2560 PRO. Boven van rajta memoria es ami a legfontosabb hogy 5v-on es 3.3v-on 800mah kepes tovabb adni a moduloknak, igy pl nrf24l01 pa lna modulhoz nem kell kulon tap meg akkor sem ha maxon hasznalom.
Csak azt nem tudom ezt lehet talolni 5v agon mint a nanot vagy sem?
-
zsolti_20
senior tag
Azt írják a leírásban hogy "The USB controller is a CH340G, a proven chip; and the onboard voltage regulators are of the AMS1117 series (one for 5V, the other for 3.3V). Not the best components out there, but they are definitely adequate for the job."
De mi lehet jobb regulator mint az AMS1117? -
nagyúr
válasz zsolti_20 #11945 üzenetére
Isten ments, hogy az 5V ágra 9V-ot kapcsolj, dobhatod is ki rögtön... A kolléga úgy értette, hogy a DC (hordó) csatlakozóra vagy a Vin lábra kell minimum 5+1.6V, hogy a konverter stabil 5V-ot tudjon belőle csinálni. Az 5V lábra stabil 5V-ot kell adni.
[ Szerkesztve ]
-
_q
addikt
válasz zsolti_20 #11945 üzenetére
Én csak az adatlapot próbálom értelmezni, javítson ki valaki, ha nem jól írom.
Tehát adatlap szerint az atmega2560 Operating Voltage Range (V)1.8 to 5.5 V között van. Ha minden igaz a board-on lévő IC 1.2 V droput-ot tud 800 mA-es fogyasztás mellett. Tehát ha USB 5 V-ot kötsz rá, akkor mondjuk 3.5-4 V közötti feszültséget fog kapni a MCU, tehát tud róla elvileg működni.
Az aksit azért írtam, mert ugye az aksi merül és szeretnéd minél tovább használni. Ez azt jelenti, hogy minél kisebb droput esetén fog a legtovább működni. Adatlap alapján 20 V-ot is elbír a DC-DC konverter. De tegyük fel te 12V aksiról működteted, akkor egészen lemerülhet az aksi 5-6 V-ig, mert így 3.5-4.5 V-ot fog kapni a MCU. Persze ezeket azért nézd meg multiméterrel is valóban így van-e. Én ezeket olvastam ki az adatlapokból.
(#11946) aryes
Persze én az USB bemenetre kapcsolt tápra írtam mindent, mivel a DC-DC konverter "jósága" volt a kérdés az első hozzászólásnál.[ Szerkesztve ]
-
nagyúr
Nem jól írod, az 5V konverter csak akkor működik, ha a DC csatlakozó vagy a Vin láb felől küldöd rá a delejt. Ha az 5V felől táplálod, csak a 3V3 konverter működik, de ilyenkor neked kell gondoskodni róla, hogy a táp stabil 5V legyen.
Az usb és a kontroller közt mindösszesen csak egy db schottky dióda van, az se a uC-t védi, hanem az usb-t a visszáramtól.
[ Szerkesztve ]
-
nagyúr
Tanácsot szeretnék kérni. Szeretnék egy infra ledhez és egy hangszóróhoz valamilyen meghajtó fokozatot. Az infra ledet 1A-el szeretném meghajtani (IR jeladóként, nem folyamatos üzemben), a hangszóróhoz pedig vmi egyszerű végfokot csinálnék 1db tranzisztorral (a hangminőség nem fontos, lényeg, hogy hangos legyen ). A kérdésem, hogy létezik-e olyan, hogy egy közös DIL-6 tokban két NPN tranzisztor, vagy alacsony üzemi feszültségű FET (3 vagy 5V-ról fogom táplálni az egészet, elemről vagy akkuról). Alternatív terv 2db S8050 tranzisztor lenne, csak az IC talán kisebb helyen elférne. Az S8050 mennyire jó választás?
-
tonermagus
aktív tag
Ma megjött a játszós LED szalagom. Egy WS2812B-ről van szó. Írtam egy tök egyszerű kódot, ami elvileg az első 30 LED-et kékes színben világítja meg. Sajna ez történik:
Mit ronthattam el? Egy Lipo aksiról táplálom a szalagot +5V és GND van bekötve, a szignált pedig a PC USB kábeljéről táplált Arduino UNO-ról kapja a 10-es PIN-ről.
Össze-vissza villog, megjelennek olyan színek amilyeneknek nem kellene, stb...
#include <FastLED.h>
#define LED_PIN 10
#define NUM_LEDS 30
#define COLOR_ORDER RGB
#define LED_TYPE WS2812B
#define MAX_BRIGHTNESS 150
#define MIN_BRIGHTNESS 20
struct CRGB leds[NUM_LEDS];
void setup() {
LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(140);
}
void loop() {
for(int i = 0; i < 30; i++) {
leds[i] = CHSV(200, 255, 255);
FastLED.show();
delay(100);
}
}Szerintetek ez miért van?
[ Szerkesztve ]
Új hozzászólás Aktív témák
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Gumi és felni topik
- Android alkalmazások - szoftver kibeszélő topik
- Episodes from Liberty city
- Azonnali notebookos kérdések órája
- PlayStation 1 / 2
- Nyaralás topik
- Víz- gáz- és fűtésszerelés
- Xbox tulajok OFF topicja
- További aktív témák...