yenda.net
Vytvořené odpovědi
-
AutorPříspěvky
-
keksik334
Účastníkano kdyz to sepnu 5v arduina tak to bezi zkusim ten kod dam vedet
Vojtěch Vosáhlo
ÚčastníkTak můžete zkusit ten kód co jsem tu dával. Napojte jeden z děličů na A0 a uvidíme. Když to spínáte 5v arduina tak to teda běží jo? Zkuste možná předtim ještě měřit mezi světlem (jakymkoliv) a zemí arduina, ktere je napojene namotorku.
keksik334
Účastníkto nechcete videt:-D to uz je takova prasarna ze uz sam nevim 😀 odpory jsem zkusil a je to stejny proste nesepnekdyz merim na delici proti zemi motorky mam tam 4v a ne a ne sepnout
zem arduina jsem napojil jen na zem jednoho z blinku
7805 mam napojene na +svetla vystup 5v do arduina a -7805 napojene na zem jednoho z blinkru
led pasky mam z arduina +5v a gnd arduinaVojtěch Vosáhlo
ÚčastníkA ještě je samozřejmě důležite který z ezistorů jde na zem a který na + ale to kste měl správně podle toho co jste naměřil. Pozor. Pokud to dáte obráceně, na arduino pujde 8v!
Vojtěch Vosáhlo
ÚčastníkMůžeze ale je to hodně divný… Pokud nepomůžou ty rezistory, zkuste poslat nějaké obrázky.
keksik334
Účastníkarduino je napajene z motorky prez7805 propojil jsem zem arduina se zemi blinkru a porad nic 😀 odpory jsem nemenil 10k a 5K mam to zkusit?
Vojtěch Vosáhlo
ÚčastníkJak jsem napsal nahoře…
Jedna další věc, která mi netrkla, ale musí tam být. Spojte ZEM arduina se ZEMÍ jednoho z těch blinkrů, pak by to mělo jít.
Pozor aby to byly opravdu země, ať si neodpálíte arduino. A vy arduino nenapájíte z motorky?
Přestřelujem se tu komentářema a já jsem vždy pozadu 😀
keksik334
Účastníkmam pouze 10k,100k,220k zkusim 10k a 5k
Vojtěch Vosáhlo
ÚčastníkPokud to sepne 3.3v z arduina je problém jinde
Nemáte při ruce přesnější rozdíl? nějaké dva které by se opravdu lišily o polovinu nebo o trochu míň? Jako třeba 100k a 140-160k? Těch +20k na tě 220 už z toho dělá trochu moc malý napětí.Jedna další věc, která mi netrkla, spojte ZEM arduina se ZEMÍ jednoho z těch blinkrů, pak by to mělo jít.
Pozor aby to byly opravdu země, ať si neodpálíte arduino. A vy arduino nenapájíte z motorky?
keksik334
Účastníkted jsem to napojil na svetlo ktere neblika je tam 13,6v za delicem mam 4v a ani to mi to nesepne jenom kdyz ho dam na 5v arduina nebo 3,3 to taky sepne ale tech 4 za delicem ne
keksik334
Účastníktim jak to docela rychle blika nejsem schopnej to zmerit ale par krat jem tam videl 12V delic mam 220k 100k
Vojtěch Vosáhlo
ÚčastníkOprava, to předtím ani nemusíte zkoušet!
Teď jsem ještě koukal a 3v jsou přesně někde na té arduino hranici LOW a HIGH.
Co jste použil za rezistory na dělič a jaké je napětí na světle, ně na pinu arduina?Vojtěch Vosáhlo
ÚčastníkNemá cenu zkoušet 😀
2.5 nebo 3 na pinu arduina? Už za tím děličem? Na světla by mělo jít 12v ne? Zkuste to přeměřit třeba na brzdovce, jestli je tam opravdu 12v. Pak zkontrolujte polaritu, na jaký části blinkru je + a na jaký – Pokud nic moc nezjistíte, nahrajte přiložený program do arduina, přendejte jeden z děličů na pin arduina A0 a otevřete ser. monitor (Ctrl + Shift + M) na 9600 baud. Pojedou vám tam hodnoty pinu A0. Pusťte blinkr a pozorujte hodnoty, kdyžtak sem pak hoďte co vám vyjíždí když svítí blinkr.const int analogInPin = A0; int sensorValue = 0; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(analogInPin); Serial.print(sensorValue); delay(100); }
keksik334
Účastníksuper az to pofrci zkusim to
ted mam ale jiny problem 😀
kdyz mam vse zapojene v moto nechce mi to spustit animaci
kdyz pichnu pin na 5v arduina spusti se animace ale jakmile se napichnu na blinkr nesepne
je fakt ze se to blbe meri kolik tam je jak to broblikava ne pokazde ho stihnu zmerit merakem ale obcas to stihne a zmeri treba 2,5v nebo 3v a arduino nesepneVojtěch Vosáhlo
ÚčastníkZas takový oříšek to není 😀
Nahoru do kódu, k těm všem defines vložíte tohle:
////////////POCET LED JEDNOHO Z PASKU #define NUM_LEDS NUM_LEDS_L_PASEK
Musí to být pod nastavením levého pásku, nebo níže…
Hlavní smyčka void loop bude vypadat takhle:
void loop() { if(digitalRead(P_BLINKR_PIN) && !digitalRead(L_BLINKR_PIN)) { colorWipe(0xff,0xa2,0x00, 40, 1); colorWipe(0x00,0x00,0x00, 5, 1); } if(digitalRead(L_BLINKR_PIN) && !digitalRead(P_BLINKR_PIN)) { colorWipe(0xff,0xa2,0x00, 40, 0); colorWipe(0x00,0x00,0x00, 5, 0); } if(digitalRead(L_BLINKR_PIN) && digitalRead(P_BLINKR_PIN)) { colorWipe(0xff,0xa2,0x00, 40, 2); colorWipe(0x00,0x00,0x00, 5, 2); } }
A toto:
if(pasek == 2){ for(uint16_t i=0; i<NUM_LEDS; i++) { setPixelL_PASEK(i, red, green, blue); setPixelP_PASEK(i, red, green, blue); showL_PASEK(); showP_PASEK(); delay(SpeedDelay); } }
přidáte do funkce ColorWipe pod obě if co už tam jsou.
Tohle by mělo vše vyřešit.Pokud se chcete kouknout kde má co být, celý kód by měl vypadat asi takto http://pastebin.com/cqmXj9J8
keksik334
Účastníktak a ted dalsi orisek 😀 je mozne aby poustel zaroven animaci kdyz je na obou pinech HIGH?
tehne stav dela to kdyz sepnu oba tak jednou pusti levej podruhe pravej pasek a tak se to strida 🙂Vojtěch Vosáhlo
ÚčastníkJo, to je důležitý a já to nezmínil… Když jse to měl bez odporu, arduino dostávalo 2 stavy, high a floating, to je ale špatně, my chceme aby dostávalo high a low a to se vyřeší právě tím pulldown rezistorem na zem. Dalo by se to vyřešit i v programu, dá se udělat to stejné v procesoru, ale většinou se to tak nedělá. Kdyby něco ještě zlobilo, tak je možný že na pinu arduina je malé napětí. Teď by tam měly být asi 4 volty když je na blinkru napětí pokud se nepletu. Kdyby jste dělal s menšími napětímy, musí se brát v potaz že arduino má hranici napětí někde kolem 1,6 v, aspoň myslím. Míň než 1.6 je 0 a nad 1.6 je 1.
Hodně štěstí s dalšími projekty.keksik334
Účastníkjde o to ze mi to falesne spousti… tak ze budu muset dat asi odpor mezi zem a vstupni pin? uz ho tam mam nabastlenej a pak to funguje
Vojtěch Vosáhlo
ÚčastníkJestli chápu správně otázku, tak na vstup arduina můžete pustit až 5v. Ale nejsem si jistej že je to to na co jste se ptal ?
keksik334
Účastníkjo brzdovku uz tam mam 😀 ale zadne animace dalsi 😀
jinak zeptam se je mozny aby bral vstup pro sepni az treba nad dva volty?Vojtěch Vosáhlo
ÚčastníkSuper, teď to můžete posouvat dál 😀 Animace pro brzdový světlo, různý animave při zrychlování motorky, no už to vidim 😉 za chvíli z toho máte disko motorku.
Vojtěch Vosáhlo
ÚčastníkJasně, těším se.
keksik334
ÚčastníkSuper dekuju za rady a pomoc 😉
az bude vse hotovo dam video jak to slape 🙂 ale nebude to zitra 🙂Vojtěch Vosáhlo
ÚčastníkTa polovina má být mezi dvěma rezistory 😀 posunulo se to
Vojtěch Vosáhlo
Účastník😀 Tak to bude asi nejlepší, tady je link na kalkulačku pro odpory Voltage divider ale prakticky když dáte do série 2 stejné odpory, mezi nimi je polovina napětí které do nich pouštíte.
napětí z blinkru —-| R1 |——| R2 |—- GND
|
|
polovina napětí blinkruSamozřejmě čím větší je rozdíl v odporu mezi oběma rezistory, tím menší napětí je uprostřed. Nevím kolik má blinkr, asi 12V , takže R1 musí být 2x odpor R2 –> dostanete asi 4 volty uprostřed.
keksik334
Účastníkk napajeni asi pouziju LM spinat je asi opravdu hloupost pouzit LM tak pouziju nejaky ten odpor jak jsem jeste nehledal 🙂 rozumim tomu asi jako vcelam (vubec) ale bavi me spekulovat 😀
Vojtěch Vosáhlo
ÚčastníkMůžu jen vědět jak jste to nakonec vyřešil s napájením a spínáním? Použijete lm nebo…?
keksik334
ÚčastníkUz to mam dekuji moc za pomoc 😉
keksik334
Účastníkneni za co se omlouvat to ja se omlouvam ze tomu vuuubec ale vuuubec nerozumim
Arduino: 1.6.10 (Windows 7), Vývojová deska: „Arduino/Genuino Uno“
C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: In function ‚void colorWipe(byte, byte, byte, int, int)‘:
netblink:48: error: ‚setPixell_pasek‘ was not declared in this scope
setPixell_pasek(i, red, green, blue);
^
netblink:49: error: ‚showl_pasek‘ was not declared in this scope
showl_pasek();
^
netblink:56: error: ‚setPixelp_pasek‘ was not declared in this scope
setPixelp_pasek(i, red, green, blue);
^
netblink:57: error: ‚showp_pasek‘ was not declared in this scope
showp_pasek();
^
exit status 1
‚setPixell_pasek‘ was not declared in this scopeVojtěch Vosáhlo
ÚčastníkPardon, zapoměl jsem tam komentář 😉
Takhle je to správně.void colorWipe(byte red, byte green, byte blue, int SpeedDelay, int pasek) { if(pasek == 0){ for(uint16_t i=0; i<NUM_LEDS_L_PASEK; i++) { setPixelL_PASEK(i, red, green, blue); showL_PASEK(); delay(SpeedDelay); } } f(pasek == 1){ for(uint16_t i=0; i<NUM_LEDS_P_PASEK; i++) { setPixelP_PASEK(i, red, green, blue); showP_PASEK(); delay(SpeedDelay); } } }
-
AutorPříspěvky