jemiki8453
Vytvořené odpovědi
-
AutorPříspěvky
-
Cuore
ÚčastníkTak nakonec byl problém v SSR pomocí kterého se posila binární info od Raspi. Ikdyž tam byl pulldown odpor, tak arduino vyhodnocovalo Log1. Takže jsem to zapojil jako pullup a optimalizoval kód.
#include <IRremote.h>
#define PRODLEVA 50
bool MinulyStav = 0; // priznak predchoziho stavu tlacitka (1 .. stisknuto)
unsigned long CasZmeny; // promenna pro ulozeni casu zmeny stavu tlacitka
int zelena; // Zelene tlacitko na ovladaci TV Sony Bravia
int RECV_PIN = 3; // vstup od IRLED
int poc; // promenna na pocitani cycklu
int jas; // jas diody
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Zacatek cteni pinu v seriovem monitoru
pinMode(3, INPUT_PULLUP); // vstup od IRLED
pinMode(4, OUTPUT); // R
pinMode(5, OUTPUT); // G
pinMode(6, OUTPUT); // B
pinMode(7, INPUT_PULLUP); // zpetna vazba od RasPi
pinMode(12, OUTPUT); // napajeni pro RasPi
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(12, LOW);
}
void loop() {
// **OVLADANI RGB LED**
if (digitalRead(7) == 0 && digitalRead(12) == 1) // RasPi si seplo samodrzny kontakt vypnu napajeni
{
analogWrite(5, 150); // zelena LED = 1
analogWrite(4, 255); // cervena LED = 0
analogWrite(6, 255); // modra LED = 0
delay (5000); // cekej 5s
digitalWrite(12, LOW); // vypnu napajeni pro RasPi
}
else if (digitalRead(7) == 1 && digitalRead(12) == 1) // pokud RasPi jeste nenabehlo
{
analogWrite(4, 254); // cervena LED = 1
analogWrite(5, 254); // zelena LED = 1
analogWrite(6, 255); // modra LED = 0
}
else if (digitalRead(7) == 0 && digitalRead(12) == 0) // RasPi bezi a drzi si napajeni
{
analogWrite(6, 254); // modra LED = 1
analogWrite(5, 255); // zelena LED = 0
analogWrite(4, 255); // cervena LED = 0
}
else if (digitalRead(7) == 1 && digitalRead(12) == 0) // arduino v pohotovosti
{
analogWrite(4, 254); // cervena LED = 1
analogWrite(5, 255); // zelena LED = 0
analogWrite(6, 255); // modra LED = 0
}
// **ODCHYT TLACITKA Z DALKOVEHO OVLADACE**
if (irrecv.decode(&results)) {
int zelena = results.value;
if ((zelena == 13033) && ((digitalRead(7) == 1) && (digitalRead(12) == 0))) // pokud je stisknuto pozadovane tlacitko a zatim neprobehla akce spusteni RasPi
{
digitalWrite(12, HIGH); // sepni napajeni pro RasPi
analogWrite(5, 255); // zelena LED = 0
analogWrite(6, 255); // modra LED = 0
jas = 256; // zacatek bliknuti s cervenou LED
for(poc=0;poc<256;poc++){
jas = jas – 1;
analogWrite(4, jas);
delay(10);
}
for(poc=0;poc<256;poc++){
analogWrite(4, poc);
delay(10);
} // konec bliknuti s cervenou LED
}
Serial.println(zelena, HEX); // prepis HEX na seriovy monitor
irrecv.resume(); // Cti dalsi hodnotu
}
if (digitalRead(3) == 0) // je-li tlacitko stisknuto
{
if (MinulyStav == 0 && millis() – CasZmeny > PRODLEVA) // neni-li nastaven priznak
{ // tlacitko stisknuto a uplynul-li vetsi cas od zmeny stavu tlacitka nez je mez (50ms)
MinulyStav = 1; // nastav priznak tlacitko stisknuto
}
}
else // neni-li stisknuto tlacitko
{
CasZmeny = millis(); // zapamatuj si posledni cas, kdy bylo nestisknuto
MinulyStav = 0; // nuluj priznak, tlacitko stisknuto
}
}Zbyšek Voda
ÚčastníkPokud chcete mít přehled o poloze serva, musíte mít servo, které je na to přizpůsobené a má na sobě například nějaký přídavný senzor. Třeba na tomhle servu: https://www.adafruit.com/product/1404 je vyvedený potenciometr, takže měřením analogové hodnoty máte přehled, kam až servo dojelo.
I kdyby šla informace o nastaveném úhlu z desky SSC32 získat zpátky (což myslím nejde), bude tato informace stejně irelevantní, jako kdybyste si jenom pamatoval hodnotu, kterou jste na servu nastavil – neměl byste reálný feedback o poloze serva, ale jenom domnělou hodnotu, kterou si SSC32 myslí, že servo má nastaveno.
honzakono
ÚčastníkAno, kdyz si nekam nastavim servo, tak vim kde je :))))
… tedy pokud tam skutecne doputovalo, a to je prave ten problem, co potrebuji resit.
jednim z tech duvodu proc bych potreboval zjistovat pozice servo motoru je kontrola/debugovani.
Cteni pozice serva primo z Arduino boardu je mozne a celkem snadne.
Predpokladam, ze to same by melo byt mozne i z SSC32, jinak by byl tenhle servo kontroler
dost retardovany, cemuz se mi nechce verit, uvazime-le, ze se jedna o jeden z nejpouzivanejsich.Aleš
ÚčastníkŘekl bych, že to nejde. Ale podle mne, když si někam nastavíte servo, tak ho tam máte, a víte, kam jste si ho nastavil. Nebo ne?
Dawe
ÚčastníkZdravim,
osobne bych z jednoduchosti veci nacvakl do rolety dve kovove kolecka. Jedno pro horni polohu na spodni konec rolety a jedno pro spodni polohu tak aby pri vysunute rolete bylo tesne pod zasobnikem a pouzil bych dva bezkontakni snimace ktere bych umistil primo pod zasobnik rolety vedle sebe.
Pozor kovove kolecka nesmi byt na rolete primo pod sebou, ale vzajemne posunute do strany.
Snad sem svym napadem trochu pomohl.blackshock
ÚčastníkDíky za info, že na eBay je taky poštovné z Číny zdarma. Myslel jsem, že to je jen pro čínské eshopy.
Nicméně si dovolím ještě malou poznámku k té platební kartě. Aliexpress, resp. Alibaba.com, ktera jej vlastni, ma 2x tak velky obrat nez eBay, takze obava, ze by cloveku vyluxovali ucet nebo si kazili jmeno podvody, asi fakt nehrozi :-). Takze ja bych rekl, ze je uplne fuk, jestli clovek nakoupi na ebay nebo ali…
Aleš
ÚčastníkNa AliExpressu nenakupuju, protože se mi nechce zadávat bůhvíkomu údaje o mé platební kartě. Na eBay se to dá koupit za stejnou cenu, většinou ještě levněji než na Ali. Poštovné je také na eBay většinou zdarma (čínskou poštu dotuje stát, proto si mohou dovolit prodávat za 1$ včetně poštovného). Když něco koupeného na eBay nepřijde, nebo přijde nekvalitní/poškozené, tak číňan bez řečí pošle peníze zpět. Když se cuká, tak peníze vrátí PayPal.
blackshock
ÚčastníkMyslím, že základní výhoda AliExpressu je poštovný zdarma. Nebo je to na eBay tak levné, že se to vyplatí i s poštovným? A díky nulovému poštovnému nakupuju u různých obchodníků (nemusím se snažit nakumulovat co nejvíc do jedné zásilky), takže chodí jednotlivé součástky za pár dolarů a vyhnu se tak placení cla a DPH.
Docela by mě zajímalo, jestli někomu přišlo z AliExpressu něco nefunkčního. Já jsem na něm nakoupil vyšší desítky komponent a zatím vše v pohodě. A co se týká toho, že nic nepošlou, tak mě dorazilo vždycky vše. Kámošovi cosi nepřišlo, ale bez potíží mu vrátili peníze.
Jinak jsem ještě nakupoval na DX, ale je zbytečně drahé.
Zbyšek Voda
ÚčastníkZbyšek Voda
ÚčastníkTo vypadá moc pěkně 🙂
Neplánujete i vytvořit třeba různé „tachometry“ a podobné?
Pak by se mohl z grafů a „tachometrů“ poskládat docela pěkný dashboard.Korcagin
ÚčastníkMám dotaz. Jde číst pomocí arduina data z venkovního snimače domácí meteostanice a pak je nějakou formou zpracovávat?
OK1RR
ÚčastníkNemyslím si, že by AliExpress byl kdovíjak ideální. Na eBay lze najít Arduina často levněji (jak který typ a jak kde), ale hlavně při nákupu přes eBay máte přímo od nich záruku. Pokud nakupujete od Číňana přímo, jste jim vydání na milost a když vám pošlou šunt nebo třeba taky nic, pomoci se nedovoláte. To se vám při nákupech přes eBay nestane.
BTW mám špatnou zkušenost s Banggood a vynikající s eshopy na eBay.
BlindP
ÚčastníkUpdate!
Přidal jsem čárový graf, pole zobrazující aktualní hodnotu + možnost přidání min a max hodnoty stupnice.
Nový graf vytvoříte:
Graf teplota;
nebo pro plný:GrafPlny teplota;
dále
teplota = new Graf(pozice x, pozice y, velikost x, velikost y, barva, min, max);
Pokud zadáte pro max nulu, maximální hodnota se přizpůsobí.překreslení grafu zůstalo stejné:
teplota.kresli(hodnota typu float);
B.
Attachments:
Bojkas
ÚčastníkTak to dělá pořád to stejné, jen s tím, že mi nevím proč propisuje jen polovina displaye. Pokud to vrátím na ten původní kód, tak je to zase v pořádku.
Bojkas
ÚčastníkPS: stačí, když ji deklaruji?
int rpm;
rpm = (rps*60);
lcd.clear();
lcd.print(„Vitr: „);
lcd.print(0.3142*rpm*0.06);
lcd.print(“ km/h“);Bojkas
ÚčastníkAhoj,
ach tak, to mě nenapadlo.
Aleš: zdá se, že závorek je tam dost, vzorec jsem upravil, ale píše mi to, že „rmp“ není deklarované.
exit status 1
‚rpm‘ was not declared in this scope
http://fii.cz/zxfbym// Compute the RPM of a simple DC Motor using a photomicrosensor(PMS) #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define PMS_PIN A0 // Pin for signal from Photomicrosensor #define LED_PIN 13 //Using Arduino's Internal LED; just as an indicator boolean counted=false; int t1=0,t2=0; int hits=0; int rps=0; LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); void setup(){ pinMode(PMS_PIN, INPUT); pinMode(LED_PIN, OUTPUT); lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(16, 2); lcd.clear(); } void loop(){ t2 = millis(); if(t2 >= (t1 + 1000)){ rps = hits; hits = 0; t1=t2; } if(digitalRead(PMS_PIN) == HIGH){ if(!counted){ counted = true; hits++; } } else { counted = false; } digitalWrite(LED_PIN, digitalRead(PMS_PIN)); rpm = (rps*60); lcd.clear(); lcd.print("Vitr: "); lcd.print(0.3142*rpm*0.06); lcd.print(" km/h"); }
BlindP
ÚčastníkAhoj, protože 1*60*0.3142*0.06 = 1.13112 (jeden puls)
B.
Bojkas
ÚčastníkVečer zkusím, děkuji.
Každopádně bych rád znal důvod, abych zjistil, kde mohla být případně chyba?
Aleš
ÚčastníkZkus to prohodit takto:
if(digitalRead(PMS_PIN) == HIGH){
if(!counted){
counted = true;
hits++;
}
} else {
counted = false;
}digitalWrite(LED_PIN, digitalRead(PMS_PIN));
}rpm = (rps*60);
lcd.clear();
lcd.print(„Vitr: „);
lcd.print(0.3142*rpm*0.06);
lcd.print(“ km/h“);
}(závorky jsem nepočítal)
Bojkas
ÚčastníkZatím je to simulované na kolo o průměru 0,1m tzn obvod je 0,31m. zkoušel jsem to přerušovat papírem, zatím jsem na začátku.
Aleš
ÚčastníkA ta IR brána snímá otáčky čeho?
Bojkas
ÚčastníkAhoj,
tak jsem nakonec použil IR bránu, která měří otáčky.
Jaký vzorec použít na přepočet z otáček na km/h? Zkusil jsem do kódu zakomponovat „v = 2πr × RPM × (60/1000) km/hr“, nevím proč, ale měří to v násobcích 1,13. :-/
Celý kód:
// Compute the RPM of a simple DC Motor using a photomicrosensor(PMS) #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define PMS_PIN A0 // Pin for signal from Photomicrosensor #define LED_PIN 13 //Using Arduino's Internal LED; just as an indicator boolean counted=false; int t1=0,t2=0; int hits=0; int rps=0; LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); void setup(){ pinMode(PMS_PIN, INPUT); pinMode(LED_PIN, OUTPUT); lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(16, 2); lcd.clear(); } void loop(){ t2 = millis(); if(t2 >= (t1 + 1000)){ rps = hits; hits = 0; t1=t2; rpm = (rps*60); lcd.clear(); lcd.print("Vitr: "); lcd.print(0.3142*rpm*0.06); lcd.print(" km/h"); } if(digitalRead(PMS_PIN) == HIGH){ if(!counted){ counted = true; hits++; } } else { counted = false; } digitalWrite(LED_PIN, digitalRead(PMS_PIN)); }
darira
ÚčastníkLed pásky jsem ovládal přes BD139 na univerzálním PCB jak píše Vojta. Tady je nějaký popis, v textu je i odkaz na schéma zapojení pro řízení RGB LED pásku.
http://www.josefnav.cz/RGB_led_pasek.html
Jinak pokud sháníš něco hotového, tak zkus IRF520 modul. Měl by to asi také zvládnout.
http://www.ebay.com/itm/New-MOSFET-Button-IRF520-MOSFET-Driver-Module-for-Raspberry-pi-Arduino-ARM-/221890885367?hash=item33a9ba36f7:g:AeEAAOSw9r1V~fW2
Já ho nekupoval, ale spájel jsem si ho na malý tišťák pro řízení otáček PC ventilátoru.Onygzz
ÚčastníkUltrazvukovej senzor HC-SR04. Podle mě ideální 😉
Vojtěch Vosáhlo
ÚčastníkJá jsem dělal s tip120 a většinou vše zapájím na ňáký univerzální pcb. Testuju to normálně na breadboardu na malejch proudech a pak to postavim. Myslím že třeba HW kitchen něco postaveného už má, a nebo z číny…
Nasranek
Účastníkhttp://www.ebay.com/itm/181922180678?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Máš recht 5 kousků stojí cca 70 KČ + baterky, ale na ebay to při větším množství 5 a více vychází na cca 10 kč za kus (baterky jsou stejné typy které se používají do základních desek PC).
Takže za cca 20-30 KČ máš modul reálného času, osobně mi to připadá jako volovina do meteo stanice real čas, ale proč ne.
A ano klony nejsou až tak špatné, ale je to kousek od kousku – čti recenze prodejce a uvidíš.posjirka
ÚčastníkDCF je zbytečně drahé. Jedno z řešení je RTC modul postavený na DS1203 nebo 1207. Nejpřesnější je DS3231. Jednorázově jej nastavíš a pak používáš. Nicmémě pro začátek bych to vynechal …
ivosisko
ÚčastníkNyní si dovolím rozdělit svoji odpověď/dotaz rozdělit do tří, na sobě nezávislých, bloků:
A. nepodstatné – poznámka k poslední větě – mi každá druhá zpráva ztroskotá na „vypršení časového limitu“ :), takže někdy se kuriozně stane, že odpověď mám dříve, než odeslanou otázku 😀 (neznám způsob přenosu, ale je to tak)
B. samotné řešení mého „problému“ – s tím nastavováním (tlačítkováním) příliš nepočítám – předpokládám, že když se jednotlivé moduly s jakousí rozumnou mírou přesnosti zkalibrují, tak tomu budu „věřit“. Asi zde také záleží na volbě čidel rozumné kvality (pokud to jde – všiml jsem si, že např. na Aukru se nabízí více „modelů“ jednotlivých čidel (teplotní, vlhkostní, tlakové….)). Asi by nějaká tlačítková (rouměj nastavovací) náročnost vznikla v případě, že bych tam chtěl zakomponovat čas. Nevím, zda existují nějaké DCF moduly (když to je víceméně evropská záležitost). Ale jak jsem už psal o několik odpovědí výše – pro potřeby osvojení si Arduina začnu s UNO a pokud bude později třeba (mám rád rezervy) a moje nadšení mi vydrží, tak upgraduji na MEGU nebo něco ještě zajímavějšího 🙂
C. předpokládám, že je zde nějaký admin – dala by se tato diskuze, která se v jisté fázi přestala týkat dotazu Klon ano/ne, přesunout do vlákna, které bych třeba pro tyto mé účely vytvořil (nebo někdo s právy)?
posjirka
Účastníkještě je obrovská otázka : kolik toho budeš během používání upravovat/nastavovat.
Mám na mysli tlačítka a nějáké menu. Pokud chceš udělat jednoobrazovkový přehled, kde budou pouze zobrazené informace … pak UNO by mělo stačit. nejhorší jsou takový věci jako nastavení a procházení položek. To pak zabírá zbytečně paměť a místo.VE výsledku MEGA je universální řešení, UNO je super pro začátek a za pár korun.
Jinak ptal ses proč jsem doporučoval to UNO z ebaye. Protože bylo hezky pospáno co obsahuje. Popis produktu Arduino compatibility je nic neříkající. Jestli ses na to trochu díval tak Arduino je složenina 3 koponent:
1. zdroj
2. převodník USB/UART
3. mikroprocesor ATMEL …Právě v tom převodníku je občas problém. převodník muže být buď další Atmel Atmerga (16U2, 8U2, …) a je to v pohodě. Občas se používá CP120x ten je taky v pohodě co se týká připojení k PC ale je extrémně citlivý na statickou elektřinu a někdy nemá vyvedený auto reset před nahráním programu. CH340g je teď v poslední době nejčastěji používaný na činských klonech. Mám jej taky, ale musíš si nejdřín najít a instalovat knihovnu a pak doufat 🙂 . Ještě se používal něco xx232 ale od něj se postupně ustupje.
Ke konci … ta dlouhá prodleva mezi odesílání zprávy je u všech. Mě to dokonce někdy spadne na gateway time out.
-
AutorPříspěvky