• - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!
подписаться на RSS-ленту

Программирование Arduino - дополнительные функции ввода/вывода

1. Программирование Arduino — введение
2. Структура программы, константы
3. Цифровой ввод/вывод
4. Аналоговый ввод/вывод

5. Дополнительные функции ввода/вывода сигнала

рассмотрим дополнительные специфичные функции Arduino для ввода-вывода сигнала

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val);

Описание:
Сдвиг байта данных по одному биту за раз. Начиная с младшего бита или (реже) старшего бита. Каждый бит записывается в порт dataPin, после чего порт clockPin переключается, сигнализируя, что данные установлены.
Эта методика передачи данных широко применяется для обмена данными между микроконтроллером, сенсорами и другими микроконтроллерами. (SPI)

Код (\hardware\cores\arduino\wiring_shift.c):

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)
{
	int i;

	for (i = 0; i < 8; i++)  {
		if (bitOrder == LSBFIRST)
			digitalWrite(dataPin, !!(val & (1 << i)));
		else	
			digitalWrite(dataPin, !!(val & (1 << (7 - i))));
			
		digitalWrite(clockPin, HIGH);
		digitalWrite(clockPin, LOW);		
}


Параметры:
dataPin: порт для вывода бит (int)
clockPin: порт изменяющий своё состояние после установки данных dataPin (int)
bitOrder порядок сдвига бит; MSBFIRST или LSBFIRST.
(Most Significant Bit First или Least Significant Bit First ((Little Endian — порядок от младшего к старшему )))

value: байт данных для сдвига (byte)

Примечание:
Порты dataPin и clockPin уже должны быть сконфигурированы на вывод функцией pinMode().

Пример:

  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  for (int j = 0; j < 256; j++) {
    shiftOut(dataPin, clockPin, LSBFIRST, j);
}


unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);

Вызов:
pulseIn(порт, значение); 


Описание:
Считывает импульс (высокий или низкий) c цифрового порта и возвращает продолжительность импульса в микросекундах.

Например, если параметр «значение» при вызове функции установлен в HIGH, то pulseIn() ожидает, когда на порт поступит высокий уровень сигнала. С момента его поступления начинается отсчет времени до тех пор, пока на порт не поступит низкий уровень сигнала. Функция возвращает длину импульса (высокого уровня) в микросекундах. Работает с импульсами от 10 микросекунд до 3 минут. Обратите внимание, что эта функция не будет возвращать результат, пока импульс не будет обнаружен.

Параметры:
порт: номер порта, с которого считываем импульс

значение: тип импульса HIGH или LOW

Возвращаемое значение: возвращает длительность импульса в микросекундах (тип int)

Пример:

  int duration; // объявление переменной duration типа int
  duration = pulseIn(pin, HIGH); // измеряем длительность импульса


читать далее: 6. Работа со временем

Ссылки на использованные материалы:
http://arduino.cc/en/Reference/HomePage (или же в каталоге ArduinoIDE \reference\HomePage.html )
http://freeduino.ru/arduino/lang.html
  • 0
  • 2 июля 2009, 12:20
  • admin

Комментарии (1)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.