Книга Электроника для начинающих, страница 72. Автор книги Паоло Аливерти

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Электроника для начинающих»

Cтраница 72

Сделаем эксперимент, изменив скетч предыдущего примера и используя ту же схему: нам нужен только светодиод, подключенный к контакту 11. С ШИМ-сигналом мы можем установить уровень яркости светодиода по желанию. Если использовать число от 0 до 255, то будет немного неудобно, поэтому мы воспользуемся функцией тар(), которая выполняет перераспределяет диапазон чисел от 0 до 255 в диапазон от 0 до 100.


void setup () {

   pinMode (11, OUTPUT);

}

void loop() {

   int Brightness = 10;

   int pwm = map(Brightness, 0,100, 0,255);

   analogWrite (11, pwm);

}


В скетче мы также ввели переменные: Brightness и pwm. Переменная – это небольшая часть памяти, в которую может быть записана временная информация. В С (язык, используемый для программирования «Ардуино») переменные не могут быть общими контейнерами, вы должны сначала определить, что они будут содержать. По этой причине, когда вы используете их в первый раз, имени переменной вы должны задать специальное слово: int, которое означает целое число: переменные Brightness и pwm могут содержать только целые числа. Чтобы присвоить значение переменной, нужно просто написать ее имя, знак равенства =, а затем требуемое значение.

Переменные работают как небольшие ящики, к которым мы можем применить имя для напоминания об их содержимом и разместить информацию.


int Brightness = 10;


Функция map принимает переменную Brightness, которую мы будем использовать в виде процента и зададим значения от 0 до 255. Если Яркостьравна 10, тогда map примет значение 25.5, но так как оно должно быть целым, мы будем иметь 26.

Попробуйте загрузить скетч на «Ардуино» и понаблюдайте за светодиодом. Измените значение Brightness и посмотрите, как будет изменяться яркость светодиода.

Монитор порта

Не так легко понять, что происходит в плате. Если скетч прост и работает, нет никаких проблем, но если бы что-то пошло не так, мы бы захотели узнать немного больше и, возможно, получить информацию от «Ардуино». Узнать больше информации возможно через последовательный порт, который мы используем для программирования. Когда порт не задействован в программировании микроконтроллера, мы можем использовать его для обмена информацией, которую будем считывать на нашем компьютере.


Электроника для начинающих

Рис. А6. Для открытия окна «Монитор порта» нажимаем на кнопку на панели инструментов «Ардуино»

Чтобы использовать последовательный порт «Ардуино», он должен быть сконфигурирован в setup:


void setup() {

   Serial.begin(9600);

}


Конфигурация последовательного порта требует только одного параметра, скорость передачи данных, которую мы установили на 9600 бод, то есть бит в секунду. Теперь мы можем отправить на последовательный порт:


Serial.println("Hello World!");


Куда уходят эти сообщения? Они отправляются на наш компьютер, и мы можем прочитать их, открыв вывод. В IDE «Ардуино», последняя икона на панели инструментов используется для открытия окна «Монитор порта», то есть окно, которое принимает и отображает сообщения, отправленные от «Ардуино».

Вот скетч, чтобы напечатать надпись "Hello World" и значение переменной в интервале одной секунды:


int count = 0;

   void setup() {

   Serial.Begin(9600);

}

void loop() {

   Serial.println("Hello World!");

   Serial.print("Count: ");

   Serial.println(count);

   delay(1000);

   count++;

}


Мы добавили переменную count. Это внешняя переменная по отношению к loop и setup, так что она может быть доступна в обоих блоках команд. В настройках инициализируем последовательный порт. В loop напечатаем текст с Serial.println. Вторая команда использует print вместо Println: разница в том, что Println пишет что-то, а затем возвращается в начало. Третья команда печати выводит переменную count. Сначала будет пауза на одну секунду, а затем запись count++, которая служит для увеличения на 1 значения переменной count.


void setup() {

   Serial.begin(9600);

   pinMode(11, OUTPUT);

}

void loop() {

   int read = analogRead(A0);

   Serial.print(" reading: ");

   Serial.println (read);

   if (read > 400) {

      digitalWrite(11, HIGH);

   } else {

   digitalWrite(11, LOW);

}

   delay(100);

}


В setup настроим последовательный порт и контакт 11, так что он будет вести себя как выход. В loop значение, взятое из analogRead, хранится в переменной read. Если значение переменной read больше, чем пороговое значение, равное 400, то светодиод на контакте 11 будет гореть. У нас есть задержка 100 мс, чтобы ограничить число чтений: было бы бесполезно читать температуру тысячу раз в секунду. Пороговое значение мы установили произвольно, и, возможно, схема, на первый взгляд может показаться неработающей. Откройте Serial Monitor Arduino и просмотрите значения, которые получаются: используем их для установки правильного порогового значения.

Другие команды

Верьте или нет, описанные четыре команды являются наиболее часто используемыми в проектах с «Ардуино»! Есть много других функций, о которых вы можете проконсультироваться онлайн или на сайтах помощи по «Ардуино». Позвольте мне указать на некоторые другие интересные функции.

Функция tone() создает музыкальную ноту нужной частоты. «Ардуино» может играть только одну ноту за один раз. Чтобы услышать ноты, мы должны подключить небольшой пьезоэлектрический зуммер или динамик на желаемый контакт. Частота должна быть введена в герцах, а продолжительность ноты в миллисекундах.

analogRead

«Ардуино» может считывать аналоговые значения и преобразовать их в число от 0 до 1023. На плате были зарезервированы 6 контактов для выполнения данной операции. Контакты называются А0, А1, А2, A3, А4 и А5. Мы можем подключить любой тип аналогового датчика, который вырабатывает напряжение от 0 до 5 В. Попробуем подключить термистор к «Ардуино» и прочитать его значение.

Вход
Поиск по сайту
Ищем:
Календарь
Навигация