Close

rakocid

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (celkem z 6)
  • Autor
    Příspěvky
  • odpověď na: I2C #6508
    rakocid
    Účastník

    Problem vyrieseny. Dakujem za rady.
    Hodnoty ktore som posielal boli prijate pomocou bezdrotoveho priimaca nrf24. Ked boli na väcsiu vzdialenost niektore hodnoty boli na tolko skreslene ze ich nedokazalo poslat dalej.Bohužial som sem ani tu cast programu nenapisal. Wire zbernica funguje skvele.

    odpověď na: I2C #6484
    rakocid
    Účastník

    Arduino nano som vymenil, nepomohlo.
    Program zamrzne v casti ked komunikuje cez zbernicu wire.
    Zacne pracovat az po restartovani arduino nano (slave). Restartovanie len mastra nepomaha.
    Co by znamenalo keby bol zahlceny buffer?

    odpověď na: I2C #6460
    rakocid
    Účastník

    vyskúšal som posielať 3 bajty, vzdialenosť minimálna, zdroj som zvýšil na 2 ampere, nikdy to nevydrží dlhšie ako hodinu.

    odpověď na: I2C #6414
    rakocid
    Účastník

    musím použivať odpory?, keď mam na wire zbernicu pripojene ds3231? myslím že už ds3231 obsahuje odpory. Skúsil som to snimi aj bez nich ale správalo sa to rovnako. mohlo by pomocť vyradiť z ds3231 interne rezistory a pridať externe s nižsím odpor?

    Alebo som rozmýšľal neposielať naraz 18 bytov ale rozdeliť to. Pýtať si napríklad po troch postupne. Nieje to veľa? Ale neviem ako sa to robí, či sa to dá. DS3231 knižnica funguje tak že si pýta stále len to čo potrebuje s funkciami (getSecond(); getMinute();…). Dalo by sa takéto slave zariadenie urobiť aj z arduino nano?

    Ďakujem za radi

    odpověď na: I2C #6395
    rakocid
    Účastník

    odkaz na fotky:
    zapojenie

    schema

    odpověď na: I2C #6392
    rakocid
    Účastník

    MASTER:
    #include <DS3231.h>
    #include <Wire.h>

    DS3231 Clock;
    bool Century=false;
    bool h12;
    bool PM;
    byte ADay, AHour, AMinute, ASecond, ABits;
    bool ADy, A12h, Apm;
    byte year, month, date, DoW, hour, minute, second;
    int c[18] ;
    float humid, templ = 20, humid_2, temp2 = 20,humid_3, temp3 = 20,humid_4, temp4 = 20,humid_5, temp5 = 20, humid_6, temp6 = 20;

    void setup()
    {
    Wire.begin();
    }

    void loop()
    {
    Wire.requestFrom(44, 18);
    int x = 0;

    while (Wire.available())
    {
    c[x] = Wire.read();
    x++;
    }

    if(c[0] < 35 && c[0] > 5){
    humid_5 = c[2];
    temp5 = (c[0]*10)+(c[1]/10);
    temp5 = temp5/10;}

    if(c[3] < 35 && c[3] > 5){
    humid_4 = c[5];
    temp4 = (c[3]*10)+(c[4]/10);
    temp4 = temp4/10;}

    if(c[6] < 35 && c[6] > 5){
    humid = c[8];
    templ = (c[6]*10)+(c[7]/10);
    templ = templ/10;}

    if(c[9] < 35 && c[9] > 5){
    humid_2 = c[11];
    temp2 = (c[9]*10)+(c[10]/10);
    temp2 = temp2/10;}

    if(c[12] < 35 && c[12] > 5){
    humid_3 = c[14];
    temp3 = (c[12]*10)+(c[13]/10);
    temp3 = temp3/10;}

    if(c[15] < 35 && c[15] > 5){
    humid_6 = c[17];
    temp6 = (c[15]*10)+(c[16]/10);
    temp6 = temp6/10;}

    Serial.println(templ);
    Serial.println(temp2);
    Serial.println(temp3);
    Serial.println(temp4);
    Serial.println(temp5);
    Serial.println(temp6);

    Serial.print(Clock.getHour(h12, PM), DEC);
    Serial.print(‚ ‚);
    Serial.print(Clock.getMinute(), DEC);
    Serial.print(‚ ‚);
    Serial.print(Clock.getSecond(), DEC);

    delay(2000);
    }

    SLAVE:
    #include <Wire.h>
    byte c[18] ;

    void setup() {
    Wire.begin(44);
    Wire.onRequest(requestEvent);
    }

    void loop() {
    //…
    }

    void requestEvent()
    {
    Wire.write(c,18);
    }

    Program je dosť dlhý prepísal som základ toho ako využívam wire, dufam že len vtom budem mať neaku chybu, mam to zapojene na testovanie takto… používam aj ethernet modul, pretože udaje posielam po sieti. Odpory používam 4,7 kOhm

    Attachments:
Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (celkem z 6)