Инструменты пользователя

Инструменты сайта


Функции работы с пинами

analogRead(pin)

Считывает значение аналогового сигнала на пине pin и возвращает результат в виде числа в диапазоне [0.0; 1.0].

Пин должен поддерживать чтение аналоговых сигналов. См. функции пинов в документации на свою плату.

Если перед вызовом не вызывалась функция pinMode, пин будет автоматически переведён в режим 'analog'.

analogWrite(pin, value[, opts])

Выдаёт аналоговый сигнал на пине pin. Используется аппаратный ШИМ или ЦАП, если они доступны на пине. См. функции пинов в документации на свою плату.

В случае ШИМ value задаёт скважность, в случае ЦАП — величину напряжения. В любом случае ожидается значение в диапазоне [0.0; 1.0].

В качестве необязательного параметра opts принимается объект с полями:

  • freq — частота ШИМ в герцах;
  • soft — если true и аппаратный ШИМ не доступен на пине, будет использован программный ШИМ;
  • forceSoft — если true, будет использован программный ШИМ даже при наличии аппаратного.
analogWrite(P9, 0.5);
analogWrite(P8, 0.4, {freq: 20});
analogWrite(P7, 0.1, {freq: 20, soft: true});

Если перед вызовом функции не вызывалась pinMode, пин будет автоматически переведён в режим 'output'.

clearWatch([id])

Останавливает наблюдение за пином. Параметр id — идентификатор, который вернула setWatch.

var id = setWatch(function() { print('Hello'); }, P3);
// ...
clearWatch(id);

Если id опущен, будут остановлены все наблюдения за пинами.

digitalPulse(pin, value, time)

Генерирует импульс на пине pin длительностью time миллисекунд. value задаёт значение пульса: 1 — высокий сигнал, 0 — низкий.

Для точности функция использует аппаратный таймер и не блокирует исполнение программы, т.е. возвращается до того, как закончится импульс. Передайте 0 в качестве time, чтобы дождаться окончания предыдущего импульса.

В качестве time можно передать массив. В этом случае будет выдана серия импульсов с противоположными значениями длительностью, определяемой значением элементов массива, начиная с value.

digitalPulse(A3, 1, 1.5); // высокий импульс на 1.5 мс
digitalPulse(A3, 1, 0); // остановка до завершения импульса
 
// 100 мкс — низкий сигнал
// 200 мкс — высокий
// 300 мкс — снова низкий
digitalPulse(A3, 0, [0.1, 0.2, 0.3]); 

Используйте функцию для коротких и очень точных импульсов. Для работы с периодами свыше нескольких миллисекунд используйте setTimeout.

Если перед вызовом не вызывалась функция pinMode, пин будет автоматически переведён в режим 'output'.

digitalRead(pin)

Считывает цифровой сигнал с пина pin. Возвращает 1, если на пине — логическая единица и 0, если на пине — логический ноль.

В качестве pin можно передать массив пинов. В этом случае, функция вернёт число где значения сигнала размещены в битах. Последний элемент массива будет соответствовать младшему биту результата.

var x = digitalRead(A0); // считываем с одного пина
 
// считываем с группы
x = digitalRead([A2, A1, A0]);
// если на A2 и A1 — единица, а на A0 — ноль,
// результатом будет 0b110

Если перед вызовом не вызывалась функция pinMode, пин будет автоматически переведён в режим 'input'.

digitalWrite(pin, value)

Устанавливает цифровой сигнал на пине pin: логическую единицу, если value1 или true, логический ноль, если value0 или false.

В качестве pin можно передать массив пинов. В этом случае считается, что число value кодирует значения для пинов на соответствующих позициях битов. Последнему элементу массива pin соответствует младший бит value. Выставление значений происходит последовательно, начиная с последнего пина, т.е. справа налево. Вы можете использовать один и тот же пин в массиве несколько раз, чтобы реализовать очень короткий импульс.

digitalWrite(P3, 1); // выставляем логическую единицу на P3
 
// делаем короткий импульс на P5 и сразу после него
// короткий импульс на P4
digitalWrite([P4, P5], 0b0101);

Если перед вызовом не вызывалась функция pinMode, пин будет автоматически переведён в режим 'output'.

getPinMode(pin)

Возвращает текущий режим работы пина pin в виде строковой константы. Смотрите pinMode для возможных значений.

pinMode(pin[, mode])

Устанавливает режим работы пина pin в соответствие с mode:

  • 'analog' — аналоговый вход;
  • 'input' — цифровой вход;
  • 'input_pullup' — цифровой вход с внутренним подтягивающим резистором (~40 кОм);
  • 'input_pulldown' — цифровой вход с внутренним стягивающим резистором (~40 кОм);
  • 'output' — цифровой выход;
  • 'opendrain' — цифровой выход с открытым стоком, для которого логическая единица замыкает пин на землю, а логический ноль формирует разрыв цепи;
  • 'af_output' — цифровой выход встроенной периферии;
  • 'af_opendrain' — цифровой выход с открытым стоком внутренней периферии;
  • не задан — автоматический режим.

Функции для работы с пинами — например digitalRead или digitalWrite — самостоятельно устанавливают нужный режим работы пина, если вы предварительно не вызвали pinMode явно. Чтобы вернуть автоматический режим, вызовите pinMode без параметра mode.

setWatch(callback, pin [, opts])

Заставляет платформу вызвать функцию callback при изменении цифрового сигнала на входе pin. В качестве opts принимается объект с полями:

  • repeat — если true, функция будет вызвана каждый раз при изменении; если false — однократно; по умолчанию false.
  • edge'rising' для фиксации только восходящего фронта, 'falling' — только нисходящего, 'both' — при изменении в любую сторону; по умолчанию 'both'.
  • debounce — время в миллисекундах для программного подавления дребезга сигнала.

В callback при вызове система передаёт параметр-объект с полями:

  • state — текущее значение пина: 0 или 1;
  • time — системное время в секундах, когда произошло наблюдаемое изменение сигнала;
  • lastTime — системное время в секундах, когда последний раз происходило любое изменение сигнала; для значений edge 'rising' и 'falling' это значение не совпадает с временем предыдущего вызова.
// Наблюдаем за кнопкой
setWatch(function(e) {
  console.log(%%'%%BTN1 was just pressed%%'%%);
}, BTN1, {
  repeat: true,
  edge: 'falling',
  debounce: 10
});
 
// Измеряем длину импульса с логическим нулём
setWatch(function(e) {
  print(%%'%%Pulse length:%%'%%, e.time - e.lastTime, %%'%%seconds%%'%%);
}, P4, {edge: 'rising'});

Функция возвращает число-идентификатор, который можно передать в clearWatch, чтобы отменить наблюдение за пином.