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

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


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

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

Для этого понадобятся:

  • Ардуино
  • ЖК экран (у меня подключенный по протоколу IIC)
  • Акселерометр (у меня LSM303DLH от SparkFun)
Или как в моем варианте:

Далее все просто, экран (BlockLCD0802_IC) подключаем к ардуино (Blockduino), затем подсоединяем плату с акселерометром (GND к земле, Vin к +5V, SCL к A5, а SDA к A4) и загружаем код:

Сразу предупрежу, что код - это только первичная рабочая наброска. Позже буду допиливать и усовершенствовать.
Принцип работы кода:
  • Замеряем показания акселерометра по всем трем осям, отфильтровываем и суммируем.
  • Определяем максимум и минимум для предыдущих показателей и разницу между ними
  • Увеличиваем минимум и уменьшаем максимум на определенную величину (т.е. уменьшаем между ними разницу)
  • Если разница практически ноль, т.е. ардуино никто больше не трясет, то выбираем случайное число до 20ти и выводим соответствующую надпись на экран.
  • Если же разница больше какой-то величины (ардуино сильно встряхнули), то стираем предыдущую надпись.
  • Начинаем все сначала :)
Варианты ответа взяты из статьи в википедии "Magic 8 ball"

ToDo:
  • Добавить возможность выбора различных наборов ответов: английский, русский-весёлый, русский-гоблин, и т.д.
  • Выводить текст на экран не сразу весь, а побуквенно, т.е. сымитировать ввод текста с клавиатуры.