Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Dima
2016-04-13 10:41:27
alex_dol пише:

Данный код вставить не получится, так как это часть другой программы, его надо адаптировать для вашей программы - изменить или добавить переменные и функции.
Second, Minute, Hour ... - переменные в них хранятся соответствующие значения.
bcd2dec - функция преобразования формата чисел.
Print_Digits - функция преобразования числа в строку.

а можно пример
а то я совсем туго

alex_dol
2016-04-13 09:32:00

Данный код вставить не получится, так как это часть другой программы, его надо адаптировать для вашей программы - изменить или добавить переменные и функции.
Second, Minute, Hour ... - переменные в них хранятся соответствующие значения.
bcd2dec - функция преобразования формата чисел.
Print_Digits - функция преобразования числа в строку.

Dima
2016-04-12 11:05:10
Dima
2016-04-12 10:46:05
alex_dol пише:

Надо писать свой обработчик или спросить у гугла.
Когда то давно я писал свой, не помню рабочий ли он на 100%. Вот код, это кусок из программы, но смысл понятен. Поправиш его под свои нужды.

Loop:
    //блок считывания текущего времени и даты
    Wire.beginTransmission(0x68);
    Wire.write((byte)0);
    Wire.endTransmission();
    Wire.requestFrom(0x68, 7);
    //    if (Wire.available() < 7) return;
    Second = bcd2dec(Wire.read() & 0x7f);
    Minute = bcd2dec(Wire.read() );
    Hour =   bcd2dec(Wire.read() & 0x3f);  // mask assumes 24hr clock
    Wday = Wire.read();
    Day = bcd2dec(Wire.read() );
    Month = bcd2dec(Wire.read() );
    Year = bcd2dec(Wire.read() ); //отсчет с 2000 года

    //блок подготовки строк для вывода на дисплей
    Print_Digits(output_string_1, 4, 2, ' ', Hour); //4,0
    output_string_1[6] = ':';
    Print_Digits(output_string_1, 7, 2, '0', Minute); //7,0
    output_string_1[9] = ':';
    Print_Digits(output_string_1, 10, 2, '0', Second); //10,0

    Print_Digits(output_string_2, 3, 2, ' ', Day); //3,1
    output_string_2[5] = '/';
    Print_Digits(output_string_2, 6, 2, '0', Month); //6,1
    output_string_2[8] = '/';
    Print_Digits(output_string_2, 9, 4, '0', Year + 2000); //9,1

    //вывод на дисплей
    lcd.clear();
    lcd.print(output_string_1);
    lcd.setCursor(0, 1);
    lcd.print(output_string_2);

    //считываем нажатия кнопок
    key = 0;
    if (!digitalRead(GasButonPin)) key = 2;
    if (!digitalRead(BenzButonPin)) key = 3;
    if (analogRead(ButonsPin) < 100) key = 1;
    if (key) delay(500);
    else delay(100);

    //корректируем время/дату
    switch (Cursor) {
      case 0: //часы
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Hour > 0) Hour--;
            break;
          case 3: // +
            if (Hour < 23) Hour++;
            break;
        }
        lcd.setCursor(4, 0);
        break;

      case 1: //минуты
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Minute > 0) Minute--;
            break;
          case 3: // +
            if (Minute < 60) Minute++;
            break;
        }
        lcd.setCursor(7, 0);
        break;

      case 2: //секунды
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Second > 0) Second--;
            break;
          case 3: // +
            if (Second < 60) Second++;
            break;
        }
        lcd.setCursor(10, 0);
        break;

      case 3: //день
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Day > 1) Day--;
            break;
          case 3: // +
            if (Day < 31) Day++;
            break;
        }
        lcd.setCursor(3, 1);
        break;

      case 4: //месяц
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Month > 1) Month--;
            break;
          case 3: // +
            if (Month < 12) Month++;
            break;
        }
        lcd.setCursor(6, 1);
        break;

      case 5: //год
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Year > 16) Year--;
            break;
          case 3: // +
            if (Year < 250) Year++;
            break;
        }
        lcd.setCursor(9, 1);
        break;
    }

    //записываем время если были нажаты клавиши + или -
    if (key > 1)
    {
      Second |= 0x80;  // stop the clock
      Wire.beginTransmission(0x68);
      Wire.write((uint8_t)0x00); // reset register pointer
      Wire.write(dec2bcd(Second)) ;
      Wire.write(dec2bcd(Minute));
      Wire.write(dec2bcd(Hour));      // sets 24 hour format
      Wire.write(Wday);
      Wire.write(dec2bcd(Day));
      Wire.write(dec2bcd(Month));
      Wire.write(dec2bcd(Year));
      Wire.endTransmission();

      Second &= 0x7f;  // start the clock
      Wire.beginTransmission(0x68);
      Wire.write((uint8_t)0x00); // reset register pointer
      Wire.write(dec2bcd(Second)) ;
      Wire.endTransmission(); //!!!!!!!!!!!!!!!!!!!!!!!!!! проверить или будет работать с неполной передачей данных!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    }
    goto Loop; //зацикливаем настройку, выход из настройки - выключением
  }

