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

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
Строка 31: Строка 31:
 
== Схема 2 ==
 
== Схема 2 ==
 
[[Файл:Схема-2.PNG|500px]]
 
[[Файл:Схема-2.PNG|500px]]
 +
 +
=== Код ===
 +
<syntaxhighlight lang="C++" line>
 +
//Задание глобальных переменных
 +
//Глобальные переменные обладают областью видимости в любом месте программы
 +
int ledLamps[] = {2,3,4,5,6,7,8,9,10};
 +
//Задание массива (нескольких значений), хранящего номера пинов для светодиодов
 +
int lastLamp = 8; //Значение (маркер) для хранения последнего включенного //светодиода (последний элемент – всего 9 элементов, нумерация начинается с 0)
 +
//Установка начальных параметров
 +
 +
void setup()
 +
{
 +
//Будем обходить значения по очереди (в цикле), увеличивая с каждым проходом 
 +
//цикла значение переменной element и присваивать текущему значению пина,
 +
//значение OUTPUT
 +
int element; //Объявление вспомогательной переменной для обхода цикла
 +
for (element = 0; element <= 8; element++) //Конструкция цикла
 +
{ //конструкция «++» означает инкремент (увеличение на 1)
 +
  pinMode(ledLamps[element], OUTPUT);
 +
}
 +
}
 +
 +
void loop() // Основной цикл
 +
{
 +
//Включение светодиодов по очереди
 +
//Циклом обходим элементы массива номеров пинов
 +
int element; //Объявление вспомогательной переменной для обхода цикла
 +
//Обходим все элементы массива пинов
 +
for (element = 0; element<=8; element++)
 +
  {
 +
    //Проверим: если сейчас не последний элемент – значит, просто «моргнуть»
 +
    if(element != lastLamp)
 +
      {
 +
      digitalWrite(ledLamps[element], HIGH); //Включить светодиод
 +
      delay(100); //Задержка на 0,1 секунды
 +
      digitalWrite(ledLamps[element], LOW); //Выключить светодиод
 +
      delay(100); //Задержка на 0,1 секунды
 +
      }
 +
    else //Иначе, если это последний элемент, только зажечь
 +
      {
 +
      digitalWrite(ledLamps[element], HIGH); //Включить светодиод
 +
      delay(100); //Задержка на 0,1 секунды
 +
      lastLamp--; //Т.к. последний элемент зажгли, нужно уменьшить маркер
 +
      //последнего элемента на 1 (конструкция «--» означает декремент
 +
      //(вычитание) единицы)
 +
      break; //Принудительно прерываем цикл, чтобы остальные светодиоды,
 +
      //которые уже зажжены, не трогать
 +
      }
 +
    }
 +
//После того как цикл прошел несколько раз (по количеству светодиодов), маркер
 +
//последнего светодиода станет меньше нуля, поэтому мы выключим все светодиоды
 +
//по очереди и снова установим маркер на 8
 +
if (lastLamp<0)
 +
  {
 +
  //Снова в цикле обойдем все светодиоды и отключим каждый
 +
  for (element = 0; element <=8; element++)
 +
  {
 +
    digitalWrite(ledLamps[element], LOW); //Отключение
 +
    delay(200); //Задержка на 0,2 секунды
 +
  }
 +
  lastLamp = 8; //Возвращаем маркер на 8 (начальное положение)
 +
  } 
 +
}
 +
 +
</syntaxhighlight>
 +
 
== Схема 3 ==
 
== Схема 3 ==
 
[[Файл:Схема-3.JPG|500px]]
 
[[Файл:Схема-3.JPG|500px]]

Версия 10:10, 10 января 2023

Схема 1

Схема-1.PNG

