Close

christinesharkey

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 1,651. až 1,680. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: Nahrání bootloaderu do atmega328 #8276
    bot
    Účastník

    Propojil jsem piny, ale když připojím programátor do usb s propojenými piny (nesvítí led a OS nerozezná zařízení) v avrdudess při detectu vyskočí toto:
    „Unable to detect MCU

    avrdude.exe: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de‘ product=’USBasp‘

    avrdude.exe done. Thank you.“

    Když piny propojím, až po připojení do USB. Tak výsledek detectu je:
    „Unable to detect MCU

    avrdude.exe: set SCK frequency to 1500000 Hz
    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: error: programm enable: target doesn’t answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude.exe done. Thank you.“

    odpověď na: Nahrání bootloaderu do atmega328 #8275
    Vojtěch Vosáhlo
    Účastník

    Ok, pokud tyhle dva piny propojíte. Dejte tam něco co se pak dá jednoduše odstranit. S propojenými piny to zkuste připojit do pc, zapnout avrdudess, dát programmer jako usbasp a u chipu detect. I když to v žádném návodu není popsáno, mělo by to najít tu megu 8. Opět to zkuste a budem pokračovat.

    odpověď na: Nahrání bootloaderu do atmega328 #8274
    bot
    Účastník

    Ano máte pravdu. Je tam atmega8a, takže jeden neosazený pin je reset(PIN29) a druhý PB2(PIN14).

    odpověď na: Nahrání bootloaderu do atmega328 #8273
    Vojtěch Vosáhlo
    Účastník

    Předpokládal bych že ten náš ztracený jumper jsou ty 2 neosazené piny na spodní straně desky. Zkuste za pomoci pinoutu toho procesoru co je osazený přeměřit ty dva piny. Jeden by měl jít na reset procesoru a druhý na PB2. Můžete napsat progress 😉

    odpověď na: Nahrání bootloaderu do atmega328 #8272
    bot
    Účastník

    Fotky jsou zde: https://postimg.org/image/bq7cnr073/ , https://postimg.org/image/9mwxg30e7/

    Kupoval jsem ho z ebay: http://www.ebay.com/itm/130682846209?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

    Mohl by jste mi prosím poradit ohledně updateu?

    Návody, které jsem našel vyžadovali druhý programátor a bojím se, abych si ten oc mám nějak nezničil.

    Děkuji.

    odpověď na: Nahrání bootloaderu do atmega328 #8271
    Vojtěch Vosáhlo
    Účastník

    Nějaký odkaz na to co jste koupil, nebo obrázek? Já neznám žádné nové USBasp a vždy jsem firmware musel updatovat. Ale jde aktualizovat přes usb, není potřeba žádný programátor.

    odpověď na: Nahrání bootloaderu do atmega328 #8267
    bot
    Účastník

    Tak už mi přišel programátor USBasp.

    Když jsem zkoušel vypálit bootloader, hlásí to chybu: „avrdude: warning: cannot set sck period. please check for usbasp firmware update.“

    Co jsem tak četl měl by to být problém u starších USBasp programátoru, kterými nešli programovat čipy, běžící o více než 1/2 clock samotného USBasp. Řešením bylo aktualizovat firmware za pomocí jiného programátoru a přepnutím jumperu. Dále jsem se dočetl, že nové USBasp si detekují clock sami a už není nutný update. Což by vysvětlovalo proč na USBasp žádný jumpery nemám.

    Nevíte kde může být problém?

    Děkuji

    BlindP
    Účastník

    Taky přihodím 🙂

    # define RELE1_PIN 5
    # define RELE2_PIN 6
    # define TLAC1_PIN 2
    # define TLAC2_PIN 3
    
    unsigned long pre_mill = 0;
    const long interval = 30000;
    
    void setup() {
    	Serial.begin(9600);
    	pinMode(TLAC1_PIN, INPUT_PULLUP);
    	pinMode(TLAC2_PIN, INPUT_PULLUP);
    	pinMode(RELE1_PIN, OUTPUT);
    	pinMode(RELE2_PIN, OUTPUT);
    	digitalWrite(RELE1_PIN, HIGH);
    	digitalWrite(RELE2_PIN, HIGH);
    }
    
    void loop() {
    	if(digitalRead(TLAC1_PIN) == LOW) {
    		pre_mill = millis();
    		digitalWrite(RELE2_PIN, HIGH);
    		digitalWrite(RELE1_PIN, LOW);
    		//Serial.println("Vypinam rele c.2, zapinam rele c. 1");
    	}
    	if(digitalRead(TLAC2_PIN) == LOW) {
    		pre_mill = millis();
    		digitalWrite(RELE1_PIN, HIGH);
    		digitalWrite(RELE2_PIN, LOW);
    		//Serial.println("Vypinam rele c.1, zapinam rele c. 2");
    	}
    	if(millis() - pre_mill >= interval) {
    		digitalWrite(RELE1_PIN, HIGH);
    		digitalWrite(RELE2_PIN, HIGH);
    		//Serial.println("Cas vyprsel vypinam obe dve rele!!!");
        
    	}
    }
    
    posjirka
    Účastník

    není zač ….

    milano
    Účastník

    Děkuji moc. Když na to takhle koukám, tak mi to je jasné, ale sám bych to asi zatím nenapsal. Jenom musím přehodit obráceně spínání relé. Mám tam ty čínský dvojrelé a ty jsou ovládané obráceně. To už je ale prkotina. Ještě jenou moc děkuji 🙂

    posjirka
    Účastník

    zkus jako zaklad toto:

    // program pro ovladani 2 rele pomoci 2 tlacitek
    // v01 by JP 9/2016
    // program ovlada 2 rele s tím, ze:
    // - stiskem tlacitka 1 se na nastavenou dobu sepne rele 1
    // - stiskem tlacitka 2 se na nastavenou dobu sepne rele 2
    // - kdyz behem sepnuti rele 1 stisknu tlacitko 2 tak se rele 1 vypne a sepne se rele 2
    // - kdyz behem sepnuti rele 2 stisknu tlacitko 1 tak se rele 2 vypne a sepne se rele 1
    
    int RELE_1 = 10; // pin pro  rele 1
    int RELE_2 = 11; // pin pro rele 2
    int TLACITKO_1 = 4; // pin pro tlacitko 1
    int TLACITKO_2 = 3; // pin pro tlacitko 2
    int ZAPNI_RELE_1 = 0; // 0 - vypnuto
    int ZAPNI_RELE_2 = 0; // 0 - vypnuto
    unsigned long CAS_VYPNUTI_RELE_1 = 0; // kdy ma rele 1 vypnout (nastavuje se v době sepnuti tlacitka)
    unsigned long CAS_VYPNUTI_RELE_2 = 0; // kdy ma rele 2 vypnout (nastavuje se v době sepnuti tlacitka)
    unsigned long DELKA_SEPNUTI_RELE = 3000; // jak dlouho maji byt rele sepnute (v milisekundach )
    
    void setup()
    {
    	pinMode(RELE_1, OUTPUT); // nastaveni pinu jako vystup
    	pinMode(RELE_2, OUTPUT); // nastaveni pinu jako vystup
    	pinMode(TLACITKO_1, INPUT_PULLUP);  // nastaveni pinu jako vstup s interním pullup odporem
    	pinMode(TLACITKO_2, INPUT_PULLUP);  // nastaveni pinu jako vstup s interním pullup odporem
    }
    
    void loop()
    {
    	// ovladani tlacitka 1
    	if (digitalRead(TLACITKO_1) == 0 ){	// když je stisknuto tlačtíko 1 
    		CAS_VYPNUTI_RELE_1 = millis() + DELKA_SEPNUTI_RELE;
    		ZAPNI_RELE_1 = 1; // povoleni k sepnuti rele 1
    		ZAPNI_RELE_2 = 0; // preventivne zakaz zapnuti rele 2
    	}
    	if (ZAPNI_RELE_1 == 1) {	// rele 1 ma byt sepnute
    		if (millis() > CAS_VYPNUTI_RELE_1) {	// uz pretekl cas zapnuti rele 1
    			ZAPNI_RELE_1 = 0;		// zrus pozadavek na zapnuti rele 1
    			digitalWrite(RELE_1, LOW); // vypni rele 1
    		} 
    		else {
    			digitalWrite(RELE_1, HIGH); // zapni rele 1
    		}
    		
    	} 
    	else {
    		digitalWrite(RELE_1, LOW); // vypni rele 1
    	}
    	
    	// ovladani tlacitka 2
    	if (digitalRead(TLACITKO_2) == 0 ){	// když je stisknuto tlačtíko 2 
    		CAS_VYPNUTI_RELE_2 = millis() + DELKA_SEPNUTI_RELE;
    		ZAPNI_RELE_2 = 1; // povoleni k sepnuti rele 2
    		ZAPNI_RELE_1 = 0; // preventivne zakaz zapnuti rele 1
    	}
    	if (ZAPNI_RELE_2 == 1) {	// rele 2 ma byt sepnute
    		if (millis() > CAS_VYPNUTI_RELE_2) {	// uz pretekl cas zapnuti rele 2
    			ZAPNI_RELE_2 = 0;		// zrus pozadavek na zapnuti rele 2
    			digitalWrite(RELE_2, LOW); // vypni rele 2
    		} 
    		else {
    			digitalWrite(RELE_2, HIGH); // zapni rele 2
    		}
    		
    	} 
    	else {
    		digitalWrite(RELE_2, LOW); // vypni rele 1
    	} 
    } 
    milano
    Účastník

    Děkuji moc. Myslím, že to dám dohromady.Postupně si tím musím projít. Programoval jsem kdysi ještě ve strojáku a pak 25 let nic, protože jsem po škole začal dělat autoelektriku a elektroniku a programovat jsem nepotřeboval. K Arduinu jsem se dostal díky dceři, která s ním pracuje ve škole a docela mě to chytlo 🙂

    posjirka
    Účastník

    něco podobného jsme už řešili na jiném foru …
    http://duinozone.cz/index.php/topic,177.0.html

    lubosm
    Účastník

    Je možné použiť milis. iba si treba odložiť čas zapnutia a rozdielom aktuálneho času a času zapnutia porovnávať, či ubehol portebný čas. Ako premennú pre odloženie času je vhodné použiť unsigned long a ošetriť ak milis pretečie a začne počítať od 0, napr. vynulovať aj toto.

    milano
    Účastník

    Díky, na to už jsem koukal, ale budu se tím muset asi prokousat.

    BlindP
    Účastník

    Tady je hezký příklad.

    milano
    Účastník

    Tak jsem to zatím provizorně vyřešil bez možnosti zastavení a jdu studovat jak to udělat bez DELAY, aby to testovalo tlačítka a v budoucnu hlídalo další dvě koncová čidla, která mám zatím v silové části .

    //ovladani brany casovym spinanim bez moznosti vypnuti behem cyklu
    //koncove polohy jsou resene v silove casti
    //cislo tlacitka pro otevreni
    int tlacitko1 = 13;
    //cislo tlacitka pro zavreni
    int tlacitko2 = 12;
    //cislo pinu rele otevreni
    int rele1 = 11;
    //cislo pinu rele zavreni
    int rele2 = 10;
    //promenne uchovavjici stav tlacitek
    int tlacitko1Stav = 0;
    int tlacitko2Stav = 0;

    void setup() {

    pinMode(tlacitko1, INPUT);
    pinMode(tlacitko2, INPUT);
    pinMode(rele1, OUTPUT);
    pinMode(rele2, OUTPUT);
    //vypnuti obou rele
    digitalWrite(rele1, HIGH);
    digitalWrite(rele2, HIGH);

    }

    void loop() {

    //nacteni stavu tlacitek
    tlacitko1Stav = digitalRead(tlacitko1);
    tlacitko2Stav = digitalRead(tlacitko2);
    //kontrola tlacitek
    if (tlacitko1Stav == HIGH){
    digitalWrite(rele1, LOW);//zapne rele1
    delay(30000);
    }

    //kdyz neni tlacitko sepnute rele je vypnute
    digitalWrite(rele1, HIGH);
    if (tlacitko2Stav == HIGH){
    digitalWrite(rele2, LOW);//zapne rele1
    delay(30000);
    }
    //kdyz neni tlacitko sepnute rele je vypnute
    digitalWrite(rele2, HIGH);
    }

    odpověď na: Přerušení #8239
    Dupla
    Účastník

    Jak jsem již psal výše, první dvě podmínky fungují (tzn. ovládání pneumatických válců, které jsou připojeny přes cívky na piny 2 a 3). Reagují na koncové spínače a i funkce delay(); funguje správně.

    To samé bych potřeboval realizovat i s piny 4 a 5 (tzn. reagovat na koncový spínač a při vysunutí válce nějakou chvíli počkat a pak ho zase zasunout).

    Ano, vím co přerušení znamená. Mám ale podezření, že je potřeba ho realizovat i na pinech 4 a 5, aby byla funkce programu správná, protože v tomto případě, tak jak jsem Vám kód poslal si program dělá co chce. Vysunout se všechny čtyři pneumatické válce naráz. Pokud nechám jen první dvě podmínky, které ovládají válce na pinech 2 a 3 a zbytek programu zakomentuji, program funguje správně, ale jen se dvěmi válci.
    Možná přerušení nechci, ale chtěl bych tam, aby válec po vyjetí nějakou dobu počkal a to se mi nedaří realizovat. Jak to tedy udělat?

    odpověď na: Přerušení #8238
    Zbyšek Voda
    Účastník

    To, že pin „obsahuje“ přerušení znamená, že umí přerušení vyvolat – že řekne programu „teď se zastav a dělej něco úplně jiného“.
    Piny 2 a 3 jsou tedy piny, které mohou způsobit vyvolání hardwarového přerušení. Obslužná funkce tohoto přerušení se na ně připojuje pomocí funkce attachInterrupt().

    Na pinech 4 a 5 přerušení nevyvoláte (ve smyslu toho hardwarového přerušení).

    Ve vašem programu ale pravděpodobně hardwarové přerušení vůbec nechcete. Vy jenom chcete například reagovat na koncový spínač apod. Tomu sice asi říkáte „přerušení“, ale s přerušením ve smyslu interrupt toto vůbec nesouvisí.

    odpověď na: Přerušení #8236
    Dupla
    Účastník

    Ano, s přerušením souhlasím. Také jsem ho vyzkoušel pomocí funkce attachInterrupt(); na pinech 4 a 5, které přerušení neobsahují, ale bez výsledku. Na piny 2 a 3 jsem to nezkoušel, protože přerušení obsahují.
    Zpoždění zde mám z důvodu, protože chci, aby ventil zůstal vysunutý po nějakou dobu. Funkci millis() jsem také zkoušel a bez výsledku.
    Zkoušel jsem to i rozepsat stylem: pokud jeden snímač je zhasnutý, tak vysuň ventil, až se rozsvítí, tak ho zasuň…taky to moc nefungovalo.

    odpověď na: Inhaos 9225 #8235
    Lorant
    Účastník

    Som z toho blbý, ale funguje to!!!!!!!!!!!
    Rozbalil som to a dal som do knižnice ručne. Idú mi aj examples, takže všetko ok!
    Len nechápem prečo, čo som mohol mať zle. Predsa tie isté súbory som mal na tom istom mieste a skúšal som to už všeliak….. Nevadí, hlavne že to ide!
    Vďaka pekne za ochotu a čas!
    … a ked sme už tu… potreboval by som s arduinom riešiť generátor ttl alebo pílu, ale problém je, že potrebujem od -2,5 do +2,5V (6-70Hz). Má niekto nejaký nápad, alebo schému? Hladal som aj na nete, ale našiel som len 0 +5V.
    Momentálne mám po ruke NEI555 alebo ICL8038. Už som to aj riešil, len zatial od 0v do +5v, neviem ako by sa dalo ísť jednoducho aj do mínusu…. (finančne viem chodiť do mínusu, elektronicky sa mi nedarí 🙂 )
    Díky

    odpověď na: Inhaos 9225 #8234
    ArduXPP
    Účastník

    Ano soubor zip je potřeba rozbalit a pak postupovat dle co jsem psal.

    odpověď na: Přerušení #8231
    Zbyšek Voda
    Účastník

    Problém bude v nesprávné interpretaci „přerušení“ 🙂
    K přerušení dojde, když program v reakci na nějakou událost „odskočí“ na chvilku ze standardního běhu a rychle se provede něco jiného. Přerušení může být vyvolané například vnitřním časovačem, nebo také změnou napětí na pinu – to vás asi zmátlo. Obsloužení přerušení probíhá tak, že pomocí funkce attachInterrupt() řeknete, co se má stát v reakci na jakou událost. Více o přerušeních na https://www.arduino.cc/en/Reference/AttachInterrupt a https://www.arduino.cc/en/Reference/Interrupts.

    Vy ale vlastně ani přerušení nepotřebujete. Problém v programu je ten, že pokud použijete funkci delay(), dojde k čekání programu po určitou dobu. V té době program nereaguje na koncové spínače, ani neobsluhuje posun motorů.

    Navrhuji místo tohoto „pasivního“ čekání použít funkci millis(), která vrací dobu v milisekundách od začátku běhu programu. Tento problém je popsaný v https://bastlirna.hwkitchen.cz/arduino-zaklady-blikani-bez-funkce-delay/.

    Jestli to dobře chápu, používáte delay kvůli tomu, že ventil musí určitou dobu běžet, než je zasunutý/vysunutý. Pokud ale stačí pro každý ventil mít jenom dva stavy – vysunutý/zasunutý a nepotřebujete nic mezi, to čekání vlastně vůbec nepotřebujete.
    Stačí vytvořit podmínku ve stylu: pokud je koncový vypínač 1 rozepnutý, nech ventil zapnutý, jakmile se k. vypínač sepne, vypni ventil. Chápeme se? 🙂

    odpověď na: Inhaos 9225 #8230
    Lorant
    Účastník

    ani mi nedalo do libaries:
    Arduino: 1.6.11 (Windows 8.1), Vývojová doska:“Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)“

    Špecifikovaný adresár/zip súbor neobsahuje správnu knižnicu

    Táto správa by mala mať viac informácií v
    „Zobrazenie podrobného výstupu pri kompilácii“
    podľa zapnutá voľba v Súbor -> Nastavenia.
    Skúsim rozbaliť a tak….

    odpověď na: Inhaos 9225 #8228
    ArduXPP
    Účastník

    Posílám zip soubor, ten se otevře a složka LCD_2000_9225 se celá zkopíruje do libraries . Pak jsem tam dal soubor megaLCD.ino ten se otevře v arduino ide a otestuje.

    Attachments:
    odpověď na: Inhaos 9225 #8227
    Lorant
    Účastník

    … to už som včera tiež skúšal, ale vyskúšal som ešte raz, vymazal som všetky ostatné súbory, ostali mi v adresári už len :
    LCD_2000_9225.h
    LCD_2000_9225.cpp
    utility – celý adresár s príkladmi

    chyba:
    Arduino: 1.6.11 (Windows 8.1), Vývojová doska:“Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)“

    In file included from C:\Users\lorena\Documents\Arduino\_9225_demo\_9225_demo.ino:1:0:

    C:\Users\lorena\Documents\Arduino\libraries\LCD_2000_9225/LCD_2000_9225.h:10:34: fatal error: utility/Adafruit_GFX.h: No such file or directory

    #include „utility/Adafruit_GFX.h“

    ^

    compilation terminated.

    exit status 1
    Nastala chyba pri kompilácii pre dosku Arduino/Genuino Mega or Mega 2560.

    Táto správa by mala mať viac informácií v
    „Zobrazenie podrobného výstupu pri kompilácii“
    podľa zapnutá voľba v Súbor -> Nastavenia.

    Neviem čo chce s tým adafruit gfx, to mám nainštalované…. Totálne som blbý z toho…
    Ináč díky za ochotu a pomoc!

    Ja viem, že to bude veľa miesta, ale takto vyzerá kód, čo mu dávam zožrať:

    #include <LCD_2000_9225.h>
    // pin definition for the Mega2560
    #define cs 40
    #define wr 39
    #define rs 38
    #define rst 41
    #define le 42

    #define D0 37
    #define D1 36
    #define D2 35
    #define D3 34
    #define D4 33
    #define D5 32
    #define D6 31
    #define D7 30

    // create an instance of the library
    LCD_2000_9225 TFTscreen(cs,wr,rs,rst,le);

    // char array to print to the screen
    char sensorPrintout[4];

    void setup() {

    // Put this line at the beginning of every sketch that uses the GLCD:
    TFTscreen.setdatapin(D0,D1,D2,D3,D4,D5,D6,D7);
    TFTscreen.begin();

    // clear the screen with a black background
    TFTscreen.background(0, 0, 0);

    // write the static text to the screen
    // set the font color to white
    TFTscreen.stroke(255,255,255);
    // set the font size
    TFTscreen.setTextSize(2);
    // write the text to the top left corner of the screen
    TFTscreen.text(„Sensor Value :\n „,0,0);
    // ste the font size very large for the loop
    TFTscreen.setTextSize(5);
    }

    void loop() {

    // Read the value of the sensor on A0
    String sensorVal = String(analogRead(A0));

    // convert the reading to a char array
    sensorVal.toCharArray(sensorPrintout, 4);

    // set the font color
    TFTscreen.stroke(255,255,255);
    // print the sensor value
    TFTscreen.text(sensorPrintout, 0, 20);
    // wait for a moment
    delay(250);
    // erase the text you just wrote
    TFTscreen.stroke(0,0,0);
    TFTscreen.text(sensorPrintout, 0, 20);
    }

    odpověď na: Inhaos 9225 #8226
    ArduXPP
    Účastník

    Koukal jsem se na to, a testoval jsem jen kod .

    Obsah který se nachází ve složce LCD_2000_9225 je potřeba ve složce libraries udělat prázdnou složku třeba LCD_2000_9225 , a obsah co je ve složce LCD_2000_9225 vzít src ale jen ten obsah, a zkopírovat do složky libraries/LCD_2000_9225 , jedná se o tyto soubory či složky:

    LCD_2000_9225.h
    LCD_2000_9225.cpp
    utility – celou složku

    Pak to už bude fungovat.

    odpověď na: Inhaos 9225 #8222
    Lorant
    Účastník

    … ja… okrem shieldu a display-a som nedostal k tomu žiadny sample code….

    odpověď na: Inhaos 9225 #8221
    Lorant
    Účastník

    … a nič… To už musím byť poriadne blbý, alebo zúfalý… Nainštaloval som 1.6.11, Keď som pozrel do „Spravovania knižnice“ tam už bol nainšatolvaný driver pre 9225, keď som dal TFT display test, zas chyba:
    Arduino: 1.6.11 (Windows 8.1), Vývojová doska:“Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)“

    UPOZORNENIE: Kategória “ v knižnici LCD_2000_9225 je neplatná. Nastavené na ‚Uncategorized‘
    Chýbajúci ‚maintainer‘ z knižnice C:\Users\lorena\Documents\Arduino\libraries\LCD_2000_9225

    Nastala chyba pri kompilácii pre dosku Arduino/Genuino Mega or Mega 2560.

    Táto správa by mala mať viac informácií v
    „Zobrazenie podrobného výstupu pri kompilácii“
    podľa zapnutá voľba v Súbor -> Nastavenia.

    Tak som sa nikde nedostal… skúšal som túto knižnicu nakopírovať aj do c/program file/arduino/libaries tiež nič… Mám už z toho poriadny hokej. Skúšal som na začiatku zmeniť aj #include
    <LCD-2000-9225.h>
    // pin definition for the Mega2560
    LCD-2000-9225 TFTscreen(40,39,38,41,44,42);

    Chybové hlásenie:
    Arduino: 1.6.11 (Windows 8.1), Vývojová doska:“Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)“

    UPOZORNENIE: Kategória “ v knižnici LCD_2000_9225 je neplatná. Nastavené na ‚Uncategorized‘
    TFTDisplayText_Mega2560:19: error: #include expects „FILENAME“ or <FILENAME>

    #include

    ^

    exit status 1
    #include expects „FILENAME“ or <FILENAME>

    Táto správa by mala mať viac informácií v
    „Zobrazenie podrobného výstupu pri kompilácii“
    podľa zapnutá voľba v Súbor -> Nastavenia.

    Už neviem čo ďalej… to include ani neviem čo znamená, vlastne asi viem, nejaké preddefinovanie… ale nic-moc som o tom nenašiel, ako to funguje…

    odpověď na: Přerušení #8220
    Dupla
    Účastník

    Zde je můj kód. První dvě podmínky po zakomentování zbytku fungují správně. Když připojím třetí podmínku, tak se vše rozhodí.

    // Konstanty pro pneumatické válce
       const int dvere = 2;
       const int davkovani = 3;
       const int lisovani = 4;
       const int vyhazovani = 5;
    // ----------------------------------------
    // Konstanty pro snímače
       const int vyhazovaniZasunute = 6;
       const int vyhazovaniVysunute = 7;
       const int lisovaniVysunute = 8;
       const int lisovaniZasunute = 9;
       const int dvereZasunute = 10;
       const int dvereVysunute = 11;
       const int davkovaniVysunute = 12;
       const int davkovaniZasunute = 13;
    
    void setup() {
      // Pneumatické válce nastaveny jako výstupy
      pinMode(dvere, OUTPUT);    
      pinMode(davkovani, OUTPUT);   
      pinMode(lisovani, OUTPUT);
      pinMode(vyhazovani, OUTPUT); 
    
      // Snímače nastaveny jako vstupy
      pinMode(vyhazovaniZasunute, INPUT);   //  Snímač - vyhazování zasunuté 
      pinMode(vyhazovaniVysunute, INPUT);   //  Snímač - vyhazování vysunuté
      pinMode(lisovaniVysunute, INPUT);   //  Snímač - lisování vysunuté
      pinMode(lisovaniZasunute, INPUT);   //  Snímač - lisování zasunuté
      pinMode(dvereZasunute, INPUT);  //  Snímač - dveře výstup zasunuté (otevřené)
      pinMode(dvereVysunute, INPUT);  //  Snímač - dvěře výstup vysunuté (zavřené)
      pinMode(davkovaniVysunute, INPUT);  //  Snímač - dávkování vysunuté
      pinMode(davkovaniZasunute, INPUT);  //  Snímač - dávkování zasunuté
    
      // Nastavení pneumatických válců do výchozí polohy - vše zasunuto
      digitalWrite(dvere, HIGH);
      digitalWrite(davkovani, HIGH);
      digitalWrite(lisovani, HIGH);
      digitalWrite(vyhazovani, HIGH);
    }
    
    void loop() {
      
      if(digitalRead(dvereZasunute) == HIGH)
      {
          digitalWrite(dvere, LOW);      // pokud svítí senzor, že je válec zasunutý, vysuň ho
      }
      
      if(digitalRead(dvereVysunute) == HIGH && digitalRead(davkovaniZasunute) == HIGH)
      {
          digitalWrite(davkovani, LOW);      // pokud svítí senzor, že jsou dveře zasunuté a senzor dávkování svítí pro zasunutí, vysuň dávkování, počkej 
          delay(4000);
          digitalWrite(davkovani, HIGH);    // a pak ho zase zasuň
      }
      // po sem kód funguje, pokud připojím následující, tak se to celé rozhodí
      if(digitalRead(dvereVysunute) == HIGH && digitalRead(davkovaniZasunute) == HIGH && digitalRead(lisovaniZasunute) == HIGH)
      {
          digitalWrite(lisovani, LOW); 
          delay(3000);
          digitalWrite(lisovani, HIGH); 
      }
      
      if(digitalRead(dvereVysunute) == HIGH && digitalRead(davkovaniZasunute) == HIGH && digitalRead(lisovaniZasunute) == HIGH)
      {
          digitalWrite(dvere, HIGH);      
      }
    
      if(digitalRead(dvereZasunute) == HIGH && digitalRead(davkovaniZasunute) == HIGH && digitalRead(lisovaniZasunute) == HIGH && digitalRead(vyhazovaniZasunute) == HIGH)
      {
          digitalWrite(vyhazovani, LOW);
      }
      
      if(digitalRead(dvereZasunute) == HIGH && digitalRead(davkovaniZasunute) == HIGH && digitalRead(lisovaniZasunute) == HIGH&& digitalRead(vyhazovaniVysunute) == HIGH)
      {
          digitalWrite(vyhazovani, HIGH);    
      }
    
      // snímače - HIGH - svítí, LOW - nesvítí,
      // pneumatické válce - HIGH - zasunutý, LOW - vysunutý.
    }
    
Aktuálně je na stránce zobrazeno 30 příspěvků - 1,651. až 1,680. (celkem z 2,779)