#126 Re: Проекти » Большой робот на радио управлении » 2016-08-07 14:51:05

Теперь можно приделать у нему GPS модуль и память для сохранения маршрутов - будет сам ездить

#128 Re: Апаратні питання » arduino pro mini atmega128 5v 16 не видит передачу компа . » 2016-07-30 08:19:30

1. Подключить любую другую плату (не с али) и убедиться, что остатки arduino nano рабочие.
2. Написать любой скетч, в ИДЕ выбрать "Скетч - экспорт бинарного файла". Рядом с исходником создадутся 2 файлика.
3. Взять программатор и через SPI залить файлик содержащий бутлоадер. Заодно проверить правильность установки фьюз.
4. Подключить плату с али к остаткам arduino nano и проверить работоспособность.

#129 Re: Різне » Реле напряжения » 2016-07-28 08:36:16

Подобные вещи делаются елементарно, ничего сложного. Можно еще и дисплей прицепить для индикации напряжения и т.д.

#130 Re: Апаратні питання » Arduino без Bootloader'а » 2016-07-26 16:46:33

Этой фразой я хотел сказать, что если программатором залить скетч без бутлоадера и оставить фьюз старта без изменений (старт останется с области бутлоадера), то проц сначала обработает 2К "nop"ов, затем перейдет к основной программе. Время обработки 2К "nop"ов будет намного меньше 1 сек. Сам не раз забывал переустанавливать фьюз старта - что так, что с переустановленым - старт мгновенный.

#131 Re: Апаратні питання » Arduino без Bootloader'а » 2016-07-25 23:31:19

Nefreemen пише:

Вот я блин наивный  big_smile, все время думал что бутлоадер находится во флеш МК и прописывается один раз а фьюзы указывают размер и область бут-ра. При старте сначала стартует бут и потом передает управление программе (если нет команды на "заливку"). А оказывается хекс программы уже содержит бут, капец wink .

Если прочитать первое сообщение - там как раз и идет речь о заливке hex не содержащего бутлоадер сторонним программатором, а не о стандартных средствах ардуино. Ваши рассуждения относятся к стандартным средствам ардуино, но никто не запрещает работать с платой ардуино через ICSP.

Если использовать программатор, то:
бутлоадер находится во флеш МК - согласен, изначально он там есть, но я вместо него могу записать программатором что хочу.
прописывается один раз а фьюзы указывают размер и область бут-ра - а что мешает переписывать бутлоадер хоть по сто раз на день? В самой IDE есть пункт "записать бутлоадер".
старте сначала стартует бут и потом передает управление программе - опять же если он там есть, я могу его область заполнить "nop"ами или переписать фьюзы на старт с нулевого адреса, а не с бутлоадера.

Для ТС было важно выиграть время, которое бутлоадер тратит на ожидание команды на "заливку". Делал он вроде правильно, но "что-то пошло не так".
Я не вижу смысла развивать дискуссию дальше, мы говорим о разных вещах и похоже ТС тема уже не интересна.

#132 Re: Апаратні питання » Arduino без Bootloader'а » 2016-07-25 09:14:42

Nefreemen пише:

Откройте секрет что это за hex без загрузчика roll . И пока проц где то бегает я стою в лыжи обутый  roll

Выбираем: 1123.jpg
Получаем: 1122.jpg
Берем файлик без бутлоадера и заливаем любым программатором. Желательно также переустановить флаг старта. Если этого не сделать, программа будет стартовать с области бутлоадера, но так область бутлоадера забита "nop", проц пройдет по nop-ам до конца памяти и начнет сначала. Времени тратится примерно 2К / 16МГц = 0,0001 сек = 0.1 мсек.

#134 Re: Програмування Arduino » Допоможіть написати програму » 2016-07-20 09:58:44

evgeniy, если нужна долговечность и стабильность то DHT11 однозначно не подойдет.
1. 75% находится на краю рабочего диапазона измерения влажности (по памяти максималка 80) и точность тут будет сильно хромать.
2. При работе с таких условиях DHT11 бысто выходит из строя - начинает сильно врать. Я за сезон с инкубаторе поменял 2 шт.

Можно вообще не использовать бутлоадер, тогда никаких проблем с watchdog не возникает.

#135 Програмування Arduino » Проблема с вызовом функций из секции setup » 2016-06-30 08:54:04

alex_dol
відповідей: 3

В ходе работы наткнулся на неприятность. Не работает такая конструкция:

void setup(){
.....
if (analogRead(ButonsPin) < 100) Set_Time_and_Date;
.....
}

void Set_Time_and_Date(){
.....
}

void loop() {
....
}

Если тело функции Set_Time_and_Date перенести в setup под оператор if - все работает. Так должно быть?

