Close

Webster.K

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,251. až 2,280. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Ukazatel zařazené rychlosti na motorku #6100
    posjirka
    Účastník

    hod sem zapojení nebo aspon fotku. Jinak se bavíme o ničem.
    Mě to v simulátoru fungolo takže bych hledal asi chybu u tebe.

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

    aha.. ale funguje to pořád stejně blbě :/ takže u nastavení pinů pro tlačítka stačí jen input? a jak je uzemnit?

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

    zkontroluj si zapojení. Už z videa vidím, že máš drát (co má jít na tlačítko -) ve vzduchu. Druhou stranu nevidím, ale asi jí máš stejně. Navíc pull up odpory nepotřebuješ, protože jsem v kodu aktivoval interní, takže stačí jen uzemnit příslušné piny.

    Jinak chválím admina za možnost nahrát soubor … děkujme

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

    Dík moc za ten program.. Ale stejně mi to nefunguje – přikládám video jak to jede(nejede) https://www.youtube.com/watch?v=bbC53sbY3oY

    Zbyšek Voda
    Účastník

    Největší problém bude v tom, že máte funkce getShort() a další deklarované UVNITŘ funkce loop().

    Funkce musíte deklarovat mimo tělo ostatních funkcí:)

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

    já chápu k čemu je to zpoždění, chtěl jsem jen říct, že když budeš mít porouchovou hlášku o přetopení kotle tak nemůžeš čekat až ti doběhen nějáký čas amusíš hned odstavit kotel.
    Začátek bych viděl tak, že zkusíš blikání LED diody a postupně si vyzkoušíš jednotlivé funkce jako reakce na tlačítko, přes měření teploty.
    Pak si vem cokoliv na tvorbu diagramů a nakresli si co má jak fungovat a jaé to bude mít funkční a poruchové stavy + co s tím při poruše.
    Mít víc času tak ti pomůžu ale už jsem toho nasliboval dost a nestíhám to všechno plnit.

    Soci
    Účastník

    Arduino: 1.6.6 (Windows 8.1), Vývojová deska: „Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)“

    C:\Users\Mates\Documents\Arduino\celykod_2.0\celykod_2.0.ino: In function ‚void setup()‘:

    celykod_2.0:46: error: ‚GetShort‘ was not declared in this scope

    ac1 = GetShort(0xAA, 0xAB);

    ^

    C:\Users\Mates\Documents\Arduino\celykod_2.0\celykod_2.0.ino: In function ‚void loop()‘:

    celykod_2.0:99: error: ‚GetUT‘ was not declared in this scope

    UT = GetUT();

    ^

    celykod_2.0:100: error: ‚GetTemperature‘ was not declared in this scope

    short teplota = GetTemperature(UT);

    ^

    celykod_2.0:105: error: ‚ReadUP‘ was not declared in this scope

    long tlak = GetPressure(ReadUP());

    ^

    celykod_2.0:105: error: ‚GetPressure‘ was not declared in this scope

    long tlak = GetPressure(ReadUP());

    ^

    celykod_2.0:129: error: a function-definition is not allowed here before ‚{‚ token

    {

    ^

    celykod_2.0:148: error: a function-definition is not allowed here before ‚{‚ token

    {

    ^

    celykod_2.0:176: error: a function-definition is not allowed here before ‚{‚ token

    {

    ^

    celykod_2.0:209: error: a function-definition is not allowed here before ‚{‚ token

    {

    ^

    celykod_2.0:219: error: a function-definition is not allowed here before ‚{‚ token

    {

    ^

    celykod_2.0:253: error: expected ‚}‘ at end of input

    }

    ^

    exit status 1
    ‚GetShort‘ was not declared in this scope

    Tento výpis by měl více informací s
    „Zobrazit více informací během kompilace“
    povoleno v Soubor > Vlastnosti

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

    Tak to je paráda, díky za potvrzení. Teď už jenom někoho kdo by to naprogramovat a je to :-). Jelikož já jsem absolutní začátečník, tak toho budu muset nejdřív hodně načíst. Ohledně toho zastavení šroubovice když se sekne peletka, tak si nejsem jistý myslím, že je tam jenom nějaká spojka, jinak je tam jenom kabel který vede z motoru přímo na relé řídící jednotky. No a to zpoždění 14 min. je potřeba pro dohoření zbytku pelet po vypnutí hořáku. (natopení kotle)

    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…

    bobasrobas
    Účastník

    To vypadá dost lákavě ,jelikož mam taky automat a nebaví mě se chodit koukat do kotelny , nemohl by jsi sem dat aspoň kod ať se s tím nemusím prát , Dík .

    Zbyšek Voda
    Účastník

    Dobrý den, ještě nám sem prosím zkopírujte text chybové hlášky.
    Díky

    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 #6043
    Zbyšek Voda
    Účastník

    Ano. Nepůjde.
    Máte pravdu posjirka. Zákmity jsou potvory.
    Ještě ideálnější řešení by (podle mě) bylo použít moje řešení společně s vaším čekáním uvnitř podmínky.

    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: Ukazatel zařazené rychlosti na motorku #6040
    Zbyšek Voda
    Účastník

    Ta část
    stav1 == true && predStav1 != stav1
    slouží k tomu, aby systém reagoval při stisku tlačítka. (Tj. jedenkrát při změně z LOW na HIGH).

    Pokud je tedy tlačítko stisknuto, dojde k zvětšení/zmenšení proměnné i o jedna.
    Ta může být použita například jako index v poli, ve kterém máte uložené piny s LEDkami („rozsviť LED, která odpovídá rychlosti 3“)

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

    Mohl by jste mi to popsat trochu podrobněji, díky 🙂

    odpověď na: Ukazatel zařazené rychlosti na motorku #6038
    Zbyšek Voda
    Účastník

    To bude něco jako

    
    byte tlacitkoPlus = 5;
    byte tlacitkoMinus = 6;
    boolean stav1 = false;
    boolean predStav1 = false;
    boolean stav2 = false;
    boolean predStav2 = false;
    int i = 0;
    
    ...
    
    void loop(){
        stav1 = digitalRead(tlacitkoPlus);
        if(stav1 == true && predStav1 != stav1){
            i++;
        }
        predStav1 = stav1;
    
        stav2 = digitalRead(tlacitkoMinus);
        if(stav2 == true && predStav2 != stav2){
            i--;
        }
        predStav2 = stav2;
    }
    
    odpověď na: Ukazatel zařazené rychlosti na motorku #6037
    pepa48
    Účastník

    Napadla mě ještě jedna možnost ale protože jsem začátečník tak mi to opět nejde 😀

    Jak udělat to normální sčítání a odčítání s tlačítky (+ a -) v programu?
    tzn. na začátku svítí dioda1, když zmáčknu + 1. vypne a spustí se druhá a naopak..

    odpověď na: NodeMCU + RGB led #6034
    lukbe
    Účastník

    Tak jsem na to přišel 🙂

    number= request.substring(5, 10);

    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 #6011
    Jindra413
    Účastník

    Omlouvám se za dezinformaci. Udělal jsem to přesně jak píšeš. Ale když to chci opět zprovoznit, tak to stále píše nuly. Ikdyž odpojím čidlo a odpor nechám zapojený.

    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: DS18B20 #6007
    Jindra413
    Účastník

    Nic se mi na sériovou linku nevypíše.

    Pro vypisování na sériovou linku jsem používal toto:

    #include <OneWire.h>

    // OneWire DS18S20, DS18B20, DS1822 Temperature Example
    //
    // http://www.pjrc.com/teensy/td_libs_OneWire.html
    //
    // The DallasTemperature library can do all this work for you!
    // http://milesburton.com/Dallas_Temperature_Control_Library

    OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)

    void setup(void) {
    Serial.begin(9600);
    }

    void loop(void) {
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
    float celsius, fahrenheit;

    if ( !ds.search(addr)) {
    Serial.println(„No more addresses.“);
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
    }

    Serial.print(„ROM =“);
    for( i = 0; i < 8; i++) {
    Serial.write(‚ ‚);
    Serial.print(addr[i], HEX);
    }

    if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println(„CRC is not valid!“);
    return;
    }
    Serial.println();

    // the first ROM byte indicates which chip
    switch (addr[0]) {
    case 0x10:
    Serial.println(“ Chip = DS18S20″); // or old DS1820
    type_s = 1;
    break;
    case 0x28:
    Serial.println(“ Chip = DS18B20″);
    type_s = 0;
    break;
    case 0x22:
    Serial.println(“ Chip = DS1822″);
    type_s = 0;
    break;
    default:
    Serial.println(„Device is not a DS18x20 family device.“);
    return;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44, 1); // start conversion, with parasite power on at the end

    delay(1000); // maybe 750ms is enough, maybe not
    // we might do a ds.depower() here, but the reset will take care of it.

    present = ds.reset();
    ds.select(addr);
    ds.write(0xBE); // Read Scratchpad

    Serial.print(“ Data = „);
    Serial.print(present, HEX);
    Serial.print(“ „);
    for ( i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(“ „);
    }
    Serial.print(“ CRC=“);
    Serial.print(OneWire::crc8(data, 8), HEX);
    Serial.println();

    // Convert the data to actual temperature
    // because the result is a 16 bit signed integer, it should
    // be stored to an „int16_t“ type, which is always 16 bits
    // even when compiled on a 32 bit processor.
    int16_t raw = (data[1] << 8) | data[0];
    if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
    // „count remain“ gives full 12 bit resolution
    raw = (raw & 0xFFF0) + 12 – data[6];
    }
    } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let’s zero them
    if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
    }
    celsius = (float)raw / 16.0;
    fahrenheit = celsius * 1.8 + 32.0;
    Serial.print(“ Temperature = „);
    Serial.print(celsius);
    Serial.print(“ Celsius, „);
    Serial.print(fahrenheit);
    Serial.println(“ Fahrenheit“);
    }

    odpověď na: DS18B20 #6006
    Zbyšek Voda
    Účastník

    A když pod
    lcd.print(tempC);
    přidáte
    Serial.println(tempC);

    Co se Vám po sériové lince vypíše?

    odpověď na: DS18B20 #6004
    Jindra413
    Účastník
    Attachments:
    odpověď na: DS18B20 #6003
    Jindra413
    Účastník

    Ten kód je převzatý, malinko upravený. Pokud to bude fungovat, měl by to být termostat, který bude zapínat či vypínat podle nastavené teploty.

    // This Arduino sketch reads DS18B20 „1-Wire“ digital
    // temperature sensors.
    // Tutorial:
    // http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    // Data wire is plugged into pin 8 on the Arduino
    #define ONE_WIRE_BUS 8

    // Setup a oneWire instance to communicate with any OneWire devices
    OneWire oneWire(ONE_WIRE_BUS);

    // Pass our oneWire reference to Dallas Temperature.
    DallasTemperature sensors(&oneWire);

    // Assign the addresses of your 1-Wire temp sensors.
    // See the tutorial on how to obtain these addresses:
    // http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

    DeviceAddress Thermometer = { 0x28, 0xFF, 0xC9, 0x09, 0xA5, 0x15, 0x01, 0x84 };

    void setup(void)
    {
    // Start up the library
    sensors.begin();
    // set the resolution to 10 bit (good enough?)
    sensors.setResolution(Thermometer, 10);

    lcd.begin(16,2); // columns, rows. use 16,2 for a 16×2 LCD, etc.
    lcd.clear(); // start with a blank screen

    }

    void printTemperature(DeviceAddress deviceAddress)
    {
    float tempC = sensors.getTempC(deviceAddress);
    if (tempC == -127.00) {
    lcd.print(„Error“);
    } else {
    lcd.print(tempC);

    }
    }

    void loop(void)
    {

    sensors.requestTemperatures();
    lcd.setCursor(0,0);
    lcd.print(„Teplota: „);
    printTemperature(Thermometer);
    lcd.print(“ C“);

    int teplota = 23.00;

    if (sensors.getTempC(Thermometer)>= teplota)
    { digitalWrite(13, HIGH);
    }
    else
    { digitalWrite(13, LOW);
    }
    delay(5000);
    }

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,251. až 2,280. (celkem z 2,760)