Хотелось бы совета

  • В этой теме 32 ответа, 5 участников, последнее обновление 3 года сделано Sergey_r.
Просмотр 15 сообщений - с 1 по 15 (из 33 всего)
  • Автор
    Сообщения
  • #54584
    Dark
    Участник
    • Ответов: 864
    @dark

    Совершенно пьяный Dark, думал и вот что у него получилось :

    5 датчиков температуры

    10 клапанов

    2 управления тэнами

    3 мотора

    Минимальная хотелка в автоматике.

    Температура (бак, царга, узел отбора, охлаждающая жидкость, температура продукта)

    Клапана (подача воды(или мотор один насоса) открытие отбора, 6 отбор по емкостям, верхний и Нижний отбор)

    Тэны(один разгонный, и один основной)

    Моторы (подача воды охлаждения, мешалка, насос сусла)

    Весы под вопросом.

    Может что пропустил

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #60709
    Dark
    Участник
    • Ответов: 864
    @dark

    Чтобы не плодить тем. Может кто сталкивался с подключением нескольких esp по шине i2c, c разным количеством подключённых модулей i2c на каждой. Вопрос возможно ли организовать две шины i2c для каждого устройства, или они все будут весеть на одной?

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #62819
    Андрей
    Участник
    • Ответов: 1082
    @5-158

    На квадратной шине должно находиться ОДНО мастер устройство и несколько подчиненных. При использовании аппаратной шины I2C, ESP может работать ТОЛЬКО в режиме мастер. Поэтому в подчиненных устройствах необходимо будет реализовать программный I2C.

    Опять же никто не запрещает, используя программный протокол, назначать под него имеющиеся пины.

    #73641
    Dark
    Участник
    • Ответов: 864
    @dark

    Трезвый ум творит всякую чепуху, вот что получилось, и есть мысля что этот код можно чуток оптимизировать:

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <iarduino_I2C_connect.h>
    //#include <LiquidCrystal_I2C.h>
    //LiquidCrystal_I2C lcd(0x27,20,4);
    iarduino_I2C_connect I2C2;
    int Tem_pin[8]={1, 2,3,4,5,6,7,8}; //номера пинов к которым подключенны датчики
    int Temp_dal[8]={0,0,0,0,0,0,0,0};
    int work_on = 0;
    int work_rez = 0;// пока резерв
    OneWire mt_ds_1(Tem_pin[0]);
    OneWire mt_ds_2(Tem_pin[1]);
    OneWire mt_ds_3(Tem_pin[2]);
    OneWire mt_ds_4(Tem_pin[3]);// резерв

    OneWire dt_ds_1(Tem_pin[4]);
    OneWire dt_ds_2(Tem_pin[5]);
    OneWire dt_ds_3(Tem_pin[6]);
    OneWire dt_ds_4(Tem_pin[7]);// резерв

    DallasTemperature sensor_main1(&mt_ds_1);
    DallasTemperature sensor_main2(&mt_ds_2);
    DallasTemperature sensor_main3(&mt_ds_3);
    DallasTemperature sensor_main4(&mt_ds_4);// резерв

    DallasTemperature sensor_safuty1(&dt_ds_1);
    DallasTemperature sensor_safuty2(&dt_ds_2);
    DallasTemperature sensor_safuty3(&dt_ds_3);
    DallasTemperature sensor_safuty4(&dt_ds_4);// резерв

    byte Temp_Massive[38];

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    Wire.begin(0x02);
    I2C2.begin(Temp_Massive);
    sensor_main1.begin();
    sensor_main2.begin();
    sensor_main3.begin();
    sensor_main4.begin();
    sensor_safuty1.begin();
    sensor_safuty2.begin();
    sensor_safuty3.begin();
    sensor_safuty4.begin();
    }

    void loop() {
    // put your main code here, to run repeatedly:
    switch (work_on){
    case 0:{
    work_on = Temp_Massive[0]<<8; // Считываем указатель начала работы
    work_on += Temp_Massive[1];
    work_rez = Temp_Massive[2]<<8; // Считываем указатель режим работы – резерв – или другое
    work_rez += Temp_Massive[3];
    break;
    }
    case 1:{
    int t=0;
    for (int i=4;i<20;i=i+2){
    Temp_dal[t] = Temp_Massive<<8; // Считываем используемые датчики
    Temp_dal[t] += Temp_Massive;
    if (Temp_dal[t]=1) { // Если датчик используется то запрашиваем температуру
    switch (t){
    case 0:{
    sensor_main1.requestTemperatures();
    break;
    }
    case 1:{
    sensor_main2.requestTemperatures();
    break;
    }
    case 2:{
    sensor_main3.requestTemperatures();
    break;
    }
    case 3:{
    sensor_main4.requestTemperatures();
    break;
    }
    case 4:{
    sensor_safuty1.requestTemperatures();
    break;
    }
    case 5:{
    sensor_safuty2.requestTemperatures();
    break;
    }
    case 6:{
    sensor_safuty3.requestTemperatures();
    break;
    }
    case 7:{
    sensor_safuty4.requestTemperatures();
    break;
    }
    }
    }
    t==t++;
    }
    float temp_temp;
    for(int i=0;i<8;i++){
    if (Temp_dal[t]=1) { // Если датчик используется то запрашиваем температуру
    switch (t){
    case 0:{
    temp_temp == sensor_main1.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 1:{
    temp_temp == sensor_main2.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 2:{
    temp_temp == sensor_main3.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 3:{
    temp_temp == sensor_main4.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 4:{
    temp_temp == sensor_safuty1.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 5:{
    temp_temp == sensor_safuty2.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 6:{
    temp_temp == sensor_safuty3.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    case 7:{
    temp_temp == sensor_safuty4.getTempCByIndex(0);
    t== temp_temp*100;
    Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
    Temp_Massive[21+(i*2)] = t;
    t==0;
    break;
    }
    }
    }
    }
    Temp_Massive[36] = work_on>>8; // отправляем данные что приступили к работе
    Temp_Massive[37] = work_on;
    break;
    }
    }
    }

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #73895
    Dark
    Участник
    • Ответов: 864
    @dark

    Спасибо Sergey_r, что не вмешивались в процесс, Dark, пьяный, но еще большое содержание крови в алкоголе.

    Обидно, ошибку на самом видном месте и ни кто не сказал, маленькая подсказка про экранчик, ни кто не поинтересовался, а зачем тебе Dark, там такая приблуда, ну да ладно.

    Описание, модуль контроля температуры, при установки экрана 4х20, и парочки изменений, получаем простой индикатор температуры на 8 точек. В автоматике будет всегда с номером 0x01 ошибся, с 0x02 пойдет модуль отбора на 6 клапанов и 2 крана, управление тэном будет скорее всего в самой простой конфигурации аналогично управлению тэном от Sergey_r, только управление будет по i2c и номер будет 0x03, контроль за безопасностью модуль с номером 0x04, весы с номером 0x05 , модуль охлаждения будет или такой-же как и модуль отбора но уже с номером 0x06 или просто будет использовать часть ресурсов модуля отбора, модуль управления всякими двигателями будет с номером 0x07, возможно в будущем, часть модулей можно будет устанавливать парами.

    Ну и самое не нужное модуль с номером 0x08, будет отвечать за вэб и всякие другие приблуды отображения.

    На сим Dark, уходит в запой нирвану.

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #73993
    Dark
    Участник
    • Ответов: 864
    @dark

    А теперь не много серьезного, после долгого отсутствия, замены нескольких компьютеров, встал вопрос о восстановление, схем, прошивок элементов лакибокса, центральный блок, управление тэном, весы и так далее, и Dark, не может столько пить, может сделать отдельную тему где размещать только схемы и прошивки, а все обсуждения удалять, а то не хочется писать люди подскажите где искать …. и получать ответ типа тебе чего лень три ветки сообщений посмотреть, или этот вопрос уже обсуждали три страницы назад.

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #75782
    Dark
    Участник
    • Ответов: 864
    @dark

    Черт, на каркал, подскажите как прошивать Ардуино нано, а то уно прошивается спокойно а нано выдаёт ошибки

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #75783
    Sergey_r
    Участник
    • Ответов: 2934
    @serjrv

    Черт, на каркал, подскажите как прошивать Ардуино нано, а то уно прошивается спокойно а нано выдаёт ошибки

    Так у них 2 типа бутлоадера встречается, в среде Ардуино можно из этих 2-х вариантов выбирать. Хотя конечно лучше лог ругачки показал бы.

    #75785
    Dark
    Участник
    • Ответов: 864
    @dark

    Примерно так.

    Второй файл с фоткой не нрузиться

    Вложения:
    Вы должны войти для просмотра вложений.

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #75808
    Sergey_r
    Участник
    • Ответов: 2934
    @serjrv

    Посмотри здесь, и на предыдущей странице я отписывался.

    #75809
    Dark
    Участник
    • Ответов: 864
    @dark

    Спасибо за помощь, поменял усб порт и выбрал старый загрузчик и все прошивается.

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #75826
    Stason553
    Участник
    • Ответов: 5
    @stason553

    Честно говоря, не понимаю как автоматизировать процесс.  Куб нагревается, царга нагревается,  срабатывает клапан воды, далее стабилизация, после этого открывается кран, начинается отбор голов. Почему после отбора голов в автоматическом режиме невозможно отобрать в другую емкость тело используя кран? Далее отжать хвосты в третью ёмкость. И только потом все процессы должны быть завершены, как мне кажется. Или я чего-то не понимаю? Интересует только отбор по пару с использованием роботизированного крана и клапанов отбора голов и тела

    #76287
    Dark
    Участник
    • Ответов: 864
    @dark

    Вопрос для умников, есть такой код:

    void test(){

    i=k; (допустим k=1)

    if (i=0) {} else{}

    if (i=1) {} else{}

    if (i=2) {} else{}

    }

    после этого кода получаем i=2, и к=1; внутри i и k ни где не используются, если if поменять местами, то i будет равно последнему условию в if, на всякий случай прошивка 72% переменные 71%. Ваше мнение? Sergey_r, не вмешиваемся

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

    #76308
    Андрей
    Участник
    • Ответов: 1082
    @5-158

    В СИ один символ “=” это операция присвоения значения. Поэтому i получает значение, присвоенное в последней строчке.

    В твоём случае нуно писать if (i==0) {}

    Посмотри в сторону case. Несмотря на то, что он тоже построен на условиях, мне кажется выходной объем меньше.

    Эта типа тестирования?

    Если внутри подпрограммы переменные i и k не модифицируются, нет необходимости i=k. Сократится число переменных. А если такое практикуется повсеместно – ещё высвободится память.

    #76325
    Dark
    Участник
    • Ответов: 864
    @dark

    Ищу того кто будет оптимизировать код 🙂

    Да! Я с виду шут, но в душе король, и ни кто как я не может...

Просмотр 15 сообщений - с 1 по 15 (из 33 всего)
  • Для ответа в этой теме необходимо авторизоваться.