#136 Re: Апаратні питання » Arduino без Bootloader'а » 2016-06-29 11:50:05

Даже если не переустановить флаг BOOTRST и записать hex без загрузчика - время старта будет несколько милисек, пока проц "пробежит" область загрузчика, но ни как не 1 сек.
Попробуй создать hex через "Скетч - экспорт бинарного файла"

#137 Re: Програмування Arduino » Какой датчик лучше » 2016-05-18 21:26:01

nikon777 пише:

Может точность?

А даташиты посмотреть? Там и точность, и линейность, и все остальное указано.

#138 Різне » А кто модер на форуме? » 2016-05-05 16:53:01

alex_dol
відповідей: 10

А кто модер на форуме?
Можно ли польский и не только спам поудалять и автора в бан?

#139 Re: Апаратні питання » 2 светодиода на один выход » 2016-05-02 21:20:23

Что например? У тебя подход к реализации неправильный. Советую ознакомится с базовыми принципами построения схем.
1. Надо начать с того, что у светодиодов считается рабочим ток, а не напряжение. Иными словами для светодиодов надо задавать ток, а напряжение какое на нем получится - такое и будет (указано в даташите). Что и делает последовательно с ним включенный резистор.
2. Выходы имеют логические уровни 0 и 1, а не 0В и 5В. В КМОП логике выходные напряжения 0 и 1 близки к 0В и уровню питания, причем часто фактически разделом является половина напряжение питания с 0,1-0,2В зоной неопределенности. А вот в ТТЛ "0" - меньше 0,4В, "1" - больше 3,5В (пишу по памяти, точные цифры не помню). Как правило выходы имеют защиту от КЗ - ограничение выходного тока, использовать этот режим не советую, грозит быстрым локальным перегревом кристалла и выходом микросхемы из строя.
3. 2,5В на светодиоде будет при определенном токе. Если в 2 раза уменьшить или увеличить ток, напряжение на нем не изменится в 2 раза. Его вольт-амперная характеристика похожа на характеристику обычного диода. Может быть такое, что увеличению тока в 2 раза последует увеличение напряжения на нем к примеру на 0,1В. То есть очень легко сжечь светодиод питая его от источника напряжения. Светодиод надо запитывать от источника тока.
4. Включая 2 светодиода вы оставляете очень маленький зазор напряжения для токоограничиваючего резистора, без него все равно ни как. Теоретически и практически можно, надо только подобрать резистор и светодиоды (разные светодиоды имеют разное падение напряжения при рабочем токе). Схема станет более чувствительной к перепадам напряжения питания.

#140 Re: Апаратні питання » 2 светодиода на один выход » 2016-05-01 23:39:00

На выходе не строго 5В а логическая 1, а это в большинстве случаев 4,5В.
Что будет - архитектура выхода в проце начнет работать как ограничитель тока. Что конкретно будет в вашем случае зависит от типа светодиодов и проца.

#141 Re: Програмування Arduino » dtmf и строка » 2016-04-26 08:59:20

Чтобы не отправлялись все символы уберите Serial.println(symbol);

#145 Re: Програмування Arduino » ПОМОГИТЕ ПОСТАВИТЬ ТОЧКИ НАД И » 2016-04-13 09:32:00

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

#146 Re: Програмування Arduino » ПОМОГИТЕ ПОСТАВИТЬ ТОЧКИ НАД И » 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; //зацикливаем настройку, выход из настройки - выключением
  }

#147 Re: Програмування Arduino » Выводы 0 (RX) и 1 (TX) - особенности » 2016-04-07 13:51:00

Ничем. Чревато, если входом - внутренняя подтяжка не на всех процах работает.

#148 Re: Програмування Arduino » ENC28J60 Ethernet модуль » 2016-04-07 10:20:18

Ну как-то так:

#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   // this just needs to be unique for your network, 
                                                                // so unless you have more than one of these boards
                                                                // connected, you should be fine with this value.
                                                           
static uint8_t ip[4] = {192, 168, 1, 15};                       // the IP address for your board. Check your home hub
                                                                // to find an IP address not in use and pick that
                                                                // this or 10.0.0.15 are likely formats for an address
                                                                // that will work.

static uint16_t port = 80;                                      // Use port 80 - the standard for HTTP

ETHER_28J60 ethernet;

void setup()
{ 
  ethernet.setup(mac, ip, port);
}

void loop()
{
  if (ethernet.serviceRequest())
  {
    ethernet.print("<H1>Hello World</H1>");
    ethernet.respond();
  }
  delay(100);
}

#149 Re: Програмування Arduino » ENC28J60 Ethernet модуль » 2016-04-07 08:15:27

Точно так же как и IP адреса - придумать и задать программно.

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