Код

 1 //Задание глобальных переменных целочисленного типа integer
 2 //Присваивание переменной ledLamp (светодиод) значение выхода 12 на плате
 3 int ledLamp = 12;
 4 
 5 //Установка начальных параметров
 6 void setup()
 7 {
 8  //Задание пина ledLamp в качестве выходного
 9  pinMode(ledLamp, OUTPUT);
10 }
11 
12 //Основной цикл (повторяется бесконечно)
13 void loop()
14 {
15  //Назначение выходного сигнала от пина (выхода ledLamp) HIGH (5 вольт)
16  digitalWrite(ledLamp, HIGH);      //Включение светодиода
17  //Пауза 2000 – задается в миллисекундах (1 секунда = 1000 миллисекунд)
18  delay(2000);
19  //Назначение выходного сигнала от пина (выхода ledLamp) LOW (0 вольт)
20  digitalWrite(ledLamp, LOW);      //Выключение светодиода
21  //И опять задержка 2 секунды 
22  delay(2000);
23 }

Схема 2

Схема-2.PNG

Код

 1 //Задание глобальных переменных 
 2 //Глобальные переменные обладают областью видимости в любом месте программы
 3 int ledLamps[] = {2,3,4,5,6,7,8,9,10}; 
 4 //Задание массива (нескольких значений), хранящего номера пинов для светодиодов
 5 int lastLamp = 8; //Значение (маркер) для хранения последнего включенного //светодиода (последний элемент – всего 9 элементов, нумерация начинается с 0)
 6 //Установка начальных параметров
 7 
 8 void setup()
 9 {
10  //Будем обходить значения по очереди (в цикле), увеличивая с каждым проходом  
11  //цикла значение переменной element и присваивать текущему значению пина, 
12  //значение OUTPUT
13  int element; //Объявление вспомогательной переменной для обхода цикла
14  for (element = 0; element <= 8; element++) //Конструкция цикла
15  { //конструкция «++» означает инкремент (увеличение на 1)
16    pinMode(ledLamps[element], OUTPUT);
17  }
18 }
19 
20 void loop() // Основной цикл
21 {
22  //Включение светодиодов по очереди
23  //Циклом обходим элементы массива номеров пинов
24  int element; //Объявление вспомогательной переменной для обхода цикла
25  //Обходим все элементы массива пинов
26  for (element = 0; element<=8; element++)
27    {
28     //Проверим: если сейчас не последний элемент – значит, просто «моргнуть»
29     if(element != lastLamp)
30       {
31        digitalWrite(ledLamps[element], HIGH); //Включить светодиод
32        delay(100); //Задержка на 0,1 секунды
33        digitalWrite(ledLamps[element], LOW); //Выключить светодиод
34        delay(100); //Задержка на 0,1 секунды
35       }
36      else //Иначе, если это последний элемент, только зажечь
37       {
38        digitalWrite(ledLamps[element], HIGH); //Включить светодиод
39        delay(100); //Задержка на 0,1 секунды
40        lastLamp--; //Т.к. последний элемент зажгли, нужно уменьшить маркер
41        //последнего элемента на 1 (конструкция «--» означает декремент
42        //(вычитание) единицы) 
43        break; //Принудительно прерываем цикл, чтобы остальные светодиоды,
44        //которые уже зажжены, не трогать
45       }
46     }
47  //После того как цикл прошел несколько раз (по количеству светодиодов), маркер 
48  //последнего светодиода станет меньше нуля, поэтому мы выключим все светодиоды
49  //по очереди и снова установим маркер на 8 
50  if (lastLamp<0) 
51   {
52    //Снова в цикле обойдем все светодиоды и отключим каждый
53    for (element = 0; element <=8; element++) 
54    {
55     digitalWrite(ledLamps[element], LOW); //Отключение
56     delay(200); //Задержка на 0,2 секунды
57    }
58    lastLamp = 8; //Возвращаем маркер на 8 (начальное положение)
59   }  
60 }

Схема 3

Схема-3.JPG

Схема 4

Схема-4.JPG

Схема 7

Схема-7.png

Схема 8

Схема-8.png

Схема 10

Схема-10.png