Начальные справочные сведения о языке вы можете найти на главном сайте компании Arduino. Выберите вкладку Learning (Обучение), а затем в раскрывающемся меню укажите пункт Reference (Справка). Можно также открыть меню Помощь (Help) в среде Arduino IDE и выбрать пункт Справочник (Reference).
Усовершенствование программы
Предложенная программа решает поставленную задачу, но ее функции очень ограничены. Самое большое ограничение состоит в том, что значения минимальной и максимальной температуры заданы в виде констант. Это похоже на термостат, зафиксированный только в одном положении, которое нельзя настроить. Как улучшить эту программу, чтобы пользователь мог самостоятельно задать пороговые значения температуры для включения и отключения нагревателя?
Думаю, можно было бы добавить потенциометр. Крайние выводы потенциометра следовало бы подключить к клеммам 5 В и 0 В, а движок соединить с другим аналоговым входом микроконтроллера. В результате потенциометр стал бы работать как делитель напряжения и обеспечивал бы полный диапазон напряжения от 0 до 5 В.
Затем я добавил бы еще одну процедуру в цикл, в которой микроконтроллер проверял положение движка потенциометра и переводил его в числовую форму.
В результате получалось бы число в диапазоне от 0 до 1023. Мне потребовалось бы преобразовать его в число, которое соответствует возможному диапазону значений переменной digitemp . Далее я присвоил бы результат новой переменной с именем, скажем, usertemp . Затем мне понадобилось бы выяснить, существенно ли выше или ниже та температура, которую измерил терморезистор, по сравнению с переменной usertemp.
Заметьте, я опустил одну маленькую деталь: каким, собственно, образом я преобразовал бы входной сигнал от потенциометра в диапазон, подходящий для переменной usertemp. Сейчас мы с этим разберемся.
Если диапазон возможных значений терморезистора составлен из чисел от 430 до 512, как я установил ранее, то его можно представить как среднее значение 471 плюс или минус 41. Потенциометр имеет среднее значение 512 плюс или минус 512 до его полного диапазона. Поэтому:
usertemp = 471 + ( (potentiometer - 512) * .08)
где potentiometer — это значение со входа потенциометра, а символ «звездочка» (*) используется в языке С как знак умножения. Результат достаточно близкий.
Да, арифметика рано или поздно проявляется в программировании, так или иначе. И нет способа обойтись без нее. Но уровня математики средней школы для наших задач вполне хватит.
В улучшенной версии программы мне по-прежнему необходимо позаботиться о гистерезисе. Первый оператор сравнения следует преобразовать так:
if (ledstate == 1 && digitemp > (usertemp + 10) )
после чего светодиод выключается. Но
if (ledstate == 0 && digitemp < (usertemp - 10) )
и тогда светодиод загорается. Это дало бы мне диапазон гистерезиса плюс-минус 10, если используются значения от АЦП.
Теперь, когда я описал необходимую модификацию программы, возможно, вы захотите осуществить ее самостоятельно. Не забывайте только объявлять каждую новую переменную, прежде чем вы ее укажете в теле программы.
Эксперимент 34. Точные игральные кости
В этом последнем эксперименте я собираюсь переделать устройство из эксперимента 24, в котором комбинации игральных костей формировались с помощью логических микросхем. Вместо микросхем теперь мы можем написать условные и логические операторы в программе для микроконтроллера. В результате компоненты схемы превратятся в несколько строк компьютерного кода и вместо таймера 555, счетчика и трех логических микросхем нам понадобится всего один микроконтроллер. Это отличный пример для демонстрации возможностей контроллеров. Но, безусловно, по-прежнему требуются светодиоды и токоограничительные резисторы.
• Макетная плата, монтажный провод, кусачки, инструмент для зачистки проводов, тестовые провода, мультиметр
• Стандартный светодиод (7 шт.)
• Резистор 330 Ом (7 шт.)
• Плата Arduino Uno (1 шт.)
• Ноутбук или настольный компьютер со свободным USB-портом (1 шт.)
• USB-кабель с разъемами типа А и типа В на противоположных концах (1 шт.)
Эксперимент или программирование?
Обучение путем эксперимента хорошо работает, когда вам нужно изучить реальный электронный компонент. Вы можете установить его в макетную плату, подать питание и посмотреть, что получится. Даже когда вы разрабатываете схему, то можете действовать методом «проб и ошибок», внося изменения по ходу дела.
Читать дальше
Конец ознакомительного отрывка
Купить книгу