Занятие №4 Цикл For… - Проект Arduino в лицее №17 г. Северодвинска


Источник: parshev.wordpress.com



В котором мы рассмотрим применение алгоритмической конструкции цикл «For» и поработаем с ChipKit Basic I/O Shield.

Нам понадобятся:

  • ChipKit Uno32
  • ChipKit Basic I/O Shield.

Можно работать и без ChipKit Basic I/O Shield, собрав на монтажной плате примерно такую схему:

Примерная схема для Arduino

У нас же есть ChipKit Basic I/O Shield, на котором уже есть замечательный ряд из 8 диодов, «сидящих» на 26-33 пине.

Наша задача:

реализовать различные движения огоньков диодов с помощью цикла.

Зачем вообще цикл, если мы уже делали огонёк без всяких циклов? (если не считать, что у нас вообще всё находится в  цикле loop()

Ну, давайте начнём писать программу, как обычно с инициализации портов:
void setup () {
pinMode (26, OUTPUT);
pinMode (27, OUTPUT);
pinMode (28, OUTPUT);
pinMode (29, OUTPUT);
pinMode (30, OUTPUT);
pinMode (31, OUTPUT);
pinMode (32, OUTPUT);
pinMode (33, OUTPUT);
}

Ужас! Куча одинаковых команд. Почти одинаковых.
К счастью, мы можем написать команду pinMode один раз и заставить её повторяться многократно для различных значений некоторой переменной величины.
Обозначим эту переменную буквой i.
Ту же процедуру перепишем, используя цикл:
void setup () {
for (int i=26; i<=33; i++) {
pinMode (i, OUTPUT);
}
}

По русски это можно прочитать так: к целочисленной переменной i, которая вначале равна 26 прибавлять 1 (i++), пока её значение меньше либо равно 33. При каждом значении переменной i будут выполняться операции, записанные в фигурных скобках (тело цикла).
Таким образом обе написанные процедуры выполняют одни и те же команды, но вторая более компактна и профессиональна.
Да, кстати, если Вы работаете без ChipKit Basic I/O Shield, то заголовок цикла будет таким: for (int i=6; i<=13; i++)

Идём далее. Реализуем простой огонёк, бегущий от диода на 26 пине, до диода на 33. Будем называть диоды по номеру их пина: 26, 27, 28 диод…
void loop() {
for (int i=26; i<=33; i++) {
digitalWrite(i,HIGH);
delay(50);
digitalWrite(i,LOW);
}
}

Программа целиком:
void setup () {
for (int i=26; i<=33; i++) {
pinMode (i, OUTPUT);
}
}
void loop() {
for (int i=26; i<=33; i++) {
digitalWrite(i,HIGH);
delay(50);
digitalWrite(i,LOW);
}
}

Прошиваем, получается так: видео или так без ChipKit Basic I/O Sheld видео

Теперь пусть у нас последовательно зажгутся все диоды, а потом последовательно погаснут (видео):

void setup () {
for (int i=26; i<=33; i++) {
pinMode (i, OUTPUT);
}
}
void loop() {

//Последовательно включаем диоды

for (int i=26; i<=33; i++) {
digitalWrite(i,HIGH);
delay(50);
}

// И последовательно их выключаем

for (int i=26; i<=33; i++) {
digitalWrite(i,LOW);
delay(50);
}

}

А может, пусть огонёк бегает туда-сюда (видео)?

void setup () {
for (int i=26; i<=33; i++) {
pinMode (i, OUTPUT);
}
}
void loop() {

//В одну сторону

for (int i=26; i<=33; i++) {
digitalWrite(i,HIGH);
delay(50);
digitalWrite(i,LOW);

}

// И в другую (изменён заголовок цикла):

for (int i=33; i>=26; i--) {
digitalWrite(i,HIGH);
delay(50);
digitalWrite(i,LOW);
}

}

Можно придумать и другие способы движения огонька. Например так:

Или так для варианта без ChipKit Basic I/O Shield, для 5 диодов на 8-12 пинах (здесь используется вложенный цикл, т.е. цикл, выполняемый циклом).

void setup () {
for (int i=8; i<=12; i++) {
pinMode (i, OUTPUT);
}
}
void loop() {
for (int i=12; i>=8; i--) {
for (int k=8; k<=i; k++){
digitalWrite(k,HIGH);
delay(100);
digitalWrite(k,LOW);
}
digitalWrite(i,HIGH);
}
}

А вот так этот выглядит если использовать обычную монтажную плату: видео

Задание.

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

На этом пока всё.

КОНЕЦ ЗАНЯТИЯ.

Удачных экспериментов!


На нашем сайте доступна подборка инструкций и учебных пособий по ардуино. Ознакомиться и скачать можно в этом разделе: Скачать инструкции - книги по ардуино.

Ключевые слова:
диод
резистор
курс микроэлектроники
arduino
микросхема
скетч
плата Ардуино Уно
Микроконтроллер
Платформа Arduino
pinMode
OUTPUT
digitalWrite
ChipKit
Shield
Ардуино
цикл
программа
диоды
схема
последовательно
движения
видео
Роботы на платформе Ардуино
робот
робототехника


Вернуться в рубрику:

Проекты на платформе Ардуино

Возможно Вас заинтересует:

Проект Arduino в лицее №17 г. Северодвинска
Проект Arduino в лицее №17 г. Северодвинска



Если вы хотите видеть на нашем сайте больше статей то кликните Поделиться в социальных сетях! Спасибо!
Смотрите также:

Обратите внимание полезная информация.