извините за глупый вопрос но где его правильно вставить?

alex_dol
2016-04-09 21:09:18

Надо писать свой обработчик или спросить у гугла.
Когда то давно я писал свой, не помню рабочий ли он на 100%. Вот код, это кусок из программы, но смысл понятен. Поправиш его под свои нужды.

Loop:
    //блок считывания текущего времени и даты
    Wire.beginTransmission(0x68);
    Wire.write((byte)0);
    Wire.endTransmission();
    Wire.requestFrom(0x68, 7);
    //    if (Wire.available() < 7) return;
    Second = bcd2dec(Wire.read() & 0x7f);
    Minute = bcd2dec(Wire.read() );
    Hour =   bcd2dec(Wire.read() & 0x3f);  // mask assumes 24hr clock
    Wday = Wire.read();
    Day = bcd2dec(Wire.read() );
    Month = bcd2dec(Wire.read() );
    Year = bcd2dec(Wire.read() ); //отсчет с 2000 года

    //блок подготовки строк для вывода на дисплей
    Print_Digits(output_string_1, 4, 2, ' ', Hour); //4,0
    output_string_1[6] = ':';
    Print_Digits(output_string_1, 7, 2, '0', Minute); //7,0
    output_string_1[9] = ':';
    Print_Digits(output_string_1, 10, 2, '0', Second); //10,0

    Print_Digits(output_string_2, 3, 2, ' ', Day); //3,1
    output_string_2[5] = '/';
    Print_Digits(output_string_2, 6, 2, '0', Month); //6,1
    output_string_2[8] = '/';
    Print_Digits(output_string_2, 9, 4, '0', Year + 2000); //9,1

    //вывод на дисплей
    lcd.clear();
    lcd.print(output_string_1);
    lcd.setCursor(0, 1);
    lcd.print(output_string_2);

    //считываем нажатия кнопок
    key = 0;
    if (!digitalRead(GasButonPin)) key = 2;
    if (!digitalRead(BenzButonPin)) key = 3;
    if (analogRead(ButonsPin) < 100) key = 1;
    if (key) delay(500);
    else delay(100);

    //корректируем время/дату
    switch (Cursor) {
      case 0: //часы
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Hour > 0) Hour--;
            break;
          case 3: // +
            if (Hour < 23) Hour++;
            break;
        }
        lcd.setCursor(4, 0);
        break;

      case 1: //минуты
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Minute > 0) Minute--;
            break;
          case 3: // +
            if (Minute < 60) Minute++;
            break;
        }
        lcd.setCursor(7, 0);
        break;

      case 2: //секунды
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Second > 0) Second--;
            break;
          case 3: // +
            if (Second < 60) Second++;
            break;
        }
        lcd.setCursor(10, 0);
        break;

      case 3: //день
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Day > 1) Day--;
            break;
          case 3: // +
            if (Day < 31) Day++;
            break;
        }
        lcd.setCursor(3, 1);
        break;

      case 4: //месяц
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Month > 1) Month--;
            break;
          case 3: // +
            if (Month < 12) Month++;
            break;
        }
        lcd.setCursor(6, 1);
        break;

      case 5: //год
        switch (key) {
          case 1: //следующая
            Cursor++;
            if (Cursor > 5) Cursor = 0;
            break;
          case 2: // -
            if (Year > 16) Year--;
            break;
          case 3: // +
            if (Year < 250) Year++;
            break;
        }
        lcd.setCursor(9, 1);
        break;
    }

    //записываем время если были нажаты клавиши + или -
    if (key > 1)
    {
      Second |= 0x80;  // stop the clock
      Wire.beginTransmission(0x68);
      Wire.write((uint8_t)0x00); // reset register pointer
      Wire.write(dec2bcd(Second)) ;
      Wire.write(dec2bcd(Minute));
      Wire.write(dec2bcd(Hour));      // sets 24 hour format
      Wire.write(Wday);
      Wire.write(dec2bcd(Day));
      Wire.write(dec2bcd(Month));
      Wire.write(dec2bcd(Year));
      Wire.endTransmission();

      Second &= 0x7f;  // start the clock
      Wire.beginTransmission(0x68);
      Wire.write((uint8_t)0x00); // reset register pointer
      Wire.write(dec2bcd(Second)) ;
      Wire.endTransmission(); //!!!!!!!!!!!!!!!!!!!!!!!!!! проверить или будет работать с неполной передачей данных!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    }
    goto Loop; //зацикливаем настройку, выход из настройки - выключением
  }
Dima
2016-04-09 11:33:23

