мы девочки

Тема в разделе "Посоветуйте детальки", создана пользователем Ekaterina, 16 фев 2014.

  1. Unixon

    Unixon Оракул Модератор

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

    Дело вот в чем. Функции по работе с шиной 1-wire сосредоточены в библиотеке OneWire, поверх нее существует некоторый код для работы с конкретным устройством, например, тем же DS18B20. Этот код может быть как компактным для частного случая (только один датчик с известным адресом, рукопашная обработка протокола и т.п.), так и более универсальным, расчитанным на произвольную конфигурацию. Как правило, он уже достаточно большой и поэтому выделяется в отдельную библиотеку. Библиотека для DS18B20 занимается непосредственной работой с датчиками при помощи библиотеки OneWire, а из скетча исчезает гора мусора и остаются только вызовы функций типа attachSensors(), getTemperature().

    Беглое гугление помогло обнаружить дофига частных случаев и некоторые попытки написать универсальную библиотеку (на том же гитхабе как минимум пара вариантов под ардуину сразу находится). Однако, насколько я понял, ни одно из решений пока не стало стандартом де-факто.

    Вот и хотел поинтересоваться что у вас за подход к термодатчику. Может быть, потом и скетч попробовать набросать с общей логикой.
     
  2. Kristina

    Kristina Нерд

    А подскажите,пожалуйста,существует ли такой блютус,радио модуль,который работает без подключения к ардиуино;например,один датчик расположен на ардуино,другой в 10 метрах и подключен к фоторезистору или к термометру, он просто считывает информацию и передает на модуль Ардуино.
     
  3. Unixon

    Unixon Оракул Модератор

    Готовых модулей такого типа не встречал, но думаю его довольно несложно сделать из готового BT модуля в формате XBee и некоторой самодельной платы с МК в том же формате (что-то типа Adafruit Trinket).
     
  4. Kristina

    Kristina Нерд

    А готовый Adafruit trinket не подойдет?
     
  5. Unixon

    Unixon Оракул Модератор

    Да вполне подойдет, просто он не по строго по форм-фактору XBee сделан, т.е. их нельзя будет друг в друга вставить.
     
  6. Kristina

    Kristina Нерд

    Но соединить можно...А на форуме возможно найти исполнителя за вознаграждение,или тут только советуют?
     
  7. Unixon

    Unixon Оракул Модератор

    А какая часть из вешеперечисленного является непосильной и требует стороннего исполнителя?
    Во что превратился список работ после вот этого обсуждения? :)
    Давайте конкретно обсудим, что нужно (осталось) сделать.

    p.s. Советуем в основном потому, что искренне желаем, чтобы люди сами научились решать задачи, а не просто лепили нечто из готовых кусов без какого-либо понимания происходящего или чтобы из-за лени не перекладывали работу на других. А для этого нужно объяснять, обучать, помогать преодолевать сложные моменты и корректировать направление движения, но не тащить за руку от и до, и не делать все за и приучать тем самым жить на готовом. Впрочем, причины у всех разные и в ряде случаев такой вот аутсорс вполне себе имеет смысл.
     
    Последнее редактирование: 18 фев 2014
  8. Kristina

    Kristina Нерд

    Ну все наши проблемы основаны на скетчах,собрать мы еще можем,а вот все наши попытки перемешать существующие коды в нужный нам еще ни разу не увенчались успехом:(
     
  9. acos

    acos Официальный гик Администратор

    так выкладывайте код, даже если не компилируется. будет всем гораздо проще общаться
     
  10. Unixon

    Unixon Оракул Модератор

    На досуге немного подумал над логикой работы прибора. Ваш алгоритм описывает лишь штатное поведение, но это верхушка айсберга. На самом деле для корректной работы нужно также предусмотреть и все неожиданные ситуации, т.е. для каждого из возможных состояний прибора необходимо предусмотреть реакции на все возможные события, а не только на предусмотренные "инструкцией по использованию".

    Другими словами, нужно представить, что чайник дали поиграть обезьяне и она, даже совершая всевозможные действия в случайном порядке, все равно в итоге должна именно приготовить чай, а не сделать что-либо иное. Ну, по крайней мере, прошивка не должна зависнуть в неопределенном положении.
     
    Последнее редактирование: 18 фев 2014
  11. SerRay

    SerRay Нерд

    Это просто - надо поставить мини-гильятину. Если нажимается не та кнопка, то палец отрубается. И пользователь сразу полезет изучать инструкцию:D
     
  12. Ekaterina

    Ekaterina Нуб

    Ребят, суть в том, что мы не профи в этом и нам составляет огромную трудность написать код и создать грамотную схему, при обучении arduino всего за 2-3 недели, мы тупо знаем как вкл термометр, светодиодную ленты и запустить уже готовый код. Мы не знаем как писать коды...
    И как собрать все на схеме, так чтобы все работало.
    На то мы ищем человека, который сможет нам наглядно показать как это делается и помочь с кодом.
     
  13. Unixon

    Unixon Оракул Модератор

    Да это всё понятно. Будет вам и схема, будет вам и кот. :)
    Вечером постараюсь вбросить начальный вариант, а там куда коллективное творчество выведет.
     
  14. Ekaterina

    Ekaterina Нуб

    Вы в амперке работаете?
    Просто у нас есть желание всему наглядно научиться и вообще лучше понять систему arduino.
    Если есть возможность встр и вместе поработать было бы здорово!
     
  15. Unixon

    Unixon Оракул Модератор

    Да, наверное, это можно организовать. Если речь идет о встрече в офисе Амперки, то по этому поводу стоит поинтересоваться у acos или nailxx.
     
  16. Ekaterina

    Ekaterina Нуб

    Здравствуйте, есть ли возможность встретиться с Unixon в офисе амперки и поработать над проектом?
    Мы рядышком с вами находимся, могли бы в любой момент подъехать.
    Спасибо.
     
  17. acos

    acos Официальный гик Администратор

    Они не профи! Ооо... ну всё, расходимся)

    Тут много людей, которые не профи. В том то и суть — arduino, это штука, которая позволяет делать прикольные вещи тем людям, которые «не профи». И вам, как будущим дизайнерам, это знание работы с ней ооооооочень пригодилось бы в будущем.

    Выложите сюда хоть какой-нибудь код, который у вас не получается.
    Вот я, пожалуй начну. Для простоты (чтоб понятнее было, что происходит) возьму датчик температуры, который тройка-модуль. Вот этот http://amperka.ru/product/troyka-temperature-sensor
    [​IMG]
    Оттуда же: Выходным результатом работы сенсора является аналоговый сигнал, с уровнем напряжения прямо пропорциональным температуре, с шагом 10 мВ/°C

    Начнём с того (пока примем как аксиому), что любая программа в ардуино будет иметь вот такой скелет
    Код (Text):
    void setup() { // инициализация. Где у нас что? контроллер этого не знает, а мы — знаем.
    //Поэтому в этом местке мы ему расскажем, где что у нас подключено к контроллеру.
    //Эта штука выполнится один раз
    }
    void loop() { // а это основная программа. То что заключено в фигурные скобки {} будет выполнятся
    //снова и снова и снова до скончания веков, выключения питания или нажатия на кнопку reset

    }
    Это была основа. Всё это, конечно, есть на вики http://wiki.amperka.ru/ , и там написано в сто раз лучше.

    Беру датчик, и шлёпаю на ногу A0 ардуины.
    Беру Arduino IDE, открываю её, иду мышкой в меню «Файл»→«Примеры»→«01.Basics»→«AnalogReadSerial». Открываю её. Что я вижу?

    Код (Text):

    // - это комментарии. Контроллер их не видит, поэтому можно писать что угодно
    void setup()  //void это вызов. Это такая функция. Вот эта функция setup() — это такая штука,
    // которая выполнится один раз
    //при старте нашей программы.
    //Здесь мы просто сообщаем контроллеру где у нас что включено,
    //и чего ему ждать от нас

    { //Вот этой штукой начинается тело функции

      Serial.begin(9600);  // Контроллер! Слушай мою команду! Скажи своему последовательному порту,
    //чтоб он работал на скорости 9600. Нам он понадобится потом
    }  // а вот этой штукой функция заканчивается

    void loop() {  // Это будет повторятся снова и снова
      int sensorValue = analogRead(A0);  // здесь мы объявили переменную типа int и обозвали её sensorValue
    // И тут же, как только объявили, присвоили ей значение. Значение взяли функцией analogRead()
    //Эта функция нужна для того, чтоб прочитать напряжение на ноге A0.
    //Буквально, в переводе с контроллерного на русский, эта строчка звучит так:
    //Контроллер, зарезервируй 2 байта (размер int). Прочитай аналоговым способом, какое напряжение у тебя сейчас на ноге A0 и положи их в эти два байта.

    //Название переменной - оно для программиста, оно чтоб не запутаться.
    //Контроллеру по-барабану, как мы там что назвали.

      Serial.println(sensorValue); //Контроллер. Пошли в свой последовательный порт те два байта, которые мы прочитали выше.
      delay(1);        // Отдохни маленько, контроллер.
    }
     
    Вот этот код сверху — можете прям копировать и вставлять в свой Arduino IDE, записывать в ардуину и смотреть, что получится. Смотреть, что получится нужно тут - «Сервис»→«Монитор порта»

    Компиляю, загружаю!

    Контроллер прислал мне в последовательный порт цифру 158.
    Аналоговый порт работает так - смотрим, какое напряжение у нас на ноге, и сравниваем его с 5 вольтами. Если на ноге 5 вольт, то число, которое вернёт функция analogRead() будет 1023. Если 0 вольт - 0. То есть всего 1024 значения. Если функция вернёт 1, значит на ноге в этот момент - 5 В/1024=0,0048828125 В
    Раз мне контроллер вернул 158, значит на ноге 158*0,0048828125=0,771484375 В.

    Температура у меня сейчас где-то 24 градуса. Значит примем 24 градуса = 0,771484375 В.
    Ещё раз: Выходным результатом работы сенсора является аналоговый сигнал, с уровнем напряжения прямо пропорциональным температуре, с шагом 10 мВ/°C (0,01 В)

    Значит 100 градусов, это где-то
    (100-24)*0,01+0,771484375=1,531484375 В
    Это 1,531484375/0,0048828125=313,648. дробной части у нас не будет. Значит при 100 градусах контроллер вернёт 313 или 314.

    Так же высчитываем наши пределы 90-95 и т.д.

    В следующей серии:
    if ((sensorValue>90)&&(sensorValue<95)) {
    digitalWrite(yellow, HIGH);
    }

    Надо передохнуть)
     
    Unixon нравится это.
  18. Ekaterina

    Ekaterina Нуб

    Спасибо,мы уже подключили датчик,он работает у нас и это в то или иной степени нам понятно,а вот с условиями if у нас уже как раз проблемы.Может нам все-таки проще приехать к вам в офис и наглядно с вами все проделать? Это и сэкономить время и улучшит результат.
     
  19. acos

    acos Официальный гик Администратор

    Да делайте чего хотите) Unixon, если у вас есть время, созвонитесь с девчёнками, договоритесь когда встретиться, а помещение мы предоставим)
    Возьмите ноуты)
     
    Последнее редактирование: 18 фев 2014
  20. Ekaterina

    Ekaterina Нуб

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

    Вложения:

    • POT sketch.txt
      Размер файла:
      3,2 КБ
      Просмотров:
      627
    • 8QpDubZJ764.jpg
      8QpDubZJ764.jpg
      Размер файла:
      139,8 КБ
      Просмотров:
      639
    • 6OSTjwB65Sk.jpg
      6OSTjwB65Sk.jpg
      Размер файла:
      16,1 КБ
      Просмотров:
      538