Ujo
Vytvořené odpovědi
-
AutorPříspěvky
-
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); } } }
keksik334
ÚčastníkDostanu se k void loop
Arduino: 1.6.10 (Windows 7), Vývojová deska: „Arduino/Genuino Uno“
C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: In function ‚void loop()‘:
netblink:33: error: ‚colorWipe‘ was not declared in this scope
colorWipe(0xff,0xa2,0x00, 40, 1);
^
netblink:39: error: ‚colorWipe‘ was not declared in this scope
colorWipe(0xff,0xa2,0x00, 40, 0);
^
C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: At global scope:
netblink:46: error: expected ‚,‘ or ‚…‘ before ‚if‘
if(pasek == 0){
^
netblink:63: error: expected ‚)‘ before ‚}‘ token
}
^
netblink:63: error: expected initializer before ‚}‘ token
netblink:63: error: expected declaration before ‚}‘ token
exit status 1
‚colorWipe‘ was not declared in this scopeVojtěch Vosáhlo
Účastníkmam doma 7805 muzu pouzit?
Jak budete arduino napájet? LM7805 je regulátor napětí určený pro stabilizaci napájecího napájení, né pro snížení. Asi by se použít dal ale je to hodně zbytečné. Pokud máte po ruce 4 rezistory o stejné hodnotě, nemá cenu vymýšlet nic jiného.
Tento kód by měl fungovat, nahoře akorát specifikujte ty piny a počty led. Kdyby to nešlo, ozvěte se.
#include <Adafruit_NeoPixel.h> ////// NASTAVENI LEVEHO PASKU #define PIN_L_PASEK pin l pasku #define NUM_LEDS_L_PASEK pocet led l pasku Adafruit_NeoPixel l_pasek = Adafruit_NeoPixel(NUM_LEDS_L, PIN_L_PASEK, NEO_GRB + NEO_KHZ800); ////// NASTAVENI PRAVEHO PASKU #define PIN_P_PASEK pin p pasku #define NUM_LEDS_P_PASEK pocet led p pasku Adafruit_NeoPixel p_pasek = Adafruit_NeoPixel(NUM_LEDS_P, PIN_P_PASEK, NEO_GRB + NEO_KHZ800); ////// NASTAVENI VSTUPNICH PINU #define L_BLINKR_PIN vstup z l blinkru #define P_BLINKR_PIN vstup z p blinkru void setup() { /// Nastaveni pinu na ktere pujdou vstupy/ blinkry pinMode(L_BLINKR_PIN, INPUT); pinMode(R_BLINKR_PIN, INPUT); ///Nastaveni pasku l_pasek.begin(); l_pasek.show(); p_pasek.begin(); p_pasek.show(); } void loop() { if(digitalRead(P_BLINKR_PIN)) { colorWipe(0xff,0xa2,0x00, 40, 1); colorWipe(0x00,0x00,0x00, 5, 1); } if(digitalRead(L_BLINKR_PIN)) { colorWipe(0xff,0xa2,0x00, 40, 0); colorWipe(0x00,0x00,0x00, 5, 0); } } void colorWipe(byte red, byte green, byte blue, int SpeedDelay, int pasek /// 0 = levy pasek / 1 = pravy 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); } } if(pasek == 1){ for(uint16_t i=0; i<NUM_LEDS_P_PASEK; i++) { setPixelP_PASEK(i, red, green, blue); showP_PASEK(); delay(SpeedDelay); } } } void showL_PASEK() { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel l_pasek.show(); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED FastLED.show(); #endif } void setPixel_L_PASEK(int Pixel, byte red, byte green, byte blue) { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel l_pasek.setPixelColor(Pixel, l_pasek.Color(red, green, blue)); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; #endif } void showP_PASEK() { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel p_pasek.show(); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED p_pasek.show(); #endif } void setPixel_P_PASEK(int Pixel, byte red, byte green, byte blue) { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel p_pasek.setPixelColor(Pixel, p_pasek.Color(red, green, blue)); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; #endif }
keksik334
Účastníkdekuji za reakci.. mam doma 7805 muzu pouzit? budu brat signal primo od blinkru mam to nejlepe dostupne tak ze bych dal 7805 snizil napeti na 5v privedl na pin. jinak na stole super uz funguje sepne po propojeni pinu tak ze zaklad bych mel
a ted kdyz bych chtel spinat animaci na dvou vystupech (prava nebo leva strana)? 🙂#include <Adafruit_NeoPixel.h> #define PIN 6 #define NUM_LEDS 12 // Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pinMode(8, INPUT); strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { if(digitalRead(8)) { colorWipe(0xff,0xa2,0x00, 40); colorWipe(0x00,0x00,0x00, 5); } } void colorWipe(byte red, byte green, byte blue, int SpeedDelay) { for(uint16_t i=0; i<NUM_LEDS; i++) { setPixel(i, red, green, blue); showStrip(); delay(SpeedDelay); } } void showStrip() { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.show(); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED FastLED.show(); #endif } void setPixel(int Pixel, byte red, byte green, byte blue) { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.setPixelColor(Pixel, strip.Color(red, green, blue)); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; #endif } void setAll(byte red, byte green, byte blue) { for(int i = 0; i < NUM_LEDS; i++ ) { setPixel(i, red, green, blue); } showStrip(); }
Vojtěch Vosáhlo
ÚčastníkAhoj,
na snížení napětí se dá použít spousta věcí, nejjednoduší by byl asi obyčejný napěťový dělič ze 2 rezistorů, pak je taky možnost použít nějaký tranzistor, relé a nebo třeba nějaký optočlen. Chcete brát signál od blinkru, bylo by to od žárovky nebo od samotné páky? -> U páky dostaneme zap/vyp, u žárovky rovnou blikání… Dá se pracovat s obojím.Předpokládám že tyto funkce spouští animaci samotnou, poté by se hlavní smyčka upravila takto:
void loop() { if(digitalRead(Pin Na ktery Jde Signal)) { colorWipe(0xff,0xa2,0x00, 40); colorWipe(0x00,0x00,0x00, 5); } }
A do void setup přidáte
pinMode(Pin Na ktery Jde Signal, INPUT);
To by mělo stačit.
Držím palce
Bojkas
ÚčastníkNo spíše jsem myslel použít už existující řešení například v protokolu X-10.
dudo
ÚčastníkAttachments:
dudo
ÚčastníkDakujem za odpoved. Toto je prva verzia (bez zmeny programu). Termostat funguje perfektne. Este sa opytam, ze ako tam doplnim dalsie cidlo?
P.S. Toto je moj prvy projekt s mikrokontrolerom = uplny amater 🙂Attachments:
ArduXPP
ÚčastníkA máte vše nastavené správně , usb převodník má vlastní driver ovladač.
V IDE nastaveno jako by se nahrával sketch na arduino uno .K usb převodníku, 5V > 5V chip (+) , RX > TX , TX > RX , u resetu připojené jen odpor + to co je na obrázku předcházejícího příspěvku.
Vojtěch Vosáhlo
ÚčastníkTeda preset je jedno který tam je… A v arduinu musí být program arduino as isp.
Vojtěch Vosáhlo
ÚčastníkJde to pomocí arduina v avrdudess, nastavte VŠE jako na obrázku, ať je to jak kopie, to by mělo čip kompletně smazat ale smaže to i bootloader a čip poběží na interních 8 mhz.
Pokud ho chcete na externích 16mhz tak je nastavení pojistek takto:L: FF
H: D9
E: FFPotom klikněte dole na PROGRAM
Attachments:
bot
ÚčastníkMyslím, že to byla verze 1.5.9 (byl to první pokus) potom IDE chtělo aktualizovat nějaké desky a začal jsem mít problém již při kompilaci sketche, tak jsem stáhl 1.6.11, ale problém přetrval. Stáhl jsem tedy 1.5.8 – tím jsem zkoušel i ostatní čipy.
Odpor mám zapojený i kondík, ale nejde to.
A lze nějak čip vymazat pomocí arduina? Nebo mám počkat, až mi přijde USBasp programátor?
Vojtěch Vosáhlo
ÚčastníkDobře že se alespoň detekují, všechny jsou nastaveny na ext. krystal > než 8 mhz a ty pojistky všechny vypadají že jsou poupravené. To by znamenalo že do všech se bootloader nahrál. Nevíte s jakou verzí arduino ide jste zkoušel ten čip co má jiné LB? Možná by pak bylo dobré všechny čipy zresetovat a vypálit do nich bootloader znovu pomocí nového IDE ale trochu se bojím aby pak nebyl opět problém s tím se k nim dostat…
Zapojení se sériovou linkou by mělo být jako na tomhle obrázku, http://www.directupload.net/file/d/3883/4hymfghj_png.htm, a na procesoru musíte mít 10k rezistor mezi 5v a RST.
Nastavení v arduino IDE nechte asi jako pro arduino Uno desku, Programátor Avr ISP a Deska Arduino UNO. Ale netuším jestli to poběží, v tom se nevyznám…
bot
ÚčastníkTak jsem nahrál upravený sketch a v avrdudess mi to už detekuje a bezproblému přečte pojistky. Všechny brouky to detekuje pokud je zapojen 16MHz krystal.
4 z 5 čipů mají tohle nastavené: https://postimg.org/image/ds1c80r2z/
1 z 5 čip to má takhle: https://postimg.org/image/t1h70c5d7/
má jiné LB.Ale pořád ses mi nedaří do nich nahrát sketch přes ten převodník.
Zkusil jsem dát i 100n ker. kond. DTR -> pin1 (reset), ale i tak to nejde (ani na převodníku nesvítí ledky Rx,Tx).
Jakou desku, programátor při nahrávání sketche mám mít?ArduXPP
ÚčastníkArduXPP
ÚčastníkTam není žádná chyba, jen to, že je potřeba u reset dát keramický kondenzátor 100 nF(Můžete tam dát i jiný).
K zapojení, je potřeba na vedlejší řadu a reset(u chipu(1)) zapojit keramický kondenzátor a na vedlejší řadě dát z převodníku DTR. -
AutorPříspěvky