Перейти к содержанию

ARMYMEN

Members
  • Постов

    181
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные ARMYMEN

  1. управление производится с помощью платы NODEmcu и подключенному к нему блоку из 4 реле, ну обязательно понижайка с 12в до 5в, еще нужно придумать как и куда установить серводвигатель для управлением тросом газа для поднятия оборотов до прогретого состояния

    8df0f7e33f1bt.jpg

     

     

    ссылка на код для ардуино https://drive.google.com/open?id=0B33mmVhClN4pbGhCSDZTaEFZSFk

    • Like 1

  2.  

    // Подключаем библиотеки:

    #include <OneWire.h>

    #include <Wire.h>;                            // подключаем библиотеку для работы с шиной I2C

    #include <LiquidCrystal_I2C.h>;               // подключаем библиотеку для работы с LCD дисплеем

    #include <iarduino_RTC.h>;                  // подключаем библиотеку для работы с RTC модулем

    LiquidCrystal_I2C lcd(0x3F,16,2);            // объявляем  переменную для работы с LCD дисплеем, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)

    iarduino_RTC time(RTC_DS1307);               // объявляем  переменную для работы с RTC модулем,  указывая название модуля

     

    OneWire  ds(10);  // on pin 10

     

    // Объявляем переменные и константы:

    const uint8_t PIN_button_SET  = 2;           // указываем номер вывода arduino, к которому подключена кнопка SET

    const uint8_t PIN_button_UP   = 3;           // указываем номер вывода arduino, к которому подключена кнопка UP

    const uint8_t PIN_button_DOWN = 4;           // указываем номер вывода arduino, к которому подключена кнопка DOWN

          uint8_t VAR_mode_SHOW   = 1;           // режим вывода: 1-время 2-дата

          uint8_t VAR_mode_SET    = 0;           // режим установки времени: 0-нет 1-сек 2-мин 3-час 4-день 5-мес 6-год 7-день_недели

    void setup() {

      pinMode(PIN_button_SET,  INPUT);           // устанавливаем режим работы вывода кнопки, как "вход"

      pinMode(PIN_button_UP,   INPUT);           // устанавливаем режим работы вывода кнопки, как "вход"

      pinMode(PIN_button_DOWN, INPUT);           // устанавливаем режим работы вывода кнопки, как "вход"

      delay(300);                                // ждем 300мс

      time.begin();                              // инициируем RTC модуль

      lcd.init();                                // инициируем LCD дисплей

      lcd.backlight();                           // включаем подсветку LCD дисплея

      Serial.begin(9600);

    }

    void loop(){

      if(millis()%1000==0){                      // если прошла 1 секунда

          lcd.setCursor(0, 0);                   // устанавливаем курсор в позицию: столбец 0, строка 0

          lcd.print("DELICA  t");              // выводим текст "iArduino.ru"

          lcd.setCursor(0, 1);                   // устанавливаем курсор в позицию: столбец 0, строка 1

        if(VAR_mode_SHOW==1){                    // если установлен режим вывода времени

          lcd.print(time.gettime("H:i:s"));      // выводим время

        }

        if(VAR_mode_SHOW==2){                    // если установлен режим вывода даты

          lcd.print(time.gettime("d-m-Y   D"));  // выводим дату

        }

        delay(1);                                // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс

     // temperature sensor

      

      byte i;

      byte present = 0;

      byte type_s;

      byte data[12];

      byte addr[8];

      float celsius, fahrenheit;

      

      if ( !ds.search(addr)) {

        Serial.println("No more addresses.");

        Serial.println();

        ds.reset_search();

        delay(250);

        return;

      }

      

      Serial.print("ROM =");

      for( i = 0; i < 8; i++) {

        Serial.write(' ');

        Serial.print(addr, HEX);

      }

     

      if (OneWire::crc8(addr, 7) != addr[7]) {

          Serial.println("CRC is not valid!");

          return;

      }

      Serial.println();

     

      // the first ROM byte indicates which chip

      switch (addr[0]) {

        case 0x10:

          Serial.println("  Chip = DS18S20");  // or old DS1820

          type_s = 1;

          break;

        case 0x28:

          Serial.println("  Chip = DS18B20");

          type_s = 0;

          break;

        case 0x22:

          Serial.println("  Chip = DS1822");

          type_s = 0;

          break;

        default:

          Serial.println("Device is not a DS18x20 family device.");

          return;

      } 

     

      ds.reset();

      ds.select(addr);

      ds.write(0x44,1);         // start conversion, with parasite power on at the end

      

      delay(1000);     // maybe 750ms is enough, maybe not

      // we might do a ds.depower() here, but the reset will take care of it.

      

      present = ds.reset();

      ds.select(addr);    

      ds.write(0xBE);         // Read Scratchpad

     

      Serial.print("  Data = ");

      Serial.print(present,HEX);

      Serial.print(" ");

      for ( i = 0; i < 9; i++) {           // we need 9 bytes

        data = ds.read();

        Serial.print(data, HEX);

        Serial.print(" ");

      }

      Serial.print(" CRC=");

      Serial.print(OneWire::crc8(data, 8), HEX);

      Serial.println();

     

      // convert the data to actual temperature

     

      unsigned int raw = (data[1] << 8) | data[0];

      if (type_s) {

        raw = raw << 3; // 9 bit resolution default

        if (data[7] == 0x10) {

          // count remain gives full 12 bit resolution

          raw = (raw & 0xFFF0) + 12 - data[6];

        }

      } else {

        byte cfg = (data[4] & 0x60);

        if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms

        else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms

        else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms

        // default is 12 bit resolution, 750 ms conversion time

      }

      celsius = (float)raw / 16.0;

      fahrenheit = celsius * 1.8 + 32.0;

      //Serial.print("  Temperature = ");

      //Serial.print(celsius);

      //Serial.print(" Celsius, ");

      //lcd.init();                      // initialize the lcd 

     // lcd.init();

      // Print a message to the LCD.

     // lcd.backlight();

      lcd.setCursor(10,0);

      lcd.print(celsius);

     

      }

      

      

      

      Func_buttons_control();                    // передаём управление кнопкам

    }

    // Функция управления кнопками:

    void Func_buttons_control(){

      uint8_t i=0;

      time.blinktime(VAR_mode_SET);                                  // мигаем устанавливаемым параметром (если VAR_mode_SET больше 0)

    //Если часы находятся в режиме установки даты/времени

      if(VAR_mode_SET){

    //  Если нажата кнопка UP

        if(digitalRead(PIN_button_UP  )){

          while(digitalRead(PIN_button_UP)){delay(50);}              // ждём пока мы не отпустим кнопку UP

          switch (VAR_mode_SET){                                     // инкремент (увеличение) устанавливаемого значения

          /* сек */ case 1: time.settime(0,                                   -1, -1, -1, -1, -1, -1); break;

          /* мин */ case 2: time.settime(-1, (time.minutes==59?0:time.minutes+1), -1, -1, -1, -1, -1); break;

          /* час */ case 3: time.settime(-1, -1, (time.Hours==23?0:time.Hours+1),     -1, -1, -1, -1); break;

          /* дни */ case 4: time.settime(-1, -1, -1, (time.day==31?1:time.day+1),         -1, -1, -1); break;

          /* мес */ case 5: time.settime(-1, -1, -1, -1, (time.month==12?1:time.month+1),     -1, -1); break;

          /* год */ case 6: time.settime(-1, -1, -1, -1, -1, (time.year==99?0:time.year+1),       -1); break;

          /* д.н.*/ case 7: time.settime(-1, -1, -1, -1, -1, -1, (time.weekday==6?0:time.weekday+1) ); break;

          }

        }

    //  Если нажата кнопка DOWN

        if(digitalRead(PIN_button_DOWN)){

          while(digitalRead(PIN_button_DOWN)){delay(50);}            // ждём пока мы её не отпустим

          switch (VAR_mode_SET){                                     // декремент (уменьшение) устанавливаемого значения

          /* сек */ case 1: time.settime(0,                                   -1, -1, -1, -1, -1, -1); break;

          /* мин */ case 2: time.settime(-1, (time.minutes==0?59:time.minutes-1), -1, -1, -1, -1, -1); break;

          /* час */ case 3: time.settime(-1, -1, (time.Hours==0?23:time.Hours-1),     -1, -1, -1, -1); break;

          /* дни */ case 4: time.settime(-1, -1, -1, (time.day==1?31:time.day-1),         -1, -1, -1); break;

          /* мес */ case 5: time.settime(-1, -1, -1, -1, (time.month==1?12:time.month-1),     -1, -1); break;

          /* год */ case 6: time.settime(-1, -1, -1, -1, -1, (time.year==0?99:time.year-1),       -1); break;

          /* д.н.*/ case 7: time.settime(-1, -1, -1, -1, -1, -1, (time.weekday==0?6:time.weekday-1) ); break;

          }

        }

    //  Если нажата кнопка SET

        if(digitalRead(PIN_button_SET)){

          while(digitalRead(PIN_button_SET)){                        // ждём пока мы её не отпустим

            delay(10);

            if(i<200){i++;}else{lcd.clear();}                        // фиксируем, как долго удерживается кнопка SET, если дольше 2 секунд, то стираем экран

          }

          if(i<200){                                                 // если кнопка SET удерживалась меньше 2 секунд

            VAR_mode_SET++;                                          // переходим к следующему устанавливаемому параметру

            if(VAR_mode_SHOW==1 && VAR_mode_SET>3){VAR_mode_SET=1;}  // возвращаемся к первому устанавливаемому параметру

            if(VAR_mode_SHOW==2 && VAR_mode_SET>7){VAR_mode_SET=4;}  // возвращаемся к первому устанавливаемому параметру

          }else{                                                     // если кнопка SET удерживалась дольше 2 секунд, то требуется выйти из режима установки даты/времени

            VAR_mode_SET=0;                                          // выходим из режима установки даты/времени

          }

        }

    //Если часы находятся в режиме вывода даты/времени

      }else{

    //  Если нажата кнопка SET

        if(digitalRead(PIN_button_SET)){

          while(digitalRead(PIN_button_SET)){delay(10);              // ждём пока мы её не отпустим

            if(i<200){i++;}else{lcd.clear();}                        // фиксируем, как долго удерживается кнопка SET, если дольше 2 секунд, то стираем экран

          }

          if(i<200){                                                 // если кнопка SET удерживалась меньше 2 секунд

            lcd.clear();                                             // стираем экран

            VAR_mode_SHOW=VAR_mode_SHOW==1?2:1;                      // меняем режим вывода: дата/время

          }else{                                                     // если 

            if(VAR_mode_SHOW==1){VAR_mode_SET=1;}                    // если установлен режим вывода времени, то устанавливаемый параметр - секунды

            if(VAR_mode_SHOW==2){VAR_mode_SET=4;}                    // если установлен режим вывода даты,    то устанавливаемый параметр - день

          }

        }

      }

    }

  3. кнопкой SET переключение между датой и временем

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

    http://lesson.iarduino.ru/page/urok-17-podklyuchenie-rtc-chasy-realnogo-vremeni-s-knopkami/

  4. И снова всем здрасте в продолжении темы, закончил работу с часами для кубоходика

    -индикация даты

    -индикация времени

    -индикация температуры за бортом(или еще где нибудь, смотря куда установите датчик)

    2d4a91597b51.jpg

  5. Спасибо за информацию) Будет время тоже займусь) только экран хочу слева от руля, где часы в панели должны быть.

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

  6. интересно) если не сложно, можешь написать название модулей или ссылки на али. И подскажи как программировал ардуино?

     

    Было бы не плохо сделать мини бортовой компьютер. Чтоб за температурой двигателя следил и мерзко пищал если она ползет к максимуму. Исходя из скорости и оборотов показывал бы расход топлива. Может даже связь со сматфоном на андроиде. 

     I2C IIC Серийный 128X64 OLED LCD LED Дисплей Модуль  LM317 DC-DC преобразователь постоянного тока - в роли понижающего с 12в на 5 в

         модуль напряжения для ардуино https://www.aliexpress.com/item-img/Voltage-detection-module-Voltage-sensor-Electronic-blocks-For-arduino/32764626535.html?spm=2114.10010208.1000017.2.Q3VjoY

    #include <OLED_I2C.h>
    OLED  myOLED(SDA, SCL, 8);
    extern uint8_t RusFont[];
    extern uint8_t TinyFont[];
    const float R1 = 30020;
    const float R2 = 7501;
    const float Uref = 4.75;//вот с этим числом нужно поиграться для установки более точных показаний
     
    int sensorPin = 0;
    float sensorValue = 0;
    float outputValue = 0;
     
    float Uin = Uref * ((R1+R2)/R2);
     
    void setup()
    {
      myOLED.begin();
      myOLED.setFont(TinyFont);  
      Serial.begin(9600);
    }
    void loop()
    {
      sensorValue = analogRead(sensorPin);
      outputValue = (sensorValue * Uin) / 1024.00;
      myOLED.clrScr();
      myOLED.print(String(outputValue), CENTER,20);
      myOLED.setFont(RusFont);
      myOLED.print("LTKBRF RE,BR", CENTER, 0);  
      myOLED.print("<JHNJDJT YFGHZ:TYBT =", LEFT,10);
      myOLED.print("NEH<BYF =", LEFT,30);  
      myOLED.update();
      delay (500);
      }

    открываете arduino ide копируете скетч и подключаете все к arduino nano, в сети очень много примеров и объяснений что и куда

  7. если кого то заинтересует могу скинуть скетч для ардуино IDE (програматор), в дальнейшем собираюсь разместить температуру за бортом, компас, и часы на базе дисплея

    d761fffda3b8.jpg
     
    установить все это вместо штатных часиков
     

     

  8. всем здрасте, в продолжении темы о доработке наших кубоходов, решил добавить немного в панель приборов а именно вольтметр и датчик давления турбины(сам датчик пока не куплен но выведен да дисплей) данная схема собрана на базе arduino nano v3, регулятор напряжения на LM 317 (обеспечивает питание платы от борт сети) и модуля напряжения для ардуино все это можно купить на али.

    ардуино=150 руб

    регулятор=60 руб

    модуль напряжения = 60 руб

    OLED дисплей = 180 руб

    пожалуй самый дорогой в этой конструкции будет датчик турбины его стоимость около 900 руб

     

    d0d46f4f4909.jpg
     
    390c57f31e15.jpg
    • Like 1
  9. fbf69c9ab506.jpg кажется меня не поняли, у меня износ в этой части рулевой, оригинал дорогой вот размышляю о колхозе.сошки заменить, износ в бронзовой части кронштейна.

     

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

    SD7260.jpg

    555 SD-7260,

    00f6e996bdb0b3b68959357ddf808283e1.jpeg

     

    CAR-DEX CAH801

    кароч по ним тоже промах, хотя я 555 просто переварил наконечник в другую с торону и проехал более 2000 тыс, полет нормальный, купил тяги рулевые от галлопера в сборе встали как родненкие

    у нас есть ремкомплекты чтобы редуктор рулевой перетрусить?

  10. кубоход теперь живет в Астраханской области! сам проехал 1300км, из поломок трубка тнвд 4я лопнула, поставил в дороге от опеля, и 3 раза лопнул шланг(шланги) охолождайки! первые 300 км - 70км\ч, больше - грелась, потом больше, больше.. с Волгограда шел почти 110 - темература была 104градуса! расход 10 литров стабильно! пока не чего не собирал и не делал... с инетом тут туго, но постараюсь отправлять!  

    кароч такая же беда с трубкой,4 на..... оторвалась пришлось 300 км ехать на 3 через 3 горных перевала

  11. Всем здарова! Есть тут одна мысля, оборудовать наши машинки борт компьютером, устроить его на базе Arduino и тому подобное, вывести индикацию на дисплей 4 строчный LCD или OLED дисплей, снимать показания буста турбины , показания заряда, показания темпрературы ож, давления масла например, если кто-то работал в этой среде и знает язык C++ или просто эта тема оч интересна пишите в личку или если хотите создадим тему отдельно, данное борт устройство подойдет для всех

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

    SD7260.jpg

    555 SD-7260,

    00f6e996bdb0b3b68959357ddf808283e1.jpeg

     

    CAR-DEX CAH801

  13. Сегодня по трассе разогнал до 115км.ч кубика на 5-й передаче по ровной дороге... маловато для 2л движка.. хз мож парусность не дает.. кто сколько по ровной дороге едет на бензине? Кстати сделал первую вылазку 600км общей протяженностью.. все отлично на трассе идет уверено не кидает.. иногда небольшая раскачка но без напряга мне даже нравится как на рейсовом автобусе)

    а меня вот раскачка ооооочень напрегала, после 1000км ходишь как после поезда 3-х суточного, отсюда возникает вопрос как с ней бороться потому что по дорогам крыма это было очень выражено+ боковой ветер, у тебя задний стабилизатор стоит? какие аммо ?у меня exel-g KYB говорят мягкие. 

×
×
  • Создать...