Close

JardaL

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 451. až 480. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: uspání arduina nano #11063
    michal09
    Účastník

    Díky, to je více méně. Zkusím pokud se mi podaří stáhnout ty knihovny, jelikož DS knihovnu používám jinou.

    odpověď na: uspání arduina nano #11062
    posjirka
    Účastník
    odpověď na: uspání arduina nano #11061
    michal09
    Účastník

    Výsledkem by mělo být, že mi arduino změří venkovní teplotu ca každých 10 minut a odešle pře vysílač 433MHZ a půjde zase spát. Jelikož za oknem nemám zásuvku, tak bude arduino napájeno z baterie a proto nutnost uspání. Nicméně moje kroky jsou postupné, tzn, nejprve si chci odladit kód pro uspání a následně přidat odesílání přes vysíláč 433Mhz.
    V kódu jsem našel již také chybu a také jsem našel na youtubu dobrý zdroj na uspání arduina, ale ani to mi nefunguje:

    Na serial monitoru se mi objeví následující:
    07/04/2017 20:33:17
    Woke up
    Woke up
    07/04/2017 20:33:18
    Woke up
    Woke up
    07/04/2017 20:33:19
    Woke up
    alarm zpusten
    Woke up
    Woke up
    vstup do spanku
    Woke up
    07/04/2017 20:33:22
    07/04/2017 20:33:23
    07/04/2017 20:33:24
    07/04/2017 20:33:25
    07/04/2017 20:33:26
    07/04/2017 20:33:27
    07/04/2017 20:33:28
    07/04/2017 20:33:29
    07/04/2017 20:33:30
    07/04/2017 20:33:31
    07/04/2017 20:33:32
    07/04/2017 20:33:33
    07/04/2017 20:33:34
    07/04/2017 20:33:35
    07/04/2017 20:33:36
    07/04/2017 20:33:37
    07/04/2017 20:33:38
    07/04/2017 20:33:39
    07/04/2017 20:33:40
    07/04/2017 20:33:41
    07/04/2017 20:33:42
    07/04/2017 20:33:43
    07/04/2017 20:33:44
    07/04/2017 20:33:45
    07/04/2017 20:33:46
    07/04/2017 20:33:47
    07/04/2017 20:33:48
    07/04/2017 20:33:49
    07/04/2017 20:33:50
    07/04/2017 20:33:51
    07/04/2017 20:33:52
    07/04/2017 20:33:53
    07/04/2017 20:33:54
    07/04/2017 20:33:55
    07/04/2017 20:33:56
    07/04/2017 20:33:57
    07/04/2017 20:33:58
    07/04/2017 20:33:59
    07/04/2017 20:34:00
    07/04/2017 20:34:01
    07/04/2017 20:34:02
    07/04/2017 20:34:03
    07/04/2017 20:34:04
    07/04/2017 20:34:05
    07/04/2017 20:34:06
    07/04/2017 20:34:07
    07/04/2017 20:34:08
    07/04/2017 20:34:09
    07/04/2017 20:34:10
    07/04/2017 20:34:11
    07/04/2017 20:34:12
    07/04/2017 20:34:13
    07/04/2017 20:34:14
    07/04/2017 20:34:15
    07/04/2017 20:34:16
    07/04/2017 20:34:17
    07/04/2017 20:34:18
    07/04/2017 20:34:19
    07/04/2017 20:34:20
    alarm zpusten
    vstup do spanku
    Woke up
    Woke up
    07/04/2017 20:34:22
    07/04/2017 20:34:23
    07/04/2017 20:34:24
    07/04/2017 20:34:25
    07/04/2017 20:34:26

    Trochu mi to přijde, jako by mi na ten pin 2 co mi má probouzet arduino ze spánku pořád něco posílalo bez ohledu na nastavený alarm.
    Na pin 2 jsem přivedl přímo SQW z DS3231, tak jako je to v tom odkazu na youtubu, ale když změřím napětí mezi GND a SQW, tak zjistím, že z SQW mi vlastně lezou pulzy, což by mě mohlo neustále zapína arduino bez ohledu na nastavený alarm.
    Původně mi ještě napadl rezistor mezi pinem 2 a SQW, ale to nepomohlo. Více méně mi stačí poradit jak rozchodit program co je na youtubu a měl bych vystaráno.

    kód z youtubu:
    #include <DS3231.h>
    #include <avr/sleep.h>
    #include <Wire.h>

    int wakePin = 2;
    int led = 13;

    DS3231 clock;
    RTCDateTime t;

    void setup() {
    Serial.begin(9600);
    Serial.println(„initislizace“);
    clock.begin();
    pinMode(wakePin, INPUT_PULLUP);
    pinMode(led,OUTPUT);

    clock.armAlarm1(false);
    clock.clearAlarm1();
    clock.setAlarm1(0,0,0,20,DS3231_MATCH_S);
    attachInterrupt(0,wakeUpNow,CHANGE);
    CheckAlarms();
    }

    void CheckAlarms(){
    RTCAlarmTime a1;
    RTCAlarmTime a2;
    if(clock.isArmed1()){
    a1 = clock.getAlarm1();
    Serial.print(„Alarm1 je nastaven“);
    switch(clock.getAlarmType1()){
    case DS3231_MATCH_S:
    Serial.print(„when second match: „);
    Serial.println(clock.dateFormat(„_ _:_:s“,a1));
    delay(100);
    break;
    default:
    Serial.println(„nezname nastaveni RTC“);
    break;
    }

    }
    }

    void wakeUpNow(){
    Serial.println(„Woke up“);
    delay(300);
    }

    void sleepNow(){
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    attachInterrupt(0,wakeUpNow,CHANGE);
    sleep_mode();

    sleep_disable();
    detachInterrupt(0);
    }

    void loop() {
    t = clock.getDateTime();
    Serial.println(clock.dateFormat(„d/m/Y H:i:s“, t));
    delay(100);

    if (clock.isAlarm1()){
    Serial.println(„alarm zpusten“);
    digitalWrite(led,HIGH);
    delay(1000);
    digitalWrite(led,LOW);
    Serial.println(„vstup do spanku“);
    delay(100);
    sleepNow();
    }

    delay(900);
    }

    odpověď na: uspání arduina nano #11059
    posjirka
    Účastník

    když jsem to porovnal s examplem:
    http://arduino8.webnode.cz/news/lekce-27-adruino-a-napajeni-z-baterie-aneb-jak-uspat-arduino/
    tak máš řešení úplně jinak. Třeba pořadí příkazů ve sleepNow(), v režimu SLEEP_MODE_PWR_DOWN je interní časovač mrtvý a nelze se na něj odkazovat, nechápu princip attachInterrupt(0,alarmIsr,CHANGE); v kodu.
    Spíš napiš co chceš aby to dělalo a můžeme se na to podívat ..

    odpověď na: Ethernet shield – problém se switchem #11057
    jan123
    Účastník

    Dobrá zkusím ty odpory, zatím díky moc.

    odpověď na: Ethernet shield – problém se switchem #11056
    jan123
    Účastník

    No právě ono se k němu nejde vůbec připojit ani ping. IP a MAC adresy mám zkontrolované nekolidují, právě proto o to je to divější. Síťový sken arduino vůbec nenajde, ale ostatní pc připojená ke switchi fungují, ale ani po jejich odpojení arduino nefunguje.

    odpověď na: Ethernet shield – problém se switchem #11055
    BlindP
    Účastník

    Nejsi sám :). Tady se to řeší, popř. tady . Holandsky neumím, ale podle googlu:

    Sám jsem udělal nějaký výzkum a ukázalo se, že někdy používají špatné odpory na konektoru RJ45. Zřejmě to vytváří elektrický incompatiliteit Některé routery nebo přepínače. Jsem umístil dalších 100 ohm odpor mezi čepem 1-2 a 3-6 konektoru a nyní, že problémy se

    odpověď na: Ethernet shield – problém se switchem #11052
    posjirka
    Účastník

    a jak se nefunkcnost projevuje? nepripojis ho do site nebo ti posila chybne hodnoty?

    vetsinou to byva problem IP adresy kdy ti koliduje z nejakym jinym zarizenim v tomto pripade asi switchem

    odpověď na: IR senzor (TCRT5000) #11049
    honzaSL
    Účastník

    TCRT5000 má sloužit pouze jako orientační čidlo pro robota na minisumo budou umístěny na boku na předek mam UZ senzor takže nepotřebuju buhví jakou citlivost.

    odpověď na: Load cell 50kg, HX711 #11046
    Axamith
    Účastník

    Ještě jsem trochu prohledával své uložené linky. Tady je velmi detailně vysvětlena problematika vážení tenzometry, zpracování signálů, ukázkové kódy atd.

    Tady je další skvělý článek o speciální desce OpenScale, určené přímo ke zpracování signálu z tenzometrů a teplotního čidla.

    Deska není zrovna levná, OpenScale na eBay, ale zřejmě to bude slušný výrobek. Zde je kompletní dokumentace. nemám s tím žádnou zkušenost, ale možná se někdy odhodlám a zkusím ji pořídit.

    odpověď na: IR senzor (TCRT5000) #11045
    Luke_CZ
    Účastník

    A, k jakému účelu ten TCRT5000 bude?
    B, než zvedat citlivost, tak se raději podívej na jiné senzory, zvýšením citlivosti přináší samozřejmě zvýšené riziko chybných signálů

    L:

    odpověď na: aktualizování firmwaru přes uart #11044
    michal123
    Účastník

    Děkuji, tohle mi hodně pomohlo, už mi to začíná být jasné. Za nějaký kód budu také moc rád. Přeji pěkný víkend.

    odpověď na: aktualizování firmwaru přes uart #11039
    Vojtěch Vosáhlo
    Účastník

    No ono to odposlouchávání není nutné, ta stránka kterou jsem posílal to řeší za vás, tam je odposlech komunikace mezi arduinem UNO a Arduino IDE (respektive avrdude který je řízený Arduino IDE).
    Vše co je tam vypsáno je rozhovor který spolu avrdude a arduino vedou, u každého příkazu je napsáno zkratkou co znamená a je u něj hexadecimální reprezentace.

    Ukážu tady jak bych tím procházel já. Pojďme vzít první dva řádky zaznamenané komunikace z té stránky.

    Avrdude/Arduino IDE:#30#20 STK_GET_SYNCH (mělo by být jen STK_GET_SYNC), Sync_CRC_EOP
    Target/Arduino UNO: #14#10 STK_INSYNC, STK_OK

    První je Avrdude/Arduino IDE:#30#20 STK_GET_SYNCH, Sync_CRC_EOP, to je tedy sada příkazů kterou pošle avrdude na sériový port, ve vašem případě by tyto příkazy odesílal aktualizační procesor. #30#20 je vlastně ta HEX reprezentace příkazů, první má tedy hodnotu 0x30 a druhý 0x20, to co následuje je jen vysvětlení toho příkazu jeho zkráceným názvem. 0x30 má tedy název STK_GET_SYNC a už podle názvu se dá usoudit že avrdude zjišťuje jestli je spojené s procesorem a snaží se s ním spojit. Kdyby to bylo málo, otevřu si datasheet STK500 a vyhledám si příkaz buď podle HEX čísla nebo zkratky. U tohoto příkazu bych dostal takovéto detaily

    Use this command to try to regain synchronization when sync is lost. Send this command
    until Resp_STK_INSYNC is received.

    plus nějaké další věci. Druhý příkaz bych si opět dohledal atd…

    Druhý řádek už je odpověď arduina na dotazy, přesněji Target/Arduino UNO: #14#10 STK_INSYNC, STK_OK. Opět dostaneme nazpět HEX čísla, tentokrát 0x14 a 0x10 a jejich vysvětlení. Mohl byste tedy odpověď přečíst a po jejím vyhodnocení pokračovat dál.

    Příkazy u kterých je v závorce text Command that is consumed but ignored by the bootloader prakticky nemusíte posílat vzhledem k tomu že je bootloader ignoruje.

    Kdyby jste tedy chtěl napsat program který by tuto komunikaci simuloval, musíte odesílat do arduina příkazy přavě jako jejich HEX hodnoty. Na odesílání by stačilo použít třeba Serial.print(DEC reprezentace prikazu, HEX);
    Například pro poslání příkazu s kódem 0x30 by byl Serial.print(48, HEX);
    48 je 0x30 převedeno na desítkovou soustavu.
    nemělo by být potřeba posílat <CR> nebo <LF>, alespoň to není zmíněno.

    Já se vám tu asi o víkendu až budu mít čas ještě ozvu s nějakým kódem, sám si to rád zkusím. Vy se zatím můžete ještě podívat na to co jsem napsal.

    Hezký večer

    odpověď na: aktualizování firmwaru přes uart #11038
    michal123
    Účastník

    Je mi tedy jasné, že resetuji procesor a pak ho začnu programovat, ale stále se v těch příkazech nějak nevyznám.
    Prošel jsem výše zmíněné odkazy ale nekokážu si podle toho ani předsatvit jak by měl vypadat funkční výsledek.
    Nevím jaké příkazy použít bylo by prosím možné odkázat na nějaký příklad? takový kde by bylo nejlépe Serial.write(„prikaz1“) a seznam rpikazu tak jak se pouzivaji.
    Chtěl jsem odposlechnout stávající komunikaci při programování za prevodnikem z usb ale k tomu mi nyní jedno arduino chybí, takže budu muset počkat.
    Doufám, že mi to brzy dojde a naprogramování se podaří.

    odpověď na: IR senzor (TCRT5000) #11034
    honzaSL
    Účastník

    No jako ja jedno schema našel, ale právě si nejsem moc jistej jestli se to nebude hřát protože nemam zrovna možnost tam dat chladič a nacpat to na plošák 40×40 (ty TCRT tam musim dat 2)

    SCHEMA http://robotelektro.cz/image/cache/data/16.7.2016/TCRT%20zapojen%C3%AD-500×500.jpg

    odpověď na: IR senzor (TCRT5000) #11033
    Luke_CZ
    Účastník

    Všecko jde, enem hledat 🙂

    L.

    odpověď na: Bluetooth komunikácia #11018
    posjirka
    Účastník

    vidim dva mozne problem
    bud je spatny bluetooth modul nebo seriova komunikace. ruseni rovnou odstreluji protoze to je podle me blbost. pokud bych mel sazet tipoval bych seriova komunikace.
    zkus si nechat poslat na serial monitor vsechno co bluetooth prijme a over si tvoji teorii.
    pak budes vedet.
    no nelibi se mi ze pouzivas interni uart. predpokladam ze mas desku treba arduino nano kde je na tomto portu usb prevodnik. sam o sobe je v pohode ale nemuzes vyuzivat tento port pro pc i pro bluetooth. nikde si to nepsal jen upozornuji.
    no pak jedine stabilita krystaly …

    odpověď na: Bluetooth komunikácia #11002
    MilosMerta
    Účastník

    Aplikácia- Bluetooth RC Controller (Android)
    Vždy keď pošle mobil povel vpred tak naskočí iný znak v serial monitor.

    // CxemCAR 1.0 (06.01.2013)
    // Project Page: http://solderer.tv/arduino-rc-car/
      
    #include "EEPROM.h"
      
    #define D1 2          // direction of motor rotation 1
    #define M1 3          // PWM left motor
    #define D2 4          // direction of motor rotation 2
    #define M2 5          // PWM right motor
    #define HORN 13       // additional channel 1
    //#define autoOFF 2500  // milliseconds after which the robot stops when the connection
      
    #define cmdL 'L'      // UART-command for left motor
    #define cmdR 'R'      // UART-command for right motor
    #define cmdH 'H'      // UART-command for additional channel (for example Horn)
    #define cmdF 'F'      // UART-command for EEPROM operation
    #define cmdr 'r'      // UART-command for EEPROM operation (read)
    #define cmdw 'w'      // UART-command for EEPROM operation (write)
      
    char incomingByte;    // incoming data
      
    char L_Data[4];       // array data for left motor
    byte L_index = 0;     // index of array L
    char R_Data[4];       // array data for right motor
    byte R_index = 0;     // index of array R
    char H_Data[1];       // array data for additional channel
    byte H_index = 0;     // index of array H
    char F_Data[8];       // array data for  EEPROM
    byte F_index = 0;     // index of array F
    char command;         // command
      
    unsigned long currentTime, lastTimeCommand, autoOFF;
      
    void setup() {
      Serial.begin(9600);       // initialization UART
      pinMode(HORN, OUTPUT);    // additional channel
      pinMode(D1, OUTPUT);      // output for motor rotation
      pinMode(D2, OUTPUT);      // output for motor rotation
      /*EEPROM.write(0,255);
      EEPROM.write(1,255);
      EEPROM.write(2,255);
      EEPROM.write(3,255);*/
      timer_init();             // initialization software timer
    }
      
    void timer_init() {
      uint8_t sw_autoOFF = EEPROM.read(0);   // read EEPROM "is activated or not stopping the car when losing connection"
      if(sw_autoOFF == '1'){                 // if activated
        char var_Data[3];
        var_Data[0] = EEPROM.read(1);
        var_Data[1] = EEPROM.read(2);
        var_Data[2] = EEPROM.read(3);
        autoOFF = atoi(var_Data)*100;        // variable autoOFF ms
      }
      else if(sw_autoOFF == '0'){         
        autoOFF = 999999;
      } 
      else if(sw_autoOFF == 255){ 
        autoOFF = 2500;                      // if the EEPROM is blank, dafault value is 2.5 sec
      } 
      currentTime = millis();                // read the time elapsed since application start
    }
       
    void loop() {
      if (Serial.available() > 0) {          // if received UART data
        incomingByte = Serial.read();        // raed byte
        
        Serial.println(incomingByte);        // výpis dát
        
        if(incomingByte == cmdL) {           // if received data for left motor L
          command = cmdL;                    // current command
          memset(L_Data,0,sizeof(L_Data));   // clear array
          L_index = 0;                       // resetting array index
        }
        else if(incomingByte == cmdR) {      // if received data for left motor R
          command = cmdR;
          memset(R_Data,0,sizeof(R_Data));
          R_index = 0;
        }
        else if(incomingByte == cmdH) {      // if received data for additional channel
          command = cmdH;
          memset(H_Data,0,sizeof(H_Data));
          H_index = 0;
        }    
        else if(incomingByte == cmdF) {      // if received data for EEPROM op
          command = cmdF;
          memset(F_Data,0,sizeof(F_Data));
          F_index = 0;
        }
        else if(incomingByte == '\r') command = 'e';   // end of line
        else if(incomingByte == '\t') command = 't';   // end of line for EEPROM op
          
        if(command == cmdL && incomingByte != cmdL){
          L_Data[L_index] = incomingByte;              // store each byte in the array
          L_index++;                                   // increment array index
        }
        else if(command == cmdR && incomingByte != cmdR){
          R_Data[R_index] = incomingByte;
          R_index++;
        }
        else if(command == cmdH && incomingByte != cmdH){
          H_Data[H_index] = incomingByte;
          H_index++;
        }    
        else if(command == cmdF && incomingByte != cmdF){
          F_Data[F_index] = incomingByte;
          F_index++;
        }    
        else if(command == 'e'){                       // if we take the line end
          Control4WD(atoi(L_Data),atoi(R_Data),atoi(H_Data));
          delay(10);
        }
        else if(command == 't'){                       // if we take the EEPROM line end
          Flash_Op(F_Data[0],F_Data[1],F_Data[2],F_Data[3],F_Data[4]);
        }
        lastTimeCommand = millis();                    // read the time elapsed since application start
      }
      if(millis() >= (lastTimeCommand + autoOFF)){     // compare the current timer with variable lastTimeCommand + autoOFF
        Control4WD(0,0,0);                             // stop the car
      }
    }
      
    void Control4WD(int mLeft, int mRight, uint8_t Horn){
      
      bool directionL, directionR;      // direction of motor rotation L298N
      byte valueL, valueR;              // PWM M1, M2 (0-255)
        
      if(mLeft > 0){
        valueL = mLeft;
        directionL = 0;
      }
      else if(mLeft < 0){     valueL = 255 - abs(mLeft);     directionL = 1;   }   else {     directionL = 0;     valueL = 0;   }      if(mRight > 0){
        valueR = mRight;
        directionR = 0;
      }
      else if(mRight < 0){
        valueR = 255 - abs(mRight);
        directionR = 1;
      }
      else {
        directionR = 0;
        valueR = 0;
      }
         
      analogWrite(M1, valueL);            // set speed for left motor
      analogWrite(M2, valueR);            // set speed for right motor
      digitalWrite(D1, directionL);       // set direction of left motor rotation
      digitalWrite(D2, directionR);       // set direction of right motor rotation
        
      digitalWrite(HORN, Horn);           // additional channel
    }
      
    void Flash_Op(char FCMD, uint8_t z1, uint8_t z2, uint8_t z3, uint8_t z4){
      
      if(FCMD == cmdr){           // if EEPROM data read command
        Serial.print("FData:");       // send EEPROM data
        Serial.write(EEPROM.read(0));     // read value from the memory with 0 address and print it to UART
        Serial.write(EEPROM.read(1));
        Serial.write(EEPROM.read(2));
        Serial.write(EEPROM.read(3));
        Serial.print("\r\n");         // mark the end of the transmission of data EEPROM
      }
      else if(FCMD == cmdw){          // if EEPROM data write command
        EEPROM.write(0,z1);               // z1 record to a memory with 0 address
        EEPROM.write(1,z2);
        EEPROM.write(2,z3);
        EEPROM.write(3,z4);
        timer_init();             // reinitialize the timer
        Serial.print("FWOK\r\n");         // send a message that the data is successfully written to EEPROM
      }
    }

    tuto je celý kód

    odpověď na: Load cell 50kg, HX711 #11001
    lkvapil
    Účastník

    Aha. Tak já to risknu a objednám to. Díky za pomoc

    odpověď na: Load cell 50kg, HX711 #11000
    Axamith
    Účastník

    Mám mezery ve vzdělání, nevím, co to jsou plynové váhy. Ale i tak, nechci se vyjadřovat ke kvalitě konkrétního senzoru, na to nejsem odborník ani náhodou.
    Tento typ senzoru se podepře na jednom konci a tlačí se na druhý, při deformaci se mění hodnota odporů v můstku tenzometru. Na tomto videu je to hezky vidět, jak má být upnutý (čas cca 4:15) https://www.youtube.com/watch?v=bylvdyOefXo

    odpověď na: Load cell 50kg, HX711 #10999
    lkvapil
    Účastník

    Ještě bych potřeboval tedy poradit. Chtěl bych měřit plynové váhy, které važí cca 20kg. Takže jsem vybral TENTO sensor. Měří 50kg. Pochopil jsem to dobře, že se „“tlačí““ doprostřed toho senzoru. Má šíří 30mm.
    Tak jestli byste mi ho doporučil, protože se mi nechce utrácet 40USD za jeden. 🙁

    Díky
    S pozdravem

    Kvapil

    odpověď na: Bluetooth komunikácia #10998
    Dreamer
    Účastník

    To nechápu a asi nejsem sám. Jako že když dáš v telefonu třeba povel k jízdě vpřed tak aplikace pošle pokaždé jiný kód? Jakou aplikaci v telefonu používáš? A chtělo by to alespoň část kódu který má povely vyhodnocovat sem dát.

    odpověď na: Komunikace Ard. Mega 2560 a PC přes COM #10994
    Jan Hraba
    Účastník

    Zdravím Zbyšku,
    ano, LED „L“ bliká v intervalu 1s/1s, ale bez mého přičinění. Stačí jen připojit napájení. Když programově změním časy, reakce je nulová a přitom mi IDE rovněž nehlásí chybu.

    Taky jsem zjistil určité HW rozdíly mezi MEGA2560 rev3 s chipem 16AU1510 a mým MEGA2560 s chipem 16AU1505. Proto jsem minule přikládal foto boardu.

    Upřednostnil bych přímou komunikaci, mám 778733993, zavolate mi prosím? Případně prosím pošlete SMS a já se ozvu.

    Děkuji. Honza

    odpověď na: aktualizování firmwaru přes uart #10991
    Vojtěch Vosáhlo
    Účastník

    Zezačítku jsem tohle co jsete psal moc nechaápal, už to ale čtu poněkolikáté a žačalo to dávat smysl

    Příště budu konkrétnější.

    Lze zavolat funkci která by byla nějakým způsobem uložena do paměti pro bootloader? a tím moha přepsat stávající hlavní program? (tuším, že to pravděpodonmě nebude jednduché takže odpověď bude NE)

    No, možná ano. Assembler má příkaz ve které můžete skočit na určitou adresu v paměti, myslím že jmp. Z bootloaderu skáčete na program právě touto funkcí takže nevidím důvod proč by to nešlo ALE když skočíte do bpotloaderu, není to stejné jako kdyby se procesor bootoval od začátku. Jde o to že vše co jste si nastavil v programu (konfigurace pinů, přerušení…) zůstane nastavené takže bootloader nemusí fungovat tak jak má. Já ale vlastně nevidím důvod proč do bootloaderu skákat z programu. Jaký je důvod? Mohl byste prostě připojit reset přes tranzistor k zemi a pak ten tranzistor spínat nějakým pinem procesoru, jednodušší a 100% funkční.

    Jak může vypadat aktualizační procesor? Ještě jsem nezkoušel dostat aeduino na procesor menší než atmega328, a když už bych ho tam dal, tak by bylo zbytečné ho nevyužívat i jinak než jen jako aktualizační. Lze použít pro arduino jako aktualizační procesor třeba nějaký levný jak attiny10 ? možná s extermním paměťovým čipem?

    No na attiny10 byste to určitě nedostal. Možná pokud by to bylo psané v GCC ale ani u toho si nejsem jistý. Kdyby jste si chtěl vše napsat v arduino IDE tak musíte hledat procesor který bude mít +-8KB flash (soudím podle velikosti programu arduinoISP která je asi 4KB). Já teď hodně využívám ATmegy8a, jsou za poměrně slušnou cenu tady v ČR no a z číny, dal jsem asi 5$ za 10ks. Pokud vím tak i 328P by měla být teď levnější, přesněji její redesign 328PB.

    Pochybuju že by se nějak vyplatilo kupovat avr s podporou extérní flash, to jsou vyhozené peníze, vyšlo by to dráže než třeba ta mega8a.

    když zvolím možnost z aktualizačního procesuru posílat data přes uart, následují nejspíš tyto kroky?:
    1. restart procesoru
    2. čekání 20ms
    3. poslání „řídícího slova“ kde najít jak má vypadat?
    4. nahrání bit nebo hex kódu, nebo jende stranky?
    5. poslani dalsiho slova s dalsi strankou nebo restart?

    Zde je odkaz na optiboot wiki kde je popsáno jak zhruba optiboot funguje. To by mělo zodpovědět otázky restartů a posílání dat. Na té stránce je pak odkaz na dokumentaci STK500 kterou optiboot používá, zde přikládám odkaz na PDF. Jsou tam všechny příkazy společně s jejich hexadecimálním číslem.

    A takové finále tady je stránka na které je vypsaný celý proces programování arduina opět s hex reprezentací příkazů. Tohle by vás snad mělo dovést do zdárného konce.

    Držím palce, Vojta

    odpověď na: Load cell 50kg, HX711 #10988
    Axamith
    Účastník

    Nejsem žádný odborník na tenzometry, jen jsem si s nimi chvíli hrál a laboroval, trochu hledal informace. Podle výše uvedeného linku jsem rozchodil měření se zobrazením na serial monitor, víc jsem si s tím nehrál, nebyl čas.
    Problematika tenzometrů je trochu složitější, než se zdá. Levné nesnesou dlouhodobější (trvalou) zátěž. Tedy když je na váze dlouhodobě závaží. Tohle tenzometr za 50,- neumí, je mechanicky slabý. Další problém je tzv. tečení, má to zase spojitost s mechanikou. Jde o deformaci zatížením. Aby toho nebylo málo, do toho ještě vstupuje teplota, při pokojové teplotě je to OK, s klesající dochází k chybě měření, řádově až o celá % (bez vlastní praxe, vyčteno).
    Většinu z toho lze řešit pořádným tenzometrem. Dříve se na větší hmotnosti používal pákový mechanizmus, např. 1:10. takže snímač 2 kg přes páku snímal 200 kg. To už ustupuje do pozadí, nyní jsou k dispozici snímače na desítky i stovky kg za rozumnou cenu. Ale určitě bych si pořídil snímač s větším mechanickým profilem, např. 30×30 mm, délku 120-150 mm. Samozřejmě s ohledem na požadované zatížení, na 0,5 kg není třeba takový macek, na 150 kg bych už takový pořídil. Cena kolem 1000,- a výše. Nemá smysl na tom výrazně šetřit, pokud to není jen na hraní a má to být skutečná váha.

    odpověď na: Load cell 50kg, HX711 #10986
    lkvapil
    Účastník
    odpověď na: Load cell 50kg, HX711 #10985
    lkvapil
    Účastník

    Nejprve jsem chtěl ty levné zprovoznit. Jenže se mi vůbec nedaří, a tak asi objednám, jak říkáš ty dražší. Nešly by 2 váhové senzory (každý o 20kg) zkombinovat, tak, že by mohly naměřit až 40 kg (s jedním breakout boardem) ? Nebo je to blbost :D. A poslední dotaz, jestli naměří 10kg a 100kg váhový senzor stejné hodnoty, nebo bude velký rozdíl hodnot ?

    odpověď na: Stabilizátor napětí #10975
    Luke_CZ
    Účastník

    Arduino(UNO) má 10-bit analogově-digitální převodník, který převádí napětí na vstupním pinu na digitální hodnotu viz. analogRead(), jelikož je to 10-bit, tak napětí na pinu ti převede na číslo 0-1023 (2 na desátou – 1).
    Příklad: Pro 5V Arduino je tedy 5V na vstupním pinu převedeno na číslo 1023.
    Tedy z toho plyne, že nejmenší jednotku jsi schopen změřit 5V/1024 = 0,004882813V = cca 5mV(analogicky platí pro 3.3V verzi arduina tam by to bylo při 3.3V cca 3mV).
    Pro přesný A/D převod potřebuješ mít referenční napětí, a tím napájet čidla.
    Například jaké napětí dává integrovaný stabilizátor a skeč upravit tak, aby reflektoval toto napětí coby referenční. Více zde analogReference().
    Před tím, než začneš cokoliv měřit na vstupním pinu je nutno si ověřit:
    1, napěťovou logiku arduina 5V, 3.3V
    2, nikdy se nesmí dostat na pin vyšší napětí, než je napěťová logika arduina, jinak ho spolehlivě odpálíš!
    3, pro měření vyšších napětí je nutné vyrobit napěťový dělič více zde
    Online kalkulačka
    4, v autě bych určitě ochránil piny před možným přepětím. Další inspirace na Google(arduino adc protection))

    Tož kdyby něco tak napiš 😉

    L:

    odpověď na: Stabilizátor napětí #10974
    hcdady
    Účastník

    Dobrý den, děkuji za echo se stabilizátorem. A jeden dotaz, jsem v elektrice sláb, ale ten referenční zdroj to je co? Zkoušel jsem to najít sám, jenže to je na mě dost složitý. Neexistuje taky nějaký plošňák na 24V abych se to nemusel učit. Že bych to koupil, a nebo kdyby to nebylo složitý i spájel. :-). Za radu díky.

    odpověď na: aktualizování firmwaru přes uart #10973
    michal123
    Účastník

    když zvolím možnost z aktualizačního procesuru posílat data přes uart, následují nejspíš tyto kroky?:
    restart procesoru
    čekání 20ms
    poslání „řídícího slova“ kde najít jak má vypadat?
    nahrání bit nebo hex kódu, nebo jende stranky?
    poslani dalsiho slova s dalsi strankou nebo restart?

    nepodařilo se mi najít přesný postup

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