пятница, 5 сентября 2014 г.

Контроль работы кондиционера (замеряем температуру на входе и выходе) - Multiple temp sensor 18B20 and 7Seg display

Понадобилось мне сегодня проконтролировать работу кондиционера (возник у начальства такой вопрос). Решил для начала замерять температуры на входе (комнатная температура воздуха) и на выходе кондиционера (температура охлажденного воздуха).
Для этого мне понадобилось:
  • Blockduino - 1 шт
  • Block7Seg - 1 шт
  • CleClo-TempSensor 18b20 - 2 шт
  • Провода в формате GVS
  • Блок питания на 5 вольт
  • Пару шурупов диаметром 3 мм для крепежа
  • и пол-часа времени ;)

вторник, 2 сентября 2014 г.

Кодовый замок на 4х резисторах - DoorLock with 4 pot

Попытался спроектировать универсальную базу для крепежа разного вида платок в одну кучу. Что-то типа стенда.
Для ее проверки решил собрать что-нить новенькое на стандартных компонентах. Выбор пал на имитацию кодового замка на камерах хранения которые стояли на ЖД вокзалах когда-то. Ну конечно же не один-в-один, а улучшенную версию :)

воскресенье, 17 августа 2014 г.

Магический Шар или Ардуино предсказывает будущее (Arduino Magic Ball)


На днях, по многочисленным просьбам трудящихся ардуинопользователей, починил барахлившую библиотеку для вывода кириллицы на ЖК экранчики подключенные по IIC протоколу.

В связи с этим захотелось что-то сделать с ее участием и решил реализовать давно витавшую в мозгах идею о Шаре Предсказателе, т.е. в нашем случае об Ардуино Предсказателе Будущего.

пятница, 1 августа 2014 г.

IR Rider w Any IRremote - Управляем роботом с помощью любого ИК пульта



Снова я вне дома, снова без семьи, и-нета, друзей и телевизора. А это значит, что нужно чем-то заполнять пустоту в мозгах.
Достал из чемодана своего IR-Rider'а, а пульт, под который он был запрограммирован, остался где-то там где я тогда работал. Тут же возникла мысль запрограммировать его для обучения "на лету" под любой пульт.

вторник, 1 апреля 2014 г.

Библиотека для блока Block7Seg или Выводим текст на семисегментный светодиодный дисплей

Вступление

Повозившись со существующими библиотеками найденными в сети, понял, что не все так гладко как хотелось.
Во первых, еле нашел библиотеку, которая работает по прерываниям (Multiplex7Seg), что дает возможность в основном теле нашей программы заниматься своими делами, а не прорисовывать числа на дисплеях. Ведь без прерывания при обращении к датчику температуры 18B20 дисплей зависает на одной цифре почти на секунду.
Во вторых, та же библиотека как-то коряво выводит числа на дисплей, каким-то хитрым путем прорисовывает точку в дробных числах. И никакой реализации, чтобы вывести что-то больше. А хочется.
В общем взяв эту библиотеку и взяв на вооружение опыт полученный при написании библиотеки для светодиодного дисплея на микросхеме TM1628 и ее части (библиотеки конечно же) я, промудахавшись пару дней, получил нужное.
Итак, прошу любить и жаловать, библиотека для вывода текста на светодиодный семисегментный индикатор подключенный напрямую к микроконтроллеру: lib_Block7Seg.

пятница, 21 марта 2014 г.

Русифицированная библиотека LiquidCristal_I2C - Updated LiquidCrystalCyr_I2C

Я для блока LCD0802_IC русифицировал библиотеку LiquidCristal_I2C.
Вернее я объединил две библиотеки: LiquidCristal_I2C и LiquidCristalRus (c сайта mk90.ru). Правильно было бы назвать ее LiquidCristalRus_I2C, но назвал ее lib_BlockLCD0802_IC, чтоб было сразу понятно для какого блока она предназначена. Но она работает и с другими производителями (например DFRobot).
Вот пример скетча на два дисплея:

четверг, 24 октября 2013 г.

Line Rider Railway - Железная дорога из бумаги для робота

Робот едущий по линииВ продолжение статьи 'Робот бегущий по линии, с одним датчиком - Line Rider 1'

Исправил проблему с потерей линии. Теперь робот, съехав с линии, поворачивается на небольшую величину в заданную сторону и не найдя линии поворачивается в другую на чуть большую величину, и так далее.
Основное тело программы выглядит так:
void loop() { // Основное тело программы
  if(isLine()) {                  // если под нами линия
    digitalWrite(LED_PIN, LOW);     // гасим индикаторный светодиод
    counter = 3;                    // сбрасываем счетчик
    Run();                          // едем вперед
  } else {                        // иначе (нет под нами линии)
    digitalWrite(LED_PIN, HIGH);    // включаем индикаторный светодиод
    Rotation(MIN_ROT);              // поворачиваем на минимальную величину
    if(!isLine()) {                 // смотрим снова, если под нами нет линии (знак '!' - знак отрицания)
      isCW=!isCW;                     // меняем направление поворота
      Rotation(MIN_ROT * counter);    // поворачиваем на несколько (зависит от количества попыток) минимальных величин
      counter= counter + 4;           // увеличиваем счетчик попыток
    }
  }    
} // конец основной программы, начинаем все сначала
Обратите внимание, что добавилась переменная
int counter;
Для проверки работоспособности собрал небольшую трассу с резкими поворотами и прямыми углами. Тест показал неплохую работоспособность, за исключением небольшого но: на очередном повороте робот потеряв линию проскочил ее снова и начал раскачиваться вокруг своей вертикальной оси. А все потому, что наличие линии определяется только в конечных точках. В общем нашел он ее только развернувшись в обратную сторону. Вот видео:

вторник, 22 октября 2013 г.

Inclination Rider - Едем по наклонной

Как и обещал, подключил акселерометр к управлению роботом.
Inclination Rider - Робот поворачивается в сторону небольшого наклона и едет вперед при бо'льшем наклоне.

Алгоритм прост:
  • если наклон по Х(право-лево) и Y(нос-корма) меньше допустимого, то стоим;
  • если нос вниз и левый борт чуток внизу, то направо;
  • если нос вниз и правый борт чуток внизу, то налево;
  • если левый борт внизу, то направо;
  • если правый борт внизу, то налево;
  • а если нос вверх в два раза больше допустимого, то едем вперед;

понедельник, 21 октября 2013 г.

Compass Rider - Робот знающий свое направление

Продолжаем играться в роботов.

На этот раз прикурочил я к моему роботу компас на микросхеме LSM303, от Sparkfun.

Робот с компасом на основе LSM303


Замечательная штучка - работает по протоколу I2C, а у меня как раз под нее разъемчик появился.

среда, 25 сентября 2013 г.

Робот бегущий по линии, с одним датчиком - Line Rider 1

Отчитавшись о Boundary Rider, в тот же вечер сел думать о следующих шагах на пути к роботу ездящему по линии, а так как паять еще один датчик было лень, да и не из чего (нужно распаивать другой датчик), то решил поизгаляться и заделать такого робота с одним датчиком.
Дело за малым - за алгоритмом и его реализацией. С алгоритмом решил не усложнять и пошел по простому пути:
смотрим в пол
если линия есть, то едем дальше
иначе (линии нет):
поворачиваем чуток в заданную сторону
если снова линии нет:
то меняем направление поворота
поворачиваем в два раза больше чем чуток в другую сторону
начинаем все сначала