Робототехника: различия между версиями
Перейти к навигации
Перейти к поиску
Строка 99: | Строка 99: | ||
== Схема 3 == | == Схема 3 == | ||
[[Файл:Схема-3.JPG|500px]] | [[Файл:Схема-3.JPG|500px]] | ||
+ | |||
+ | === Код === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | //Задание глобальных переменных | ||
+ | //Глобальные переменные обладают областью видимости в любом месте программы | ||
+ | const int potentiometr = 0; //Потенциометр соединен с пином 0 на плате | ||
+ | const int ledLamp = 11; //Светодиод соединен с цифровым пином 11 на плате | ||
+ | int potentiometrValue; //Задание переменной для считывания значения | ||
+ | //потенциометра (целочисленный тип int) | ||
+ | |||
+ | //Установка начальных параметров | ||
+ | void setup() | ||
+ | { | ||
+ | //Задание пина ledLamp в качестве выходного | ||
+ | pinMode(ledLamp, OUTPUT); | ||
+ | } | ||
+ | |||
+ | // Основной цикл | ||
+ | void loop() | ||
+ | { | ||
+ | //Считывание значения аналогового пина potentiometr (лежит в пределах от 0 до | ||
+ | //1023 – 0-5 вольт) | ||
+ | potentiometrValue = analogRead(potentiometr); | ||
+ | //Установка напряжения на пин ledLamp светодиода | ||
+ | //(Значение напряжения лежит в пределах от 0 до 255 – поэтому разделим | ||
+ | //значение potentiometrValue на 4) | ||
+ | analogWrite(ledLamp, potentiometrValue / 4); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
== Схема 4 == | == Схема 4 == | ||
[[Файл:Схема-4.JPG|500px]] | [[Файл:Схема-4.JPG|500px]] |
Версия 10:11, 10 января 2023
Схема 1
Код
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
Код
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
Код
1 //Задание глобальных переменных
2 //Глобальные переменные обладают областью видимости в любом месте программы
3 const int potentiometr = 0; //Потенциометр соединен с пином 0 на плате
4 const int ledLamp = 11; //Светодиод соединен с цифровым пином 11 на плате
5 int potentiometrValue; //Задание переменной для считывания значения
6 //потенциометра (целочисленный тип int)
7
8 //Установка начальных параметров
9 void setup()
10 {
11 //Задание пина ledLamp в качестве выходного
12 pinMode(ledLamp, OUTPUT);
13 }
14
15 // Основной цикл
16 void loop()
17 {
18 //Считывание значения аналогового пина potentiometr (лежит в пределах от 0 до
19 //1023 – 0-5 вольт)
20 potentiometrValue = analogRead(potentiometr);
21 //Установка напряжения на пин ledLamp светодиода
22 //(Значение напряжения лежит в пределах от 0 до 255 – поэтому разделим
23 //значение potentiometrValue на 4)
24 analogWrite(ledLamp, potentiometrValue / 4);
25 }