Close

posjirka

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 451. až 480. (celkem z 481)
  • Autor
    Příspěvky
  • odpověď na: Řídící jednotka pro peletový kotel #6063
    posjirka
    Účastník

    přímo pro toto je arduino dělané. Jen pozor na to co to má vlastně dělat. Program je jen tak chytrý jak ojeho tvůrce. Nejdřív si nakresli smyčku jak to má fungovat a zvýrazni si poruchové stavy. Mám pocit že ta kotel mají něco aby se zastavil šroub když se kousne peletka., pro dálkové ovládání start/stop si vymez 2 digitální vstupy na nepotenciálové kontakty a jedno rele na stav poruchy. Hlavně ten princip udělej do detailu a pamatuj že není vhodné použít delay, protože potřebuješ reakce na poruchy a né čekat 14 min aby zareagovala porucha…

    posjirka
    Účastník

    zní to dobře, nemáš strach, že se ten ultrazvuk zanese uhelným prachem?

    odpověď na: Řídící jednotka pro peletový kotel #6058
    posjirka
    Účastník

    přímo pro toto je arduino dělané. Jen pozor na to co to má vlastně dělat. Program je jen tak chytrý jak ojeho tvůrce. Nejdřív si nakresli smyčku jak to má fungovat a zvýrazni si poruchové stavy. Mám pocit že ta kotel mají něco aby se zastavil šroub když se kousne peletka., pro dálkové ovládání start/stop si vymez 2 digitální vstupy na nepotenciálové kontakty a jedno rele na stav poruchy. Hlavě ten princip udělej do detailu a pamatuj že není vhodné použít delay, protože potřebuješ reakce na poruchy a né čekat 14 min aby zareagovala porucha…

    odpověď na: Ukazatel zařazené rychlosti na motorku #6044
    posjirka
    Účastník

    navrhoval bych toto řešení. Snad je to dostatečně popsáno. Odzkoušel jsem to na simulátoru a mělo by to fungovat:

    const int plus = 11; //tlačítko plus proti zemi
    const int minus = 12; // tlačítko mínus proti zemi
    int LED[8] = {2, 3, 4, 5, 6, 7, 8, 9}; // pole pozice/pinů jednotlivých LED diod
    int pozice = 0; // pozice rozsvícené LED diody resp. číslo vyvodu v poli
    int i = 0; // pomocna promenna pro pocitadlo
    unsigned long lastTime = 0; // strojní čas od posledního stisku tlačítka - libovolneho
    unsigned long prodleva = 250; // kolik ms nebude reagovat na další stisk tlačítka 
    void setup()
    {
    	pinMode(plus, INPUT_PULLUP); // nastav jako vstup a aktivuj vnitrni pull up odpor
    	pinMode(minus, INPUT_PULLUP); // nastav jako vstup a aktivuj vnitrni pull up odpor
    	pinMode(LED[0], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[1], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[2], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[3], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[4], OUTPUT); // nastavení pinu jako výstup pro LED
    	pinMode(LED[5], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[6], OUTPUT); // nastavení pinu jako výstup pro LED 
    	pinMode(LED[7], OUTPUT); // nastavení pinu jako výstup pro LED  
    	pozice = 0; // prvotni nastaveni pozice rozsvicene LED diody
    }
    
    void loop()
    {
    	for (i=0; i <= 7; i++){	// smyčka která projede všech 8 pozic pole LED diod
    		if (i == pozice) 
    		{
    			digitalWrite(LED[i], HIGH); // když je i rovno pozici tak rozsvit LED diodu			
    		}
    		else
    		{
    			digitalWrite(LED[i], LOW); // jinak zhasni LED diodu
    		}
    	} 
    	if(lastTime + prodleva < millis()) {	// když aktuální strojový čas mínus prodleva je větší než čas posledního stisku tlačítka ...
    		if(digitalRead(minus) == LOW) {	// když je stisknuto tlačítko minus
    			if (pozice > 0) {	// a pozice je větší než 0
    				pozice --; // odečti z pozice číslo 1
    				lastTime = millis(); // zaznamenej aktuální strojový čas
    			}
    		}
    		if(digitalRead(plus) == LOW) {	// když je stisknuto tlačítko plus
    			if (pozice < 7) {	// a pozice je větší než 0
    				pozice ++; // přičti z pozice číslo 1
    				lastTime = millis(); // zaznamenej aktuální strojový čas
    			}
    		}
    	}
    	
    }
    odpověď na: Ukazatel zařazené rychlosti na motorku #6042
    posjirka
    Účastník

    pro „pepa48“ ten kod od Zbyškanení úplný a při zkopírování do Arduino IDE ti nepůjde. Šlo o ideové řešení … .

    odpověď na: Ukazatel zařazené rychlosti na motorku #6041
    posjirka
    Účastník

    hezké řešení. mě ale v takto ultrakrátkých smyčkách občas zahaprovalo (zákmity na tlačítku) a načetlo třeba 2-3 pozice navíc. Od té doby jsem přešel na časové prodlevy mezi stisky tlačítka. Variantou je ještě paralelní kapacita na tlačítko pro kompenzaci zákmitů.

    odpověď na: 3.6 TFT TouchScreen MCUFRIEND na MEGA #6029
    posjirka
    Účastník

    Tady je otázka kde je problém. Opravdu zvláštní je, že to FAKT MUSÍM PSÁT V KAŽDÉM DOTAZU. BEZ KODU TI NIKDO NEPOMŮŽE.
    To že ti problikává barva nemusí být ovladači. Pokud si rozběhl paint tak ovladače jsou v pořádku. Spší když máš knihovnu nastavenou defaultně pro Arduino MEGA tak ho musíš upravit pro UNO, protože pravděpodobně bude používat ty pinu navíc co jsou v 2 řadém kontektoru napravo. Proto se nemusí nastavovat jaký pin co dělá. Pravděpodobně sisi popletl čísla analogových vstupů. Proto ti nejde kalibrace.
    S tím blikáním si myslím, že jsi dal do smyčky LOOP neustálé překreslování LCD a proto ti pod vrchní barvou problikává pozadí.

    Jak jsem psal na začátku … BEZ KODU TO NEJDE.

    odpověď na: DS18B20 #6012
    posjirka
    Účastník

    omlouvat se nemusíš, jsme jen lidi. Na nefunkčnost můžeme zkusit tradiční postup:
    1, překotroluj zapojení, případně rozeber a znovu postav (studeňáky, vypadlý drát,..)
    2, vyzkoušej jednoduchý program, který ti LED diodou bude signalizovat jaký je stav na tom pinu

    // kontrola stavu pinu
    // by JP 2016
    // na vystup s LED diodou zapisuje stav z kontrolovaného pinu
     
    int kontrolovanyPin = 8; // sem dej 49slo pinu, ktery potřebuješ ověřit 
    int LED = 13; // pin s LED diodou - pou6ij tu na desce
    
    void setup() {
    pinMode(kontrolovanyPin, INPUT); // nastaven9 pinu najako vstup
      pinMode(LED, OUTPUT); // nasteven9 pinu 13 na vystup - LED dioda na desce 
    }
    
    void loop() {
      digitalWrite(LED, digitalRead(kontrolovanyPin)); // zapis na pins S LED diodaou stav kontrolovaneho vstupu
    }

    3, zlus jiné čidlo nebo jiný pin (jedno je možná špatné)

    odpověď na: DS18B20 #6010
    posjirka
    Účastník

    chlape obávám se , že tvuj popis nené až tak úplný. Ty jsi totoiž neodpojil pin z DS18B20, ale opojil si zároveň i Pull-up odpor že? To ti totiž udělá přesně to co popisuješ. Celá věda s vyhodonocením chyby na DS18B20 je ta že, když odpojiž pin Arduina od všeho vypíše ti 0,00 st.C. je to proto, že mu nepřijde ani 1 bit log.1.
    kaž připojíš čidlo správně máš tam pemanentně log.1 a čidlo přes otevřený kolektor přizemńuje celou linku (log.0) počet log.0/log.1 ti vlastně dává výslednou teplotu. To je vpříkald kladných teplot. Záporné teploty fungují tak, že čidlo zvládne max. 126 st.C a cokoliv je nad je vlastně záporná teplota. Takže data 130 st.C = skutečně -4st.C. To vše končí v -127stC což je úplně mimo roszah čidla (max. -50st.C) a to je vlastně ona hláška „Error“. Když necháš pull-up odpor připojený bez čidla, dostane arduino samé log.1 takže b11111111 což v překladu do dec.soustavy = 255 a při převodu do zápodných hodnot = -127st.C.

    To jsem se rozepsal. No ve výsledku: odpoji čidlo ale pull-up odpor tam nech a vše bude v pořádku.

    odpověď na: Práce s pamětí #5969
    posjirka
    Účastník

    1. obávám se , že takto ti nikdo nepomůže.
    Je zvláštní , že to musím psát v každém vlákně, ale BEZ KODU TO PROSTĚ NEJDE.
    dej sem kod a můžeme ti poradit jak třeba ušetřit pár bytů.
    Ani ti pak nemůžeme poradit co ti nefunguje když nevíme CO VLASTNĚ DĚLÁŠ.
    Ušetření místa v SRAM se dá obecně docílit tím, že např:
    – nahradíš neměnné promenné (číslo pinu ledky apod) za konstanty
    – né všechny proměnné budou tyu integer ale máme třeba boolean, byte atd.
    záměnnou integer za byte ušetříš 1 byte (samozřejmě pokud potřebuješ hodnoty 0-255).
    – použitím funkcí a metod nemusíš některé kusy programu opakovat.

    2.Výsledný kod v assembleru najdeš tak, že si nastavíš:
    File – Preferences – Show verbose output during zatrhneš compilation.
    Tím se ti bude vypisovat průběh kompilace. Když se podíváš do výpisu tak jsou tam soubory *.eep a *.elf to jsou ty co hledáš.

    odpověď na: Ukazatel zařazené rychlosti na motorku #5967
    posjirka
    Účastník

    Tady vidím problém … jak mu řeknu, že jdu ze „2“ na „3“ a né na „1“, když je to ten samý směr?

    N 2 4
    \ / \ / \
    1 3 5

    tak jednoduše to asi nepůjde. Napadají mě 2 varianty:
    1, je třeba ještě dodatečná informace o směru (3-tí kontakt)
    2, využít jiného způsobu třebas i nepřímého měření jako třeba měření otáček motoru vs otáčky kola a podel poměru +/- vypočítat jaký byl použit převod. Ovšem fungovalo by to pouze za jízdy. Nevím motory a převodovky jsou pro mě věcí neznámou. Jsem spíš na elektro…

    odpověď na: Ukazatel zařazené rychlosti na motorku #5955
    posjirka
    Účastník

    Takže jestli to chápu dobře:
    pojmenujemme si LED diody od „0“ kdy „0“ = N, „1“ = 1, … „5“ = 5
    Po startu se rozsvítí LED0 a níž to nepůjde
    tlačítky „+“ a „-“ chceš posouvat LED nahoru/dolu až po LED5.
    Ta bude poslední a dál to nepůjde.
    Chápu to dobře?

    Je třeba si ještě uvědomit, že reakce na stisk tlačítka nemusí být ta správná cesta.
    Na tlačítku jsou při stisku zákmity a může se stát, že při stisku může tlačítko „vygenerovat“ řadu impulzů.
    Řesší se to time-out-em, kdy po stisku mikročip nereaguje po nastavenou dobu a pak zase čeká.
    Je třeba citlivě a z rozmyslem nastavit pak tento čas, protože při rychlém přepnutí nebude reagovat.

    odpověď na: IMIM120618001 vstupni svorky #5937
    posjirka
    Účastník

    Předpokládám, že :
    G je GND neboli zem
    + je kladný potenciál napájecího napětí (v tomto případe asi 3,3V)
    S je zkratka pro signal.

    Stačilo by si vzít multimetr a bylo by jasno …

    odpověď na: Arduino, 433 mhz , servo #5891
    posjirka
    Účastník

    ale 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 …

    odpověď na: připojení 1F motoru 600W #5890
    posjirka
    Účastník

    to 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-switch

    jednoduché, 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

    posjirka
    Účastník

    jak 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/?ALLSTEPS

    odpověď na: připojení 1F motoru 600W #5878
    posjirka
    Účastník

    Doporučuji podívat se sem:
    http://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/?ALLSTEPS

    Samotný 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.

    odpověď na: pomoc s projektem: použití "random" #5846
    posjirka
    Účastník

    díky

    posjirka
    Účastník

    trochu 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
    }
    odpověď na: FRID-RC522, ověření + led dioda #5840
    posjirka
    Účastník

    omlouvat 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íky

    odpověď na: INPUT_PULLUP #5801
    posjirka
    Účastník

    jojo 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)

    odpověď na: pomoc s projektem: použití "random" #5800
    posjirka
    Účastník

    obrá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….

    posjirka
    Účastník

    nechá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); // pauya

    odpověď na: INPUT_PULLUP #5795
    posjirka
    Účastník

    obávám se že ani to není přesné. Hodnota interního pull up drporu u AVR kolísá mezi 10 a 50 kOhm.

    odpověď na: pomoc s projektem: použití "random" #5794
    posjirka
    Účastník

    tak 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????????????

    odpověď na: pomoc s projektem: použití "random" #5783
    posjirka
    Účastník

    tlacitko_led_1-pin
    tak jsem to dal na uložiště blogu….

    Attachments:
    odpověď na: FRID-RC522, ověření + led dioda #5782
    posjirka
    Účastník

    s 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ík

    já 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.

    odpověď na: LED pásek + ultrasonic sensorem HC-SR04 #5777
    posjirka
    Účastník

    Vž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 TIP120

    void 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);
    }

    odpověď na: pomoc s projektem: použití "random" #5776
    posjirka
    Účastník

    Samozř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.

Aktuálně je na stránce zobrazeno 30 příspěvků - 451. až 480. (celkem z 481)