satanovsyn
Vytvořené odpovědi
-
AutorPříspěvky
-
piticko
ÚčastníkJo tak. Jsem nechápal moc ten první bit. Budu muset někde nastudovat… Ta možnost sepnutí náhodného počtu serv je teď mimo mne. Ale pokud bys měl energii spáchat jednoduchý prográmek např. s LEDkama, budu rád (možná nejen já).
piticko
ÚčastníkSuper, takže využití je ideálni pro tlačítka a jiné „hrubší“ činnosti. 🙂 Díky!
Zbyšek Voda
ÚčastníkRozčilujete se zbytečně. To, že se zobrazil jiný obrázek, než jste chtěl… za to může váš blog. Co zkusit třeba Google Drive, Dropbox…?
posjirka
Účastníknechápu dotaz. Jak jsem psal vygeneruj náhodnou proměnnou a urči si např. že 1, bit bude aktivita serva 1. 2. bit aktivace serva 2, 3. bit aktivace serva 3.
V kodu je to ještě jednodušší#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;int random1 = 0; // promenna kam se ulozi nahodne cislo – cislo serva
int random2 = 0; // promenna kam se ulozi nahodne cislo – novz uhel
int random3 = 0; // promenna kam se ulozi nahodne cislo – prodleva…. nastaveni pinu atd.
random1 = random(0, 16); // vzgeneruj noahodne cislo pro pocet serv
random2 = random(0, 180); // vzgeneruj noahodne cislo pro uhel serva
random3 = random(200, 1000); // vzgeneruj noahodne cislo pro delay
if (bitRead(random1, 1) == 1 )
{
servo1.write(random2);// uprav stav serva 1
}
…
delay(random3); // pauyaposjirka
Účastníkobávám se že ani to není přesné. Hodnota interního pull up drporu u AVR kolísá mezi 10 a 50 kOhm.
posjirka
Účastníktak já nakreslím lepší schéma, přidám ho k sobě do obrázku pro blog (pouze souborově bez zobrazení) a ani to sem nemůžu vložit. Tak kam mám do….le vkládat obrazky admine????????????
Aleš
ÚčastníkV podstatě ano. Jenom s tím rozdílem, že vnitřní pull-up není 10k ale 50k, což někdy nemusí stačit.
piticko
Účastníknějak se tu stránky zastavily?
odpovím za fiam…
zobrazí se mi úvodní stránka, s tím, že je tam:
ZDARMA: Průvodce světem Arduina (reklama na knihu)
další je:
Nejnovější články (pusto prázdno)
a nakonec po scrollování dolu:
Co je arduino (se základním popisem)
.Jo a přihlášení funguje jen z úvodní stránky, na jiných to hodí:
No posts found.
piticko
Účastník…a teď ještě vyřešit to, aby se pohybovaly i dvě serva najednou…jak na to?
piticko
Účastníkposjirka: někde se asi stala chyba… co se to objevilo za hlášku, místo obrázku? 😉
posjirka
Účastník
tak jsem to dal na uložiště blogu….Attachments:
posjirka
Účastníks tím ti nikdo nepomůže protože netušíme na co se ptáš.
Pokud potřebuješ pomoct musíš nám dát co možná nejvíc informací.
Z výsledku kodu „xy“ nic nevyčeteme.
Dej sem původní kod, nebo odkus jsi to stáhnul, dej sen schéma zapojení a co vlastně má to zapojení dělat a můžeme se na to vrhnout.posjirka
Účastníkjá bych použil 3 generované random proměnné.
1. by mi určovala které serva mají reagovat (1.bit bylo servo 1, 2 bit servo 2, 3bit servo 3)
2. proměnná by mi řešila nastavení (úhel) pro tyto serva
3. proměnná by mi generovala délku prodlevy k dalšímu kroku.piticko
Účastníkco vymyslet nějaký takový kód:
vygeneruj náhodné číslo z pinu A1 od 0 do 1023
čekej vygenerovaný čas A1 (pro delší čas si lze pomoct matikou)
vygeneruj náhodné číslo z pinu A0 od 1 do 3
když bude číslo 1->udělej něco se servem1
když bude číslo 2->udělej něco se servem2
když bude číslo 3->udělej něco se servem3
…a znovapiticko
ÚčastníkTak jsem spáchal první verzi tak, aby byla funkční…
int tln; int tl=0; void setup() { for (int x=2;x<=6;x++){ pinMode(x,INPUT_PULLUP); } for (int i=8;i<=12;i++){ pinMode(i,OUTPUT); digitalWrite(i,HIGH); delay(100); digitalWrite(i,LOW); } delay(2000); randomSeed(analogRead(0)); tln = random(2,7); } void loop() { if(tln==2){ digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); } else if(tln==3){ digitalWrite(9,HIGH); digitalWrite(8,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); } else if(tln==4){ digitalWrite(10,HIGH); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); } else if(tln==5){ digitalWrite(11,HIGH); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(12,LOW); } else if(tln==6){ digitalWrite(12,HIGH); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); } tl=digitalRead(tln); if (tl==LOW){ tln=random(2,7); } else{} }
I jsem tedy zkoušel na výstup PULLUP 5V připojit OV a měl jsem asi štěstí, výstup přežil a i reagoval na těch 0V, jak poprvé psal Zbyšek.
posjirka, nastuduji tvůj „obrázek“ a rád bych samozřejmě využil co nejméně pinů…poněvač, pokud budu chtít více tlačítek, tímto způsobem, co jsem spáchal, je k dispozici jen jedno. 🙂Krystof
ÚčastníkMnohokrát děkuji,
hned v pondělí to vyzkouším.posjirka
ÚčastníkVždyť nikde nemáš paralelu mezi vzdáleností a intenzitou, pouze stále dokola rozsvěcíš a zhasínaš LED.
Zkus toto, ale píšu to jen od PC nemám Arduino u sebe:
#include <ultrasonicranging.h>
#define ECHO_PIN 7 // ECHO pin of HC-SR04
#define TRIG_PIN 6 // Trigger pin of HC-SR04
#define LED_OUT 11 // Drive LED (Base pin of TIP120void setup()
{
pinMode(TRIG_PIN, OUTPUT); // trigger pin of US range finder
pinMode(ECHO_PIN, INPUT); // Echo pin of US range finder
pinMode(LED_OUT, OUTPUT); // base of TIP120 to drive LED
analogWrite(LED_OUT, 0);
}void loop()
{
int distance = GetDistanceInCm(TRIG_PIN, ECHO_PIN);
if (distance > 254 ) {
distance = 254;
}
analogWrite(LED_OUT, distance);
delay(500);
}posjirka
ÚčastníkSamozřejmě že jde použít 1 pin jak pro tlačítko tak pro LED.
śkoda, že sem nejde vkládat obrázky přímo … .R1 TL1 R2 LED
+5V -[330R]–/ —*—[330R]—|>|— GND
|
D1 —————|V podstatě žekáš na log.1 na pinu a když příjde tak jí zapíšeš a začneš se zajímat o jiný pin /LED/ .
Odpor R1 chrání vstup před přímým připojením na +5V.Programově to můžeš udělat jako nahodile přiřazení pinu do pole a po stisku správného tlačítka bys šel o pozici doprava dokud nenarazíš na konec.
Zbyšek Voda
ÚčastníkKdyž se na to teď dívám s odstupem, vidím v tom zásadní problém… v momentu, kdy je zmáčknuté tlačítko a na výstupu je nastaveno HIGH je připojeno + přímo na GND a to se Arduinu líbit nebude.
Toto tedy nebude správná cesta.
Omlouvám se, že jsem si toho nevšiml dřív.Asi bych šel cestou nějakého toho multiplexingu.
Mirda
ÚčastníkNo – chcete toho celkem dost. Asi budete muset vydržet, než dorazej posily ze Sahary a z Persie. Pak to zde určitě bude samej robotik,elektronik a programátor s velkýma zkušenostma s programovánim AI…
piticko
ÚčastníkZbyšku díky,
kouknu na ten PULLUP. Pro mne je to novinka 🙂Nemám potřebu při tomto projektu šetřit pinama, ale pokud to půjde tak, jak jsi nakreslil, bude to fajn.
jdu si hrát…
Zbyšek Voda
ÚčastníkDobrý den,
když nad tím tak přemýšlím, možná by šlo použít něco jako toto:
Je potřeba to ale vyzkoušet. Nemám u sebe teď Arduino.Potom by ovládání probíhalo tak, že byste přepínal mezi
pinMode(pin, OUTPUT);
a
pinMode(pin, INPUT_PULLUP);
společně s rozsvěcením LED, čtení stavu…
Použití 2×5 pinů by bylo rozhodně nejjednodušší.
Pokud ale chcete ušetřit piny, najdou se i další způsoby, které piny ušetří ještě o trochu více.
Použitím nějakého multiplexingu se dá ovládat mnohonásobně více LED, než je pinů (počet roste i exponenciálně). Například při použití Charlieplexingu je možné pomocí tří pinů ovládat až šest LED (obecně je počet LED dán vztahem n^2-n, kde n je počet použitých pinů). Více o Charlieplexingu zde.
Druhou kategorií je ovládání tlačítek. Těch je možné na jeden pin připojit teoreticky až 1023 (respektive rozsah analogového převodníku – 1). V praxi je počet menší, ale vašich potřebných pět tlačítek je OK. Všechny tlačítka jsou připojena paralelně k jednomu pinu v sérii s resistory různých hodnot. Stisknutím dvou tlačítek tak vznikne paralelní kombinace více resistorů. Pokud vyberete správné hodnoty odporů, budete schopný vyčíst všechny možné kombinace stisků tlačítek. Více tlačítek připojených k jednomu Arduino pinu je popsán zde.
S využitím těchto dvou způsobů tedy použijete pouze čtyři piny! 🙂
dragowasabi
ÚčastníkDobrý den. co jsem se bavil s elektrikáři v práci, tak mi říkali, že tento modul by to umět měl, protože tam má dodaný triaky, který právě dokážou regulovat tok napětí a tudíž i stmívání/rozednívání. takže toto mám již vyřešené. horší to bude s programem. z prvního příspěvku tady ve vlákně si jakžtakž dokážu odvodit kód pro časové spínání, ale nevím přes jaké příkazy zprovoznit změnu jasu přes tyto moduly
Zbyšek Voda
ÚčastníkDobrý den,
bavíme-li se o tomto modulu: http://www.ebay.com/itm/4CH-AC-LED-Light-Dimmer-Module-Controller-Board-ARDUINO-RASPBERRY-Compatible/121752461158?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20131003132420%26meid%3D24efa532ac8b4d51b2ccc92ea32c4c1d%26pid%3D100005%26rk%3D3%26rkt%3D5%26sd%3D111764492631Z jeho popisu mi vyplývá, že by měl stmívání umět. Když se ale dívám na videa s ukázkami, vypadá to spíše na opak. Je to zmatečné.
Každopádně… pokud máte na blízku někoho, kdo se elektronikou živí, rozhodně bych dal spíše na jeho radu 🙂 Já jsem taky jenom amatér!
Přes tyristory to také určitě půjde!
Aleš
ÚčastníkDík, zkusím.
dragowasabi
ÚčastníkZdravím. Bavil jsem se s elektrikáři v práci a ti jsou na pochybách ohledně toho modulu s relé. Tvrdí,že umí jen zapínat a vypínat,ale ne stmivat a rozednivat. Doporučili mi spse tyristory. Tak teď opravdu nevím.:/
andyfuturix
ÚčastníkZbyšek Voda
ÚčastníkNení zač, držím palce 🙂
dragowasabi
ÚčastníkDěkuji za vyčerpávající opověď. Porozhlédnu se po netu na nějaké slušné ceny. Teď už si jen hrát s programováním. to bude také zážitek.
Zbyšek Voda
ÚčastníkDobrý den,
ten poslední modul (http://www.ebay.com/itm/5V-4-Channel-LED-Indicator-Light-PLC-Relay-Module-Circuit-Board-Blue-for-Arduino-/321493316614?hash=item4ada7eb406:g:-RoAAOSwLVZVlcaA) má na sobě již zmiňovaná mechanická relé – takže u nich byste mohl ovládat maximálně vypnuto-zapnuto.Ten předchozí modul by měl jít použít (http://www.ebay.com/itm/4CH-AC-LED-Light-Dimmer-Module-Controller-Board-ARDUINO-RASPBERRY-Compatible/121752461158?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20131003132420%26meid%3D24efa532ac8b4d51b2ccc92ea32c4c1d%26pid%3D100005%26rk%3D3%26rkt%3D5%26sd%3D111764492631).
Budete potřebovat ArdUino, RTC modul, modul s relé, teploměr a displej
Dále také potenciometr k displeji (k nastavení kontrastu – ne u všech je ale potřeba). Potom možná pár rezistorů – třeba u 1-Wire sběrnice, kterou se připojuje teploměr DS18B20 potřebujete 4.7 kohm rezistor. Komponenty kolem ale hodně závisí na použitém typu modulu/displeje/teploměru… -
AutorPříspěvky