1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 12

Arduino Mega. Контроллер теплицы. Хроники - 4.0

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

Статус темы:
Закрыта.
  1. Сергейфывчяфй
    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266

    Сергейфывчяфй

    Живу здесь

    Сергейфывчяфй

    Живу здесь

    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266
    С кодом, благодаря Диме, тоже все ОК закачал, проверил работает.
     
  2. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    А я, как раз сейчас, его мучаю! (Пока он меня!):|:
     
  3. Сергейфывчяфй
    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266

    Сергейфывчяфй

    Живу здесь

    Сергейфывчяфй

    Живу здесь

    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266
    могу скинуть на почту там слегка надо подправить
     
  4. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Буду очень благодарен! :)
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Выкладывайте тогда уже сюда. Там pinMode надо добавить, как минимум - это на память. Я просто по-бырому накидал принцип, не более.
     
  6. Сергейфывчяфй
    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266

    Сергейфывчяфй

    Живу здесь

    Сергейфывчяфй

    Живу здесь

    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266
    В массиве для наглядности цифры по порядку, а в реале по коду Грея
     
  7. Сергейфывчяфй
    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266

    Сергейфывчяфй

    Живу здесь

    Сергейфывчяфй

    Живу здесь

    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266
    Дима, это пока флюгера нет имитация, обманка,

    uint8_t values[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,};

    uint16_t convertCodeToDegrees (uint8_t code)
    {
    const size_t arraySz = sizeof (values)/sizeof (values[0]);
    for (size_t i=0;i<arraySz;i+)
    {
    if (values = code)
    {
    return 12*(i+1);
    }
    }

    return 0xFFFF;
    }

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

    uint8_t code = 15; / наш полученный бинарный код

    / как получить код из пяти входов, пример:

    uint8_t inpit1 = 0;
    uint8_t inpit2 = 1;
    uint8_t inpit3 = 1;
    uint8_t inpit4 = 1;
    uint8_t inpit5 = 0;
    / uint8_t inpit1 = digitalRead (INPUT_PIN1);
    / uint8_t inpit2 = digitalRead (INPUT_PIN2);
    / uint8_t inpit3 = digitalRead (INPUT_PIN3);
    / uint8_t inpit4 = digitalRead (INPUT_PIN4);
    / uint8_t inpit5 = digitalRead (INPUT_PIN5);

    / теперь комбинируем биты в число, первый вход - старший бит, пятый вход - младший бит
    uint8_t sampleCode = (inpit1 < 4) | (inpit2 < 3) | (inpit3 < 2) | (inpit4 < 1) | inpit5;

    Serial. print("Code #1: "); Serial. println (sampleCode);

    / комбинируем биты в число, первый вход - младший бит, пятый вход - старший бит
    uint8_t sampleCode2 = (inpit5 < 4) | (inpit4 < 3) | (inpit3 < 2) | (inpit2 < 1) | inpit1;

    Serial. print("Code #2: "); Serial. println (sampleCode2);

    / конец примера

    uint16_t degr = convertCodeToDegrees (sampleCode2);

    if (degr != 0xFFFF)
    {
    / тут получили корректное значение градусов
    Serial. print("Found degrees: "); Serial. println (degr);
    }
    }

    void loop()
    {

    }

    Не получилось загрузить по другому
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Используйте тег CODE при вставке кода ;)
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Ладно, вставлю я:

    Код:
    uint8_t values[] = {
       
        1,    // 12 градусов
        5,    // 24 градуса
        7,    // 36 градусов
        15, // ...
        11,
        3,
        2,
    };
    
    uint16_t convertCodeToDegrees(uint8_t code)
    {
        const size_t arraySz = sizeof(values)/sizeof(values[0]);
        for(size_t i=0;i<arraySz;i++)
        {
            if(values[i] == code)
            {
                return 12*(i+1);
            }
        }
       
        return 0xFFFF;
    }
    
    void setup()
    {
        Serial.begin(9600);
       
        uint8_t code = 15; // наш полученный бинарный код
       
        // как получить код из пяти входов, пример:
       
        uint8_t inpit1 = digitalRead(INPUT_PIN1);
        uint8_t inpit2 = digitalRead(INPUT_PIN2);
        uint8_t inpit3 = digitalRead(INPUT_PIN3);
        uint8_t inpit4 = digitalRead(INPUT_PIN4);
        uint8_t inpit5 = digitalRead(INPUT_PIN5);
       
        // теперь комбинируем биты в число, первый вход - старший бит, пятый вход - младший бит
        uint8_t sampleCode = (inpit1 << 4) | (inpit2 << 3) | (inpit3 << 2) | (inpit4 << 1) | inpit5;
       
        Serial.print("Code #1: "); Serial.println(sampleCode);
       
        // комбинируем биты в число, первый вход - младший бит, пятый вход - старший бит
        uint8_t sampleCode2 = (inpit5 << 4) | (inpit4 << 3) | (inpit3 << 2) | (inpit2 << 1) | inpit1;
    
        Serial.print("Code #2: "); Serial.println(sampleCode2);
       
        // конец примера
       
        uint16_t degr = convertCodeToDegrees(code);
       
        if(degr != 0xFFFF)
        {
            // тут получили корректное значение градусов
            Serial.print("Found degrees: "); Serial.println(degr);
        }
    }
    
    void loop()
    {
       
    }
    Массив values надо заполнить по порядку числами, соответствующими кодам, получаемым при том или ином градусе. Первое значение в массиве - 12 градусов, второе - 24 и т. п., до 30 значений. Это - просто пример, показано, как можно со входов получить код, из которого получить градусы. Нет pinMode, как минимум.
     
  10. Сергейфывчяфй
    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266

    Сергейфывчяфй

    Живу здесь

    Сергейфывчяфй

    Живу здесь

    Регистрация:
    25.02.12
    Сообщения:
    317
    Благодарности:
    266
    Дима, хороший пример, как раз вовремя.
     
  11. Gvvit
    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8

    Gvvit

    Живу здесь

    Gvvit

    Живу здесь

    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8
    Адрес:
    Саяногорск
    Я отправляю СМС(#5) на номер теплицы, ответ мне пиходит с другого номера "Платёж ринят. Получатель ПАО МегаФон *номер теплицы* сумма 5 руб. комиссия 0 руб.
    Да перебрасывается питание. В мониторе посмотрю, отпишусь.
    Получается так: кто первый сконектится с gardenboss. ru тот и работает нормально, а второй постоянно перебрасывает питание. Если первой была ESP то SIM800 перебрасывает питание, а иначе на оборот.
    MQTT оставил, хочу разобраться с этим зверем если мозг не вынесет он мне первый.

    Да. с третьего раза прошилась и работает нормально, данные шлёт на gardenboss. ru с Теплички в Саяногорске.
    Понял. это попробую сделать чуть попозже.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Я ничего такого не делаю. Возможно, у Мегафона свой взгляд на жизнь. Советую для начала попробовать с другим оператором.

    Этому ВСЕГДА есть причины, включайте HTTP_DEBUG, WIFI_DEBUG, MQTT_DEBUG, GSM_DEBUG - и смотрите логи в мониторе порта.

    Жду логов с монитора порта, без них - ничего не могу сказать определённо. Когда крайний раз проверял - работало всё нормально, но после этого уже столько правок было, что всё возможно.
     
  13. Gvvit
    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8

    Gvvit

    Живу здесь

    Gvvit

    Живу здесь

    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8
    Адрес:
    Саяногорск
    Завтра, а нет уже сегодня буду "пытать" своего "питомца". Что наработаю выложу.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.310
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    С монитора порта программой Terminal (гуглится) можно перенаправить вывод в файл. Посмотрел код - криминала не увидел сходу, опрос провайдеров доступа к HTTP идёт не параллельно, а последовательно, т. е. только если не получилось через одного - идёт опрос через другого. Почему у вас то одно, то другое перезагружается - тайна сия великая есть, которую без простыни логов - не решить. Мне важно, чтобы в логах был отображён момент, когда что-то перезагружается, чтобы понять, что у вас происходит. Ну а далее - будем смотреть, что это - моя ошибка или что-то другое.
     
  15. Gvvit
    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8

    Gvvit

    Живу здесь

    Gvvit

    Живу здесь

    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8
    Адрес:
    Саяногорск
    Этого я не разу не делал, но утром на свежую голову поди разберусь.
    А уж мне то как хочется понять:)
     
Статус темы:
Закрыта.