реклама

програмиране на ардуиноДнес ще се опитам да ви науча малко за регистрите Shift. Това са доста важна част от програмирането на Arduino, основно защото те разширяват броя на изходите, които можете да използвате, в замяна само на 3 контролни пина. Можете също така да регистрирате редове за смяна на маргаритки заедно, за да получите още повече резултати.

Това е значителен скок в трудност от предишните уроци и горещо ви препоръчвам да имате наистина добро разбиране на предишния материал (връзки в края на тази статия), както и разбиране на основи на двоичното Какво е двоичен? [Обяснена технология]Като се има предвид, че бинарният файл е толкова основен за съществуването на компютрите, изглежда странно, че никога досега не сме се занимавали с темата - затова днес си мислех, че ще дам кратък преглед на това, което бинарно ... Прочетете още за които писах миналия път.

Какво е смяна регистър?

Регистър на изместване на изхода, технически погледнато, получава данни в сериен режим и ги извежда паралелно. На практика това означава, че можем бързо да изпратим куп изходни команди към чипа, да му кажем да се активира и изходите ще бъдат изпратени до съответните пинове. Вместо да повтаряме през всеки пин, ние просто изпращаме необходимия изход на всички пинове наведнъж, като един байт или повече информация.

instagram viewer

Ако ви помогне да разберете, можете да мислите за регистър на смяната като „масив“ от цифрови изходи, но можем да пропуснем обичайните цифрови команди и просто да изпратим поредица от битове, за да ги включим или изключен.

Как работи?

Регистърът на смяна, който ще използваме - 74HC595N, включен в стартовия комплект Oomlout - се нуждае от само 3 контролни щифта. Първият е часовник - не трябва да се притеснявате твърде много за това, както контролират серийните библиотеки на Arduino то - но часовникът всъщност е само електрически импулс за включване / изключване, който задава темпото на сигнала за данни.

Ключът за застопоряване се използва, за да каже на регистъра на смяната кога трябва да включва и изключва изходите си според битовете, които току-що изпратихме - т.е., като ги фиксира на място.

И накрая, пинът за данни е мястото, където изпратихме действителните серийни данни с битовете, за да определим състоянието на включване / изключване на изходите на регистъра на смените.

Целият процес може да бъде описан в 4 стъпки:

  1. Задайте щифта за данни на висок или нисък за първия изходен щифт в регистъра на смяната.
  2. Пуснете часовника, за да „измести“ данните в регистъра.
  3. Продължете да настройвате данните и да пулсирате часовника, докато не зададете необходимото състояние за всички изходни пинове.
  4. Импулсирайте щифта, за да активирате изходната последователност.

изпълнение

За този проект се нуждаете от следните компоненти:

  • 7HC595N чип за регистриране на смяна
  • 8 светодиода и подходящи резистори или каквото искате да изведете
  • Обичайната дъска, конектори и основен Arduino

Ако имате стартов комплект Oomlout, можете да изтеглите оформлението на таблото от тук.

Ето видеото за монтажа:

Оформление на дъската:

програмиране на ардуино

И моята сглобена версия:

Програмиране на Arduino - Игра със сменени регистри (a.k.a още повече светодиоди) сглобен урок за регистър на смяна

Промених оригиналния код, предоставен от Ooolmout, но ако искате да опитате това, той може да бъде изтеглен изцяло тук. Включено е обяснението на кода, така че копирайте и поставете цялото нещо отдолу или pastebin да прочетете обяснение на кода.

/ * * | Ръководство за смяна на регистър, основаващо се на | * | Комплект за експериментиране на Arduino CIRC-05 | * |.: 8 Още светодиоди:. (74HC595 Shift Register) | * * | Променено от James @ MakeUseOf.com | * * / // Определения за пин. // 7HC595N има три пина. int данни = 2; // където изпращаме битовете за управление на изходи int clock = 3; // поддържа данните в синхрон. int резе = 4; // казва регистъра на смяната кога да активира настройката за невалидност на изходната последователност {// задайте трите контролни пина за извеждане на pinMode (данни, изход); pinMode (часовник, изход); pinMode (резе, изход); Serial.begin (9600); // така че можем да изпращаме съобщения за отстраняване на грешки до сериен монитор. } void loop () {outputBytes (); // основният ни изход, който пише 8-битови, за да покаже как работи регистърът на смени. //outputIntegers(); // изпраща цяло число като данни вместо байтове, като ефективно се брои в двоични. } void outputIntegers () {for (int i = 0; i <256; i ++) {digitalWrite (фиксатор, LOW); Serial.println (i); // Отстраняване на грешки, изпращане на изход към серийния монитор shiftOut (данни, часовник, MSBFIRST, i); digitalWrite (резе, HIGH); забавяне (100); }} void outputBytes () {/ * Байтове или 8-битове се представят от B, последвано от 8 0 или 1s. В този случай считайте това за масив, който ще използваме за контрол на 8-те светодиода. Тук стартирах стойността на байта като 00000001 * / байт dataValues ​​= B00000001; // променете това, за да коригирате стартовия модел / * В контура for for започваме, като дърпаме резето ниско, използвайки функцията shiftOut Arduino да говорете с регистъра за смяна, изпращайки ни нашия байт dataValues, представящи състоянието на светодиодите, след което издърпайте ключалката високо, за да ги заключите в място. Накрая преместваме битовете на едно място наляво, което означава, че следващата итерация ще включи следващия светодиод в серията. За да видите точната двоична стойност, която се изпраща, проверете серийния монитор. * / за (int i = 0; i <8; i ++) {digitalWrite (резе, LOW); Serial.println (dataValues, BIN); // Отстраняване на грешки, изпращане на изход към сериен монитор shiftOut (данни, часовник, MSBFIRST, dataValues); digitalWrite (резе, HIGH); dataValues ​​= dataValues ​​<< 1; // Преместете битовете на едно място наляво - променете на >>, за да регулирате забавянето на посоката (100); } }

Превключване на бит (функция OutputBytes)

В първия пример на цикъл - outputBytes () - кодът използва 8-битова последователност (байт), която след това измества наляво всяка итерация на цикъла за. Важно е да се отбележи, че ако се изместите по-далеч от възможното, битът просто се губи.

Преместването на битовете се извършва с помощта на << или >>, последвано от броя на битовете, които искате да преместите.

Вижте следния пример и се уверете, че разбирате какво се случва:

байт вал = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, загубихме тези други бита! val = val >> 5 // B00000010. 

Вместо това да се изпращат цели числа (функция OutputIntegers)

Ако изпратите цяло число в регистъра на смените вместо байт, той просто ще преобразува числото в двоична байтова последователност. В тази функция (коментиране в цикъла и качване, за да видите ефекта), имаме цикъл за цикъл, който отчита 0-255 (най-голямото цяло число, което можем да представим с един байт), и го изпраща вместо това. По принцип се брои в двоични, така че последователността може да изглежда малко произволна, освен ако вашите светодиоди не са разположени на дълъг ред.

Например, ако прочетете двоичната обяснена статия, ще знаете, че числото 44 ще бъде представено като 00101100, така че светодиодите 3,5,6 ще светят в този момент в последователността.

Програмиране на Arduino - Игра със сменени регистри (a.k.a още повече светодиоди) двоичен 44

Дейзи верига повече от един смяна регистър

Забележителното при Shift регистрите е, че ако им се предостави повече от 8 бита информация (или колкото и голям да е регистърът им), те ще изместят отново останалите битове. Това означава, че можете да свържете поредица от тях заедно, да вкарате в една дълга верига битове и да я разпределите във всеки регистър поотделно, всички без допълнително кодиране от ваша страна.

Въпреки че тук няма да описваме подробно процеса или схемите, ако имате повече от един регистър за смяна, можете да опитате проекта от официалния сайт на Arduino тук.

Други статии от поредицата:

  • Какво е Arduino и какво можете да направите с него Какво е Arduino и какво можете да направите с него?Arduino е забележително малко електронно устройство, но ако никога досега не сте използвали такова, какви точно са те и какво можете да направите с такова? Прочетете още ?
  • Какво представлява стартов комплект Arduino и какво съдържа? Какво е включено в стартовия комплект за Arduino? [MakeUseOf обяснява]По-рано представих хардуера с отворен код на Arduino тук на MakeUseOf, но ще ви трябва повече от само действителния Arduino, за да изградите нещо от него и всъщност да започнете. Arduino "стартови комплекти" са ... Прочетете още
  • Още готини компоненти, които да купите с вашия стартов комплект 8 повече готини компоненти за вашите проекти на ArduinoТака че мислите да вземете стартов комплект Arduino, но се чудите дали някои основни светодиоди и резистори ще бъдат достатъчни, за да ви заемат за уикенда? Вероятно не. Ето още 8 ... Прочетете още
  • Първи стъпки с вашия стартов комплект Arduino? Инсталиране на драйвери и настройка на платката и порта Първи стъпки с вашия Arduino Starter Kit - Инсталиране на драйвери и настройка на дъската и портаТака че, купихте си стартов комплект Arduino и вероятно някои други произволни готини компоненти - сега какво? Как всъщност започвате с програмирането на това нещо от Arduino? Как да го настроите ... Прочетете още
  • Fritzing, безплатен инструмент за рисуване на схеми Fritzing - Най-добрият инструмент за очертаване на проекти за електроника [Cross Platform]Въпреки че звучи като алкопоп, Fritzing всъщност е невероятен бит безплатен софтуер, който можете да използвате за създаване схеми за схеми и компоненти за използване с бързо-прототипиращи електронни платки като фантастичния отворен код Arduino ... Прочетете още
  • По-подробен поглед върху структурата на приложението на Arduino и примерната програма за мигане Първи стъпки с Arduino: По-внимателен поглед към платката и структурата на програматаПоследният път ви оставих да настроите вашия Arduino да работи с Mac или Windows и качих обикновено пробно приложение, което мигаше на бордовия светодиод. Днес ще обясня кода ... Прочетете още
  • Проектът за осветление на дърво Arduino Xmas Проект на Arduino: Как да направите орнаменти с мигащи коледни светлиниТова е следващата част от нашата учебна серия Arduino и този път ще научим и използваме Arrays, за да направим малко украшение за коледно дърво с различни мигащи последователности. Това би било ... Прочетете още (AKA научава за масиви)
  • Какво е Binary? Какво е двоичен? [Обяснена технология]Като се има предвид, че бинарният файл е толкова основен за съществуването на компютрите, изглежда странно, че никога досега не сме се занимавали с темата - затова днес си мислех, че ще дам кратък преглед на това, което бинарно ... Прочетете още

Това е, доколкото днес ще стигнем до регистрите за смяна, тъй като смятам, че сме покрили много. Както винаги, аз ви препоръчвам да играете и да коригирате кода и не се колебайте да задавате всякакви въпроси, които може да имате в коментарите, или дори да споделите връзка към вашия страхотен проект, базиран на регистър за смяна.

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.