if (digitalRead(10) – HIGH) {
digitalWrite(11, HIGH);
delay(1000);
}
digitalWrite(11, LOW);
}
В setup мы должны указать, что контакт 10 выступает в качестве входного и что контакт 11 является цифровым выходом. В loop мы будем считывать состояние контакта 10 с помощью digitalRead. Функция digitalRead требует только одного параметра, номер контакта для чтения, и возвращает состояние контакта, которое может быть высоким или низким. Первая строка loop считывает состояние контакта и, если оно высокое, потому что кто-то нажал на кнопку, входит в блок инструкций между двумя фигурными скобками, включает контакт 11 и ожидает в течение одной секунды.
Если никто не нажмет на кнопку, контакт будет в низком состоянии, «Ардуино» не выполняет блок инструкций после if, перейдя непосредственно к последней digitalWrite, выключающей контакт, к которому подключен светодиод.
analogWrite
Функция analogWrite используется для генерирования ШИМ-сигнала (т. е. сигнала прямоугольной формы), в котором мы можем изменить по желанию процент включенного и выключенного сигнала. Необходимы два параметра: выход и число, который указывает взаимосвязь между включением и выключением. Число не в процентах, а в числовом значении в диапазоне от 0 до 255. Не все контакты «Ардуино» могут генерировать сигнал данного типа; контакты, способные выполнять данную операцию, это 3, 5, 6, 9, 10 и 11. Мы можем их различить, так как на плате, рядом с номером, обозначен небольшой символ тильды (~).
Сделаем эксперимент, изменив скетч предыдущего примера и используя ту же схему: нам нужен только светодиод, подключенный к контакту 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: ");