pripojme
Vytvořené odpovědi
-
AutorPříspěvky
-
edmond
ÚčastníkOsobně si myslím, že Vám chodí stále že nesvítí. 🙂
Váš program pracuje následovně:
napětí na pin 2
3 sekundy se nic neděje
vypnutí pinu 2
3 sekundy se nic neděje
pak se ptáte v jakém stavu je LED a ta je vždy v tomto stavu vypnutaboss1986
Účastníkboss1986
ÚčastníkTak jsem narazil na kod co jde bez knihovny. Posílá text. Ale nevím jak tam dosadit kod serva s knihovnou ServoTimer1. Nejsem ještě tolik v tomto zkušený. Díky za rady..
posjirka
Účastníkale jde to . pouze sdílejí stejný časovač TIMMER 0, použij pro servo knihovnu využívající TIMMER 1 : https://playground.arduino.cc/ComponentLib/Servotimer1
Proč jsou tam 3 arduina je vcelku jasné. 1 vysílací, 1 přijímací a 1 pro řízení serva.
Ono servo má tu vlastnost, že reaguje na šírku pulzu s frekvencí cca 50Hz, tj 20ms.
Když po 433MHz pošleš informace o identifikaci, uhel 3 serv a ukončovací sekvenci tak ti to může klidně trvat 10ms. To už ti rozhodí funkci časovače pro ovládání serva.
Jde so udělat, jen je třeba si v klidu rozmyslet funkci, načasování a nepoužívat na všechno knihovny …posjirka
Účastníkto je určitě super přístup i řešení. Spínání pomocí arduina není až tak problém a jen si koupíš zásuvku spínanou na 433MHz (cca 150-200kč) + vysílač (cca 25-50kč) a pak použiješ knihovnu RC switch.
https://github.com/sui77/rc-switchjednoduché, dá se s tím kouzlit ve stylu, měření výšky hladiny v jezírku, časové spínání (nebo přes internet) atd.
Jestli se chceš pustit do něčeho co má smysl postupuj po malých krůčcích a postupně to skládej. Vždy si dej takový úkol na kterém víš co děláš nebo jak má dopadnout a pak zjistíš že je to vlastně vcelku jednouché …. nu hodně štěstí a bastlení zdar
zz2012
ÚčastníkDík za tip. Právě i kvůli bezpečnosti jsem se ptal. Jedná se o čerpadlo = voda … a ač je vše opticky oddělené, nevím jestli se mi do toho chce. Možná to skončí obyčejnou „vratkou“ vody spínanou 12V ventilem místo regulace otáček.
Dík.posjirka
Účastníkjak jsme psal před chvíli na jiném vlákně:
doporučuji podívat se sem:
http://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/?ALLSTEPSposjirka
ÚčastníkDoporučuji podívat se sem:
http://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/?ALLSTEPSSamotný princip a řešení složité není, ale bez elektro vzdělání bych se do toho nepouštěl. Nejde ani tak o tvurce jako spíš o děti nebo nezasvěcěné, kteří nevhodnou manipulaci mohou přijít i o život .
Za sebe bych spíš amatérské řešení viděl jako max. spínání pomocí bezdrátových zásuvek na 433Mhz. Je to bezpečné a člověk nepříjde do styku ze sítovým napětím.
Soci
ÚčastníkPo úpravě byla reakce stále stejná, tak jsem začal zkoušet přehazovat drátky a místo ledky jsem použil nějaký rezistor co jsem tu měl a konečně se pak objevila nějaká odezva:
GSM Shield testing.
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:Pak jsem zkoušel v čem byl problém. Nefungovalo to když jsem místo rezistoru vrátil ledku, ani když jsem přehodil zpátky RX na TX a TX na RX jak by to mělo být (v současnosti mám tedy TX → TX) a dokonce ani při vrácení #define _GSM_TXPIN_ 2 #define _GSM_RXPIN_ 3. Všechny tyto věci se tedy musely změnit aby nastala tato reakce. Stále to nevolá, ale rozhodně jsem o něco dál. Děkuji.
Aleš
ÚčastníkNajdi knihovnu GSM.cpp
V ní najdi řádky:
#define _GSM_TXPIN_ 2
#define _GSM_RXPIN_ 3
změň je na:
#define _GSM_TXPIN_ 11
#define _GSM_RXPIN_ 10Ještě upřesním: signál RX na modulu GSM bude zapojen na pin11, signál TX na pin10. Sériový port se zapojuje RX na TX a TX na RX.
Když to bude chodit, tak bych to celé upravil a předělal na HW sériový port RX1 a TX1.
Místo LED bych tam dal 2 diody. Není to kvůli proudu, ale kvůli snížení napětí. Přes LED neprojde potřebný proud!
Soci
ÚčastníkPo vložení se mi vymazali mezery, tak ještě pro přehlednost:
Mega2560 → GSM
5V → VCC /tady jsem zmírnil proud pomocí jedné Led diody
PWM 10 → RX
PWM 11 → TX
GND → GNDMega2560 → PIR
5V → VCC
A0 → OUT
GND → GNDposjirka
Účastníkdíky
posjirka
Účastníktrochu se zpožděním ale přeci:
// náhodné říze 3 serv // v1 // místo serv bude řešením výpis stavu 3 proměnných na seriový port. // by JP 2016 // int servo1 = 0; // uhel natočeníserva 1 int servo2 = 0; // uhel natočeníserva 2 int servo3 = 0; // uhel natočeníserva 3 int uhel = 0; // novz uhel natočení int pauza = 0; // doba pauzy před další změnou int vyber = 0; // pomocná promměná pro výběr , které servo se bude měnit void setup() { Serial.begin(9600); // inicializace seriove komunikace randomSeed(analogRead(A0)); // generátor náhodných čísel začne od čísla == aktuální hodnota na portu A0 } void loop() { // generovaní náhodných hodnot //---------------------------- // novy uhel natočení serv uhel = random(0, 180); // výběr serv pro změnu vyber = random(0, 127); // délka pauzy v ms pauza = random(200, 1000); // uprava hodnot natočení serv //---------------------------- // když 0. bit proměnné "výber" bude rovný 1 aktualizuj hodnotu "servo1" if (bitRead(vyber,0) == 1) { servo1 = uhel; } // když 1. bit proměnné "výber" bude rovný 1 aktualizuj hodnotu "servo2" if (bitRead(vyber,1) == 1) { servo2 = uhel; } // když 2. bit proměnné "výber" bude rovný 1 aktualizuj hodnotu "servo3" if (bitRead(vyber,2) == 1) { servo3 = uhel; } // výpis proměnných a stavu serv //------------------------------ Serial.print("Servo 1 : "); Serial.print(servo1); Serial.println(" st."); Serial.print("Servo 2 : "); Serial.print(servo2); Serial.println(" st."); Serial.print("Servo 3 : "); Serial.print(servo3); Serial.println(" st."); Serial.print("Vyber : "); Serial.print(vyber); Serial.print(" = "); Serial.println(vyber, BIN); Serial.print("Pauza : "); Serial.print(pauza); Serial.println(" ms"); // oddělovač //---------- Serial.println("****************************"); delay(pauza); // čekání na další změnu }
Zbyšek Voda
ÚčastníkVkládám slíbený obrázek od posjirka.
posjirka
Účastníkomlouvat se nemusíš. každý něják začínal. spíš je důležitější že jsi našel řešení a podělil se o něj s námi.
DíkySoci
ÚčastníkZa málo informací se omlouvám, nicméně se mi mezitím podařilo najít správný návod. Pokud by někdo měl stejný problém přikládám odkaz díky kterému jsem to rozchodil, stačilo se jen zbavit částí ovládající servo.
http://www.arduinoecia.com.br/2014/12/controle-de-acesso-modulo-rfid-rc522.html
Zbyšek Voda
ÚčastníkZatím je bohužel pro uživatele možné vložit obrázek pouze z externího zdroje.
Když mi ho ale pošlete na mail zbysekvoda@gmail.com, dám ho sem.posjirka
Účastníkjojo přesně tak, chtěl jsem jej využít jako předřadný odpor pro měření teploty pomocí NTC čidla a zjistil jsem, že se hodnoty těchto odporů na ATMEGA328p na 2 analogových pinech výrazně lišila. Pokud si dobře vzpomínám tak to bylo cca 12k Ohm a 18kOhm (měřeno jako úbytek napětí na stejném odporu proti vstupu a zemi).
Na hrubší věci super, pro něco intenzivnějšího to není. Navíc to má tuším max.0,125W/pin(odpor)
posjirka
Účastníkobrázek je správně, jen blog si jej zablokoval pro extrení využití. Je nějáká varianta jak sem vložit obrázek?
Google Drive mám, ale používat nebudu, zbytečně bych si zanášel místo na disku a až budu dělat pravidelnou čístku smažu i toto a nebude mít nikdo nic. Na netu oceňuji že jsou informace dostupné i o několik let později a stále mohou pomoci….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:
-
AutorPříspěvky