подскажите как сделать чтоб
время выставлять с помощью кнопок
а не через пк

Nefreemen
2016-03-26 15:34:51

Отличные обороты. На пол оборота 2.5 минуты, то что доктор прописал ( почти ) big_smile .

Dima
2016-03-26 12:39:45

усилия хватает а вот как
замутить переворот на нем
он делает один оборот за 5-ть
минут мотор на 220в

Nefreemen
2016-03-24 22:51:18

Знаю такой моторчик. Когда то таким небольшую елочку вращал  smile . Они бывают разными, на разное напряжение и разной редукцией. Приделайте рычаг и померьте усилие ручными весами (кантером) какое  удерживает (до проворачивания) и какое подымает ( тянет) и делайте вывод. Если ось подвеса лотка будет под днищем тогда важно усилие на валу и делать "компенсатор" провала (как я сделал). Если сделать ось подвеса в другом месте лотка картина будет другая ( и не факт что Вы найдете способ устранения прокручивания). Надо быть реалистом, и понимать что это не рычажные весы и сбалансировать лоток на практике не реально (выбраковка яиц, изменение их веса со временем и пр.). Очень важна скорость поворота ( это очень важно! ) и плавность. К стати подумайте над вот этим http://alfa-vest.com.ua/p88883245-shnur … urnyj.html или http://ukrferma.com.ua/products/7688517

Dima
2016-03-24 15:48:05
  • a130621562c2t.jpg

вот таким двиглом хочу переварачивать

Nefreemen
2016-03-20 22:04:56

Dima, подберите на аукро или олексе двигатель РД-09 только без никаких "П" и "П2" (особо обращаю Ваше внимание), с оборотами около 2 в минуту (цена вопроса около 90 грн.). Этот вариант проверен и не только мной. У меня такой двигатель держит  лоток 43х47 см (рычаг лотка 23.5 см) с 35 гусиными яйцами (гусиное яйцо в среднем 190 гр  big_smile  ). Рычаг на валу двигателя 9 см. С двумя и более лотками прокручивается ("проваливаются" лотки), пришлось резиновыми натяжителями убирать "провалы"  sad .

Dima
2016-03-20 21:31:12
Nefreemen пише:

Dima, если Вы думаете что главное это управление двигателем то очень сильно заблуждаетесь. Сделайте пожалуйста механику, поставьте двигатель и по управляйте двигателем в ручном режиме поворотом и сразу все поймете lol . Вы не внимательно читали пост #37. Ручная дрель метал сверлит и имеет не хилое усилие на валу но вы можете без особых усилий рукой провернуть патрон  big_smile. Вот когда у Вас будет в "железе" работающая механика, тогда и будем править скетч под нее. Не помню который раз но еще раз повторю, главное это работающий инкубатор с поворотом, нагревателем и увлажнителем (реально работающий а не где то "представлении"). Я тоже когда то был таким же самоуверенным, что конструкция будет работать  lol  lol . Как потом оказалось программа это может  5% задачи.

понятно значит буду без шаговика городить
и дальше голову ломать о перевороте
у меня нет возможности в ручную поворачивать
а яйца спалить жалко да и смысл их класть в духовый шкаф

Nefreemen
2016-03-20 20:55:55

Dima, если Вы думаете что главное это управление двигателем то очень сильно заблуждаетесь. Сделайте пожалуйста механику, поставьте двигатель и по управляйте двигателем в ручном режиме поворотом и сразу все поймете lol . Вы не внимательно читали пост #37. Ручная дрель метал сверлит и имеет не хилое усилие на валу но вы можете без особых усилий рукой провернуть патрон  big_smile. Вот когда у Вас будет в "железе" работающая механика, тогда и будем править скетч под нее. Не помню который раз но еще раз повторю, главное это работающий инкубатор с поворотом, нагревателем и увлажнителем (реально работающий а не где то "представлении"). Я тоже когда то был таким же самоуверенным, что конструкция будет работать  lol  lol . Как потом оказалось программа это может  5% задачи.

Dima
2016-03-20 20:04:44
Nefreemen пише:
Dima пише:

Так как Вы собрались делать поворот? Если кривошип то двигатель может вращаться в одну сторону.

да хочу кривошип но ничего не выходит как в этот скеч,
заделать скеч шаговика и соединить вместе

Так Вы определитесь чем вращаете. То сервой то шаговиком Вас не поймешь roll


да шаговик из принтера на 4 тыре вывода

Nefreemen
2016-03-20 19:42:10
Dima пише:

Так как Вы собрались делать поворот? Если кривошип то двигатель может вращаться в одну сторону.

да хочу кривошип но ничего не выходит как в этот скеч,
заделать скеч шаговика и соединить вместе

Так Вы определитесь чем вращаете. То сервой то шаговиком Вас не поймешь roll

Підвал форуму