Nejste přihlášen/a.
Poradil by mi prosím nějaký hodný člověk s tímto problémem? Už jsem prošel několik knížek a návodů, ale všude se zabývají jen výstupy arduina. Díky tomu jsem se naučil si sestavyt na výtupech takovou světelnou show, jakou potřebuji. V žádné publikaci ale není ani zmínka o tom, jak by mi toto mělo fungovat pouze při stisknutém tlačítku na vstupu. Neporadil by mi někdo? K čemu to je, když si výstupy dělají to co chci, ale nemůžu toto dějství zapínat a vypínat jednoduchým způsobem. Předem moc děkuji za jakou koli radu. Michal
Máte několik možnosti vstupů. Použít digitální vstup, nebo analogový vstup. Tlačítko zapojit jedním koncem na + druhým koncem na D3. D3 přes odpor cca 10k-100k na zem. podobně jako s digitálním vstupem, se to dá udělat i s analogovým vstupem. pak jsou složitější metody, udělat to přes přerušení, ale to není pro začátečníka.
tady je vzor SW:
void setup()
{
pinMode(3, INPUT); //nastaví pin D3 jako vstupní
}
void loop()
{
proměnná = digitalRead(3); // do proměnné se zapíše stav vstupu D3
// tady nějaké IF, apod, kterým se reaguje na stav vstupu, tedy stisknutého tlačítka.
}
Moc Vám děkuji, Ale jak to včlením do tohoto programu (viz níže), který mi dělá, co potřebuji a jak ho zase umlčím (ve skutečnosti používám místo tlačítka PIR detektor pohybu) Ten mů prográmek, co už chápu je tento:
/* čísla výstupných pinov */
byte outputPins[] = {0,1,7,8,9,10,11,12};
void setup()
{
for(int i=0; i<8;i++)
{
pinMode(outputPins[i], OUTPUT);
digitalWrite(outputPins[i], LOW);
}
}
void loop()
{
for(int i=0; i<7;i++)
{
digitalWrite(outputPins[i], HIGH);
delay(300);
digitalWrite(outputPins[i], LOW);
}
{
digitalWrite(outputPins[4], HIGH);
digitalWrite(outputPins[5], HIGH);
digitalWrite(outputPins[6], HIGH);
digitalWrite(outputPins[7], HIGH);
digitalWrite(outputPins[3], HIGH);
digitalWrite(outputPins[2], HIGH);
digitalWrite(outputPins[1], HIGH);
digitalWrite(outputPins[0], HIGH);
delay(2000);
digitalWrite(outputPins[4], LOW);
digitalWrite(outputPins[5], LOW);
digitalWrite(outputPins[6], LOW);
digitalWrite(outputPins[7], LOW);
digitalWrite(outputPins[3], LOW);
digitalWrite(outputPins[2], LOW);
digitalWrite(outputPins[1], LOW);
digitalWrite(outputPins[0], LOW);
delay(500);
}
}
Tady to máš upravené.
/* čísla výstupných pinov */
byte outputPins[] = {0,1,7,8,9,10,11,12};
byte tlacitko
void setup()
{
for(int i=0; i<8;i++)
{
pinMode(outputPins[i], OUTPUT);
digitalWrite(outputPins[i], LOW);
}
//digitální vstup(jakýkoliv volný, kteý je k dispozici)
pinMode(3, INPUT); //nastaví pin D3 jako vstupní
// analogový vstup (jakýkoliv volný, kteý je k dispozici)
pinMode(A3, INPUT); //nastaví pin A3 jako vstupní
}
void loop()
{
for(int i=0; i<7;i++)
{
digitalWrite(outputPins[i], HIGH);
delay(300);
digitalWrite(outputPins[i], LOW);
}
digitalWrite(outputPins[4], HIGH);
digitalWrite(outputPins[5], HIGH);
digitalWrite(outputPins[6], HIGH);
digitalWrite(outputPins[7], HIGH);
digitalWrite(outputPins[3], HIGH);
digitalWrite(outputPins[2], HIGH);
digitalWrite(outputPins[1], HIGH);
digitalWrite(outputPins[0], HIGH);
delay(2000);
digitalWrite(outputPins[4], LOW);
digitalWrite(outputPins[5], LOW);
digitalWrite(outputPins[6], LOW);
digitalWrite(outputPins[7], LOW);
digitalWrite(outputPins[3], LOW);
digitalWrite(outputPins[2], LOW);
digitalWrite(outputPins[1], LOW);
digitalWrite(outputPins[0], LOW);
delay(500);
tlacitko = digitalRead(3); // do proměnné se zapíše stav vstupu D3
if tlacitko != 0
{
// tady obsloužíš stisk tlačítka
}
// tady to pokračuje, když není nic stisknuto
}
Co myslíš tím umlčením? Že ty výstupy pojedou jen když bude stisknuté tlačítko? To byse muselo upravit ještě dál, nejlíp přes pomocnou proměnnou.
Koukněte do vnitřní pošty. Snad editor zachová formátování z IDE.
A dobrý stránky, ze kterých se dá čerpat jsou tyhle: arduino.cc/...
Já nevím, jak poděkovat. Děkuji, děkuji a zároveň se omlouvám, za zpoždění, ale měl jsem nějaké povinnosti okolo domu a nemohl jsem to zkoumat.
Ale teď k věci...tenhle kód tam nejde nahrát...zasekne se u řádku
void loop()
Ale abych to řekl velice jednoduše o co mi jde. Mám na domě 12 reflektorů rozdělených do dvou skupin a dva PIR detektory. Je to již funkční a stažené do rozvaděče. Chybí mi tam jen dát arduino jako mozek, aby opě sekce reflektorů na sepnutí PIR (jim přidělený) zahrály krátkou animaci a pak už se rozsvítily nastálo - dokud bude PIR sepnutý.
Původně jsem ještě chtěl dalším mnohapólovým přepínačem si přepínat různé druhy animací, ale už jsem z tohoto problému tak vyřízený, že budu už vděčný za to, když to bude dělat animaci stále stejnou (bez přepínače).
Pro jednoduchost používám tlačítka na vstupu a led na výstupu, protože jak mi to bude fungovat takhle na stole, tak to už pro mě nic není, začlenit to do rozvaděče k reflektorům a PIRkům
Tedy potřebuji: Sepnu a držím tlačítko (vím, jak ho zapojit) v A0 a na to se rozsvítí (a nejlépe zase zhasne, ale při nejhorším může zůstat svítit) LED v D13 (necelou vteřinu), pak v D12, pak D11, Pak D10 a pak D9 nakonec se všechny rozsvítí a zůstanou svítit, dokud nepustím tlačítlo v A0
A nezávisle na tom sepnu tlačítko v A1 a to samé se mi bude dít na výstupech jen ale ve třech skocích. Napřed se sepne LED D8 a s ní D5, pak D7 a s ní D4 a D3, pak D6 a s ni D2 a pak zase svítí vše dokud držím tlačítko A1, když ho pustím, Všechny Led zhasnou.
To že jdou některé výstupy společně je proto, že jsou některá světla za rohem, tak aby nečekaly, až na ně dojde řada a já tam zatím nezakop po tmě. Vím, že by to šlo ošetřit Hartvarově pomocí diod, ale když navhnu už tišťák, tak to bude jednou pro vždy dané...no a kdybych se v budoucnu rozhodl pro jinou animaci, tak ba to byl průser a nešlo by to softwarově řešit.
Ještě jednou moc děkuji Za Tvou ochotu a jestli mi pomůžeš, tak Budeš budeš zlatý člověk!
Michal
nemám moc zkušeností s ard. ale možná by pomohlo napsat, v jakém prostředí to arduino programujete(IDE, nebo nějaké jiné), Pokud používáte IDE, před nahráním SW do ARD tím tím pravým tlačítkem, ho nejdřív tím levým tlačítkem jen přeložit. A pokud to během překladu hlásí nějakou chybu, tak tady vypsat ty chyby.
Moc děkuji, ale když já nevím, co je prostředí? a co IDE? já používám program Arduino.exe víc tomu nerozumím
a nešla by tam tedy přidat ta promenná, aby mi to chodilo, jak potřebuji?
Jo, arduino.exe je to, čemu se říká IDE. Musíte počkat na jentak. na tohle si netroufám. V každém případě zkuste napsat, co vám to dole, v tom spodním okně, pod programem hlásí za chybu. Nahoře máte v řadě pět ikonek. První zleva je zatržítko, to jen přeloží SW. Druhé je šipka do prava, ta přeloží SW a nahraje do Ard. Dokud vám po stisku prvního tlačítka neprojde překlad bez chyby, nemá cenu dál něco podnikat. No a právě ty chyby při překladu se zobrazují v tom černém okně pod programem.
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.