Робототехника: различия между версиями
Перейти к навигации
Перейти к поиску
Строка 212: | Строка 212: | ||
== Схема 7 == | == Схема 7 == | ||
[[Файл:Схема-7.png|500px]] | [[Файл:Схема-7.png|500px]] | ||
+ | |||
+ | === Код === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | //Определим пины | ||
+ | int photo = 0; //Пин фоторезистора | ||
+ | int ledLamp = 12; //Пин светодиода | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(ledLamp, OUTPUT); //Устанавливаем пин светодиода на «выход» | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | //Считываем значение фоторезистора в переменную light | ||
+ | int light = analogRead(photo); | ||
+ | //Если значение меньше 700(темно), включим свет | ||
+ | if (light< 700) digitalWrite(ledLamp, HIGH); | ||
+ | else digitalWrite(ledLamp, LOW); //Иначе (светло), отключим свет | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
== Схема 8 == | == Схема 8 == | ||
[[Файл:Схема-8.png|500px]] | [[Файл:Схема-8.png|500px]] | ||
== Схема 10 == | == Схема 10 == | ||
[[Файл:Схема-10.png|500px]] | [[Файл:Схема-10.png|500px]] |
Версия 10:25, 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 }
Схема 4
Код 1
1 //Определим пины
2 const int button = 10; //Пин для кнопки 10
3 const int ledLamp = 12; //Пин для светодиода 12
4
5 void setup()
6 {
7 pinMode(button, INPUT); //Установим кнопку на ввод информации
8 pinMode(ledLamp, OUTPUT); //Светодиод на вывод
9 }
10
11 void loop()
12 {
13 if (digitalRead(button) == HIGH) //Если с кнопки приходит ток
14 {
15 digitalWrite(ledLamp, HIGH); //Включаем светодиод
16 }
17 else //Иначе (тока нет)
18 {
19 digitalWrite(ledLamp, LOW); //Отключаем светодиод
20 }
21 }
Код 2
1 Включение и выключение по нажатию одной кнопки
Код 3
1 //Определим пины
2 const int button1 = 9; //Пин для кнопки № 1 – 9
3 const int button2 = 10; //Пин для кнопки № 2 – 10
4 const int ledLamp = 11; //Пин для светодиода – 11
5 int bright = 0; //Здесь будем хранить текущее значение яркости
6 boolean lastButton1 = LOW; //Последнее значение кнопки № 1 (ВЫКЛ)
7 boolean lastButton2 = LOW; //Последнее значение кнопки № 2 (ВЫКЛ)
8
9 void setup() {
10 pinMode(button1, INPUT); //Установим кнопку на ввод информации
11 pinMode(button2, INPUT); //Установим кнопку на ввод информации
12 pinMode(ledLamp, OUTPUT); //Светодиод на вывод
13 }
14
15 void loop() {
16 boolean valueButton1 = digitalRead(button1); //Считать значение кнопки №1
17 boolean valueButton2 = digitalRead(button2); //Считать значение кнопки №2
18 delay(10); //Программная задержка для избежания дребезга сигнала
19 if (valueButton1 == HIGH && lastButton1 == LOW)//Если нажали кнопку №1
20 {
21 lastButton1 = HIGH; //Последнее значение кнопки № 1 (ВКЛ)
22 bright = bright + 50; //Увеличим яркость лампочки
23 }
24 else if (valueButton2 == HIGH && lastButton2 == LOW)//Кнопка № 2
25 {
26 lastButton2 = HIGH; //Последнее значение кнопки № 2 (ВКЛ)
27 bright = bright - 50; //Уменьшим яркость
28 }
29 else //Иначе – нажатий не было, считаем состояние кнопок
30 {
31 lastButton1 = valueButton1;
32 lastButton2 = valueButton2;
33 }
34 if (bright < 0) //Если яркость опустилась ниже 0, установим ее в 0
35 {
36 bright = 0; //Яркость может быть только от 0 до 255
37 }
38 else if (bright > 255) //Если поднялась больше 255
39 {
40 bright = 255; //Установим ее в 255
41 }
42 analogWrite(ledLamp, bright); //Передадим значение яркости на светодиод
43 }
Схема 7
Код
1 //Определим пины
2 int photo = 0; //Пин фоторезистора
3 int ledLamp = 12; //Пин светодиода
4
5 void setup()
6 {
7 pinMode(ledLamp, OUTPUT); //Устанавливаем пин светодиода на «выход»
8 }
9
10 void loop()
11 {
12 //Считываем значение фоторезистора в переменную light
13 int light = analogRead(photo);
14 //Если значение меньше 700(темно), включим свет
15 if (light< 700) digitalWrite(ledLamp, HIGH);
16 else digitalWrite(ledLamp, LOW); //Иначе (светло), отключим свет
17 }