Программируем Arduino | страница 18
Мы уже сталкивались с одной из разновидностей массивов в предыдущем разделе, где знакомились с монитором последовательного порта. Сообщения, такие как «Paperclip NOT connected» (скрепка не замыкает контакты), называют массивами символов, потому что фактически они являются коллекциями символов.
Например, научим Arduino посылать в монитор порта всякую чепуху.
Следующий скетч имеет массив массивов символов. Он выбирает их по одному в случайном порядке и посылает в монитор последовательного порта через случайные интервалы времени. Попутно этот скетч показывает, как в Arduino получать случайные числа.
// sketch 01_05_gibberish
char* messages[] = {
"My name is Arduino",
"Buy books by Simon Monk",
"Make something cool with me",
"Raspberry Pis are fruity"};
void setup()
{
Serial.begin(9600);
}
void loop()
{
int delayPeriod = random(2000, 8000);
delay(delayPeriod);
int messageIndex = random(4);
Serial.println(messages[messageIndex]);
}
Все сообщения, или строки, как часто называют коллекции символов, имеют тип char*. Символ звездочки (*) говорит о том, что это указатель на что-то. Подробнее об указателях будет рассказываться в главе 6. Квадратные скобки ([]) в конце объявления переменной указывают, что данная переменная хранит массив данных типа char*, а не единственное значение char*.
Внутри функции loop переменной delayPeriod присваивается случайное значение из диапазона от 2000 до 7999 (второй аргумент random не входит в диапазон). Затем вызовом функции delay выполняется пауза, продолжительность которой равна полученному промежутку.
Переменной messageIndex также присваивается случайное значение с помощью команды random, но на этот раз ей передается единственный параметр, в результате чего она возвращает случайное число в диапазоне от 0 до 3, которое затем используется как индекс сообщения для отправки в монитор порта.
Наконец, сообщение, находящееся в выбранной позиции, посылается в монитор порта. Опробуйте этот скетч, не забыв открыть окно монитора последовательного порта.
Аналоговые входы
Контакты с метками от A0 до A5 на плате Arduino можно использовать для измерения приложенного к ним напряжения. Уровень напряжения должен находиться в диапазоне от 0 до 5 В. Измерение выполняется с помощью встроенной функции analogRead, которая возвращает значение в диапазоне от 0 до 1023: значение 0 соответствует напряжению 0 В, а значение 1023 — напряжению 5 В. То есть, чтобы преобразовать число в значение, находящееся в диапазоне от 0 до 5, нужно разделить полученное число на 5: 1023/5 = 204,6.