Arduino:Примеры/ShftOut21
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Два светодиодных счетчика[1]
Это скетч для платы Arduino и двух сдвиговых регистров 74HC595. Он поочередно генерирует числа от «0» до «255», передает их сдвиговым регистрам, а те передают их 16 светодиодам, которые показывают двоичную версию этих чисел.
Код
//***************************************************************//
// Название : Два светодиодных счетчика //
// Автор : Кэрлин Мо, Том Иго //
// Дата : 25 октября 2006 года //
// Версия : 1.0 //
// Примечания : Код для использования со сдвиговым //
// : регистром 74РС595, считает от «0» до «255» //
//***************************************************************//
// Контакт, подключенный к контакту ST_CP на 74HC595:
int latchPin = 8;
// Контакт, подключенный к контакту SH_CP на 74HC595:
int clockPin = 12;
// Контакт, подключенный к контакту DS на 74HC595:
int dataPin = 11;
void setup() {
// запускаем последовательную коммуникацию (в отладочных целях):
Serial.begin(9600);
// выставляем latchPin в режим OUTPUT, чтобы с его помощью
// можно было управлять сдвиговым регистром:
pinMode(latchPin, OUTPUT);
}
void loop() {
// функция для счета:
for (int j = 0; j < 256; j++) {
// пока данные передаются, ставим latchPin на LOW:
digitalWrite(latchPin, 0);
// считаем на зеленых светодиодах:
shiftOut(dataPin, clockPin, j);
// считаем на красных светодиодах:
shiftOut(dataPin, clockPin, 255-j);
// возвращаем latchPin значение HIGH, сообщая чипу,
// что ему больше не нужно прослушивать входящую информацию:
digitalWrite(latchPin, 1);
delay(1000);
}
}
// эта функция передает 8 бит данных (первым идет самый старший бит);
// передача осуществляется на возрастающем фронте тактового сигнала:
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
// аналог блока setup(), но внутри функции:
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
// стираем все, чтобы подготовить
// сдвиговый регистр к передаче битов:
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
// выполняется для каждого бита в байте myDataOut;
// обратите внимание, что в цикле for() ниже
// СЧЕТ ИДЕТ В ОБРАТНОМ НАПРАВЛЕНИИ, и это значит, что значение
// «%00000001» или «1» будет соответствовать контакту Q0:
for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);
// если значение было передано переменной myDataOut и проверка
// битовой маской прошла успешно... то есть если i=6
// и наше значение это «%11010100», код сравнит его с «%01000000»,
// а затем запишет в pinState значение «1»:
if ( myDataOut & (1<<i) ) {
pinState= 1;
}
else {
pinState= 0;
}
// задаем этому контакту HIGH или LOW в зависимости от pinState:
digitalWrite(myDataPin, pinState);
// если тактовый контакт получает значение HIGH,
// сдвиговый регистр перемещает биты:
digitalWrite(myClockPin, 1);
// после перемещения битов задаем контакту для данных
// значение «0», чтобы избежать «просачивания» данных:
digitalWrite(myDataPin, 0);
}
// останавливаем перемещение битов:
digitalWrite(myClockPin, 0);
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino