Korcagin
Vytvořené odpovědi
-
AutorPříspěvky
-
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…dragowasabi
ÚčastníkDobrý den. trochu jsem se porozhlédl po netu a našel jsem toto video:
je k tomu i odkaz na koupení toho ovládacího modulu na ebayi, takže jsem hledal i vetší a našel jsem toto:
Jen nevím jestli tento relé dělá to samé jako ten, co jste mi doporučil vy a který je levnější.
Respektive mohl bych použít třeba tento relé modul?Děkuji za odpověď
dragowasabi
ÚčastníkDobře, takže budu potřebovat ardiono, rtc modul, modul s relé, eventuelně teploměr a displej. Mělo by to být vše nebo mi chybí ještě nějaké součástky? Každopádně vám děkuji za vaší ochotu a čas. Docela bych vás někdy chtěl vidět při praci. To musí byt koncert
Zbyšek Voda
ÚčastníkNa to by mělo stačit i UNO.
Chcete-li mít ale jistotu, sáhněte po Mega a neuděláte chybu.
Obzvlášť pokud použijete LCD s více piny (a ne například s I2C řadičem, kterému stačí tři piny).dragowasabi
ÚčastníkPokud to chápu správně, tak by mi stačil ten modul z druhého odkazu na ty tři žárovky a ještě by mi zbyl jeden výstup k dobru, třeba pro noční svícení. A měl bych ještě dotaz, jaký typ arduina byste mi doporučil? Mam v planu dodat do akvária ještě vodotěsný teploměr a k tomu displej.
Zbyšek Voda
ÚčastníkJe celá řada různých relé: http://www.gme.cz/products/search?term=ssr
Zapojení je popsáno v dokumentaci každého.Nakonec asi nejjednodušší by ale bylo koupit nějaký již hodový modul – například tento: http://www.sainsmart.com/sainsmart-4-channel-5v-solid-state-relay-module-board-omron-ssr-avr-dsp-arduino.html
dragowasabi
ÚčastníkDěkuji za rychlou odpověď. Nevíte náhodou jaký typ toho rele a kde by se dal koupit. Popřípadě bych byl rád za podrobnější popis zapojeni všech součástek. Pokud je to možné. Děkuji
Zbyšek Voda
ÚčastníkDobrý den, to by mělo jít.
Budete potřebovat ke každé žárovce SSR relé (elektromechanické by rozhodně nezvládlo plynulou regulaci jasu) a nějaký zdroj času (ať už například RTC, nebo modul pro připojení ke zdroji času přes internet – ESP8266/Ethernet shield…).dragowasabi
ÚčastníkZdravím. Mám na vás dotaz. Přibližně něco podobného bych chtěl vytvořit i ve svém akváriu-teráriu. Moje představa je taková, ze mám tři žárovky a ty by se mi v průběhu dne postupně rozsvěcovaly a zhasinaly. Tzn., že ráno se postupně rozsvítí první – krajní žárovka, v poledne se postupně rozsvítí druhá – prostřední žárovka a ta první se bude postupně zhasínat a to samé se bude dít i s třetí žárovkou navečer s tím, ze pak postupně zhasne. Tím bych chtěl vytvořit simulaci postupu slunce. Mé dotazy jsou takové: Lze pro arduino použít klasické žárovky na 220V a další je takový, jestli by jste mi prozradil, co všechno bych potřeboval za komponenty. Děkuji za odpověď.
Zbyšek Voda
ÚčastníkDobrý den, zkuste se podívat třeba na Redbot, nebo mBot a inspirovat se jejich motory 🙂
Mirda
ÚčastníkAhoj, arduino zatim neprogramuju , ale v C by to slo vyresit i takhle:
//slozitejsi zpusob, v jazyce C by slo vyresit i pres sprinf
void main()
{
unsigned long cislo = 987654321; //cislo k prevodu, bez znamenka,
char hex[17]=“0123456789ABCDEF“; //tabulka znaku pro prevod do hex soustavychar buf[5] = „0x00“; //prevedene znaky, nuly za x budou prepsany prevodem
printf(„\n“); //odradkovani text.vystupu na obrazovku
//prevod 32bit hodnoty v long typu zacina od nejvyssiho byte
for(int i = 0;i<4;++i)
{
buf[2] = hex[(cislo & 0xf0000000)>>28]; //vyssi pulbajt
buf[3] = hex[(cislo & 0x0f000000)>>24]; //nizsi pulbajtcislo<<=8; //posun o dalsich 8bitu
printf(„%s,“,buf); //tisk hodnoty na obrazovku
}
getchar(); //ceka na stisk enter
}daflik
ÚčastníkDíky, a ještě: nestačil by tento?:
16-Channel 12-bit PWM/Servo Drive shield module I2C PCA9685 For Arduino NEW -
AutorPříspěvky