реклама

Светофарът Arduino е забавен малък проект, който можете да изградите за по-малко от час. Ето как да изградите своя собствена с помощта на Arduino и как да промените схемата за разширена версия.

Ако предпочитате да гледате това като урок като видео, ние ви покрихме:

Какво ви е необходимо, за да изградите контролер за светофари Arduino

Освен основния Arduino, ще ви трябва:

  • 1 x 10k-омов резистор
  • 1 x превключвател
  • 6 х 220 ома резистори
  • Пътна дъска
  • Свързване на проводници
  • Червени, жълти и зелени светодиоди

Почти всеки Arduino ще работи за този проект, при условие че има достатъчно щифтове. Уверете се, че четете нашите Ръководство за закупуване на Arduino Ръководство за купуване на Arduino: Кой съвет трябва да получите?Има толкова много различни видове Arduino дъски, че ще ви бъде простено, че сте объркани. Кой трябва да закупите за вашия проект? Нека да помогнем с това ръководство за купуване на Arduino! Прочетете още ако не сте сигурни какъв модел имате нужда. Вече може да имате тези части във вашия

instagram viewer
Arduino стартов комплект Какво има в стартовия ви комплект Arduino? [Ардуино начинаещи]Сблъсквайки се с кутия, пълна с електронни компоненти, е лесно да бъдете затрупани. Ето ръководство за това какво точно ще намерите във вашия комплект. Прочетете още .

Светофар Arduino: Основите

Да започнем с малки. Основен, единичен светофар е доброто място за стартиране. Ето схемата:

Верижна схема за основен светофар Arduino

Свържете анода (дълъг крак) на всеки светодиод към цифрови щифтове осем, девет и десет (чрез резистор 220 ома). Свържете катодите (къс крак) към земята на Arduino.

Код за светофара Arduino

Започнете с дефиниране на променливи, така че да можете да адресирате светлините по име, а не по число. Започнете нов проект на Arduino и започнете с тези редове:

int червено = 10; вътрешно жълто = 9; int green = 8;

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

void setup () {pinMode (червен, OUTPUT); pinMode (жълт, OUTPUT); pinMode (зелен, изход); }

Най- pinMode функция конфигурира Arduino да използва даден пин като изход. Трябва да направите това, за да работят светодиодите ви изобщо. Сега за действителната логика на светофара. Ето кода, от който се нуждаете Добавете това под вашите променливи дефиниции и функция за настройка:

void loop () {changeLights (); забавяне (15000); } void changeLights () {// зелено изключено, жълто включено за 3 секунди digitalWrite (зелено, LOW); digitalWrite (жълто, ВИСОКО); забавяне (3000); // изключете жълто, след това включете червено за 5 секунди digitalWrite (жълто, НИСКО); digitalWrite (червен, ВИСОКИ); забавяне (5000); // червено и жълто включено за 2 секунди (червеното вече е включено) digitalWrite (жълто, ВИСОКО); забавяне (2000 г.); // изключете червено и жълто, след това включете зелено digitalWrite (жълто, LOW); digitalWrite (червено, НИСКО); digitalWrite (зелен, ВИСОКИ); забавяне (3000); }

Качете този код във вашия Arduino и стартирайте (не забравяйте да изберете правилната дъска и порт от Инструменти > борд и Инструменти > порт менюта). Трябва да имате работещ светофар, който се променя на всеки 15 секунди, като този (ускорено):

Светофар Arduino в действие

Нека разбием този код Най- changeLights функция изпълнява цялата упорита работа. Това завърта светофара през жълто и червено, след това обратно към зелено. Тъй като това се нарича вътре в контур функция, Arduino ще изпълнява този код завинаги, с 15-секундна пауза всеки път.

Най- changeLights Функцията се състои от четири различни стъпки:

  • Зелено включено, жълто изключено
  • Жълто изключено, червено на
  • Жълто, червено
  • Зелено включено, червено изключено, жълто изключено

Тези четири стъпки възпроизвеждат процеса, използван на реални светофари. За всяка стъпка кодът е много подобен. Подходящият светодиод се включва или изключва с помощта digitalWrite. Това е функция Arduino, използвана за задаване на изходни щифтове на HIGH (за включено) или LOW (за изключване).

След като активирате или деактивирате необходимите светодиоди, закъснение кара Arduino да чака определено време. Три секунди в случая.

Тръгване по-дълбоко: Ардуино пешеходен преход

Сега, когато знаете основите, нека го подобрим. Добавете бутон за пешеходците, за да променят светлината, когато пожелаят:

Схема на верига за пешеходен преход Arduino

Забележете как светофарът е абсолютно същият като предишния пример. Свържете бутона към цифров пин 12. Ще забележите, че ключът има прикрепен към него резистор с висок импеданс 10k-ом и може би се чудите защо. Това е спускащ се резистор.

Превключвателят или позволява текущия поток, или не. Това изглежда достатъчно просто, но в логическа верига токът трябва винаги да тече във високо или ниско състояние (не забравяйте, 1 или 0, HIGH или LOW). Може да предположите, че превключвателят с бутон, който всъщност не е натиснат, би бил в състояние НИСКО, но всъщност се казва, че е "плаващ", тъй като изобщо не се изтегля ток.

В това плаващо състояние е възможно да се появи фалшиво отчитане, тъй като той се колебае с електрически смущения. С други думи, плаващ превключвател не дава нито надеждно високо, нито ниско отчитане. Изпускащият резистор поддържа малко количество ток, който тече, когато превключвателят се затвори, като по този начин гарантира точно отчитане на ниско състояние.

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

Сега, в частта на кода на кода, вместо да променяте осветлението на всеки 15 секунди, вместо това ще четете състоянието на превключвателя на бутоните и ще сменяте светлините само когато е активиран.

Код за пешеходния преход Arduino

Започнете с добавяне на нова променлива, за да запазите щифта на бутона:

бутон int = 12; // превключвателят е на щифт 12. 

Сега във функцията за настройка добавете нов ред, за да декларирате превключвателя като вход. Добавете линия, за да настроите светофарите на зелената сцена. Без тази първоначална настройка те биха изключили до първия път changeLights работи.

pinMode (бутон, INPUT); digitalWrite (зелен, ВИСОКИ);

Променете цялата функция на цикъл на следната:

void loop () {if (digitalRead (бутон) == HIGH) {забавяне (15); // софтуерно дебютиране if (digitalRead (бутон) == HIGH) {// ако превключвателят е HIGH, т.е. бутната надолу - сменете светлините! changeLights (); забавяне (15000); // изчакайте 15 секунди}} }

Това трябва да го направи. Може би се чудите защо проверката на бутоните се случва два пъти (digitalRead (бутон)), разделени от малко закъснение. Това е разплитане. Подобно на падащия резистор за бутона, тази проста проверка спира кода, откривайки незначителни смущения при натискане на бутона.

Като чакате вътре в ако за 15 секунди, светофарите не могат да се променят поне за тази продължителност. След като 15 секунди приключи, цикълът се рестартира. При всяко рестартиране на цикъла, той отново прочита състоянието на бутона, но ако не е натиснат, ако оператор никога не се активира, светлините никога не се променят и програмата се рестартира отново.

Ето как изглежда това (ускорено):

Пешеходен преход Arduino в действие

Светофор Arduino с кръстовище

Нека опитаме по-усъвършенстван модел. Вместо пешеходен преход сменете веригата си, за да има два светофара:

Графична схема за светофари Arduino с кръстовище

Свържете втория светофар към цифровите пинове 11, 12 и 13.

Код за светофара Arduino с кръстовище

Първо, присвойте новите си пинове на светофара на променливи и ги конфигурирайте като изходи, като в първия пример:

// лека. int red1 = 10; int yellow1 = 9; int green1 = 8; // лека две. int red2 = 13; int yellow2 = 12; int green2 = 11; void setup () {// свети един pinMode (червен1, OUTPUT); pinMode (жълт1, изход); pinMode (green1, OUTPUT); // свети два pinMode (червен2, изход); pinMode (жълт2, изход); pinMode (green2, OUTPUT); }

Сега, актуализирайте контура, за да използвате кода от първия пример (вместо пешеходната пътека):

void loop () {changeLights (); забавяне (15000); }

Още веднъж цялата работа се извършва в changeLights функция. Вместо да отида червен > червен & жълт > зелен, този код ще редува светофарите. Когато едната е на зелено, другата е на червено. Ето кода:

void changeLights () {// включете и двете жълти на digitalWrite (green1, LOW); digitalWrite (жълт1, ВИСОКИ); digitalWrite (жълт2, ВИСОКИ); забавяне (5000); // изключете и двете жълти, и противоположно зелено и червено digitalWrite (жълто1, НИСКО); digitalWrite (червен1, ВИСОКИ); digitalWrite (жълт2, нисък); digitalWrite (червено2, НИСКО); digitalWrite (green2, HIGH); забавяне (5000); // и двете жълти на отново digitalWrite (yellow1, HIGH); digitalWrite (жълт2, ВИСОКИ); digitalWrite (green2, LOW); забавяне (3000); // изключете както жълтите, така и противоположните зелени и червени digitalWrite (зелено1, ВИСОКО); digitalWrite (жълто1, НИСКО); digitalWrite (червен1, нисък); digitalWrite (жълт2, нисък); digitalWrite (червен2, ВИСОКИ); забавяне (5000); }

Ето как изглежда (ускори):

Светофор Arduino с кръстовище в действие

Следващите стъпки на светофара Arduino

Това е всичко за днес. Вашето ново разбиране за светодиодите и бутоните на Arduino се отнася за всички видове различни проекти. Ако искате да разширите тези светофари, защо да не изградите четирипосочен (или повече) кръстовище, комплектован с много пешеходни преходи и пешеходни светофари?

Или защо да не разширите новите си умения с по-голям проект като този Направи си MIDI контролер или Arduino робот с Xod? Можете също да разгледате Arduino кодиране с VS код и PlatformIO По-добро кодиране на Arduino с VS код и PlatformIOИскате лесен начин да започнете да кодирате Arduino? С PlatformIO и VS Code можете да опростите проектите на Arduino и да научите по-бързо. Прочетете още .

Кредит за изображение: androsvector / Shutterstock

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети дронове или пише музика, често може да бъде намерен да прави снимки или да прави видео.