Почему у светодиодной шкалы на 10 сегментов 20 ножек? — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Почему у светодиодной шкалы на 10 сегментов 20 ножек?

2018-01-30 2903
Почему у светодиодной шкалы на 10 сегментов 20 ножек? 4.67 из 5.00 3 оценки
Заказать работу

У каждого светодиода свой катод и свой анод.

Зачем в схеме биполярный транзистор?

Без него такое количество светодиодов будет потреблять больше тока, чем 40 мА, которые может себе позволить цифровой пин платы. Поэтому мы берем питание из порта 5V, рассчитанного на ток до 500 мА, а на цифровой порт ставим транзистор, чтобы с помощью малого тока управлять большим.

За счет чего увеличивается яркость шкалы?

За счёт прибавления единицы к int brightness = 0, каждый раз яркость будет увеличиваться на единицу.

Почему после достижения значения 255 переменная rightness обнуляется?

Оператор X % Y дает остаток от деления X на Y. Если X меньше Y, т.е. целая часть результата деления равна 0, оператор % будет возвращать X. Таким образом:

· Пока brightness + 1 меньше 256, в brightness записывается значение brightness + 1

· Как только brightness + 1 принимает значение 256, результатом (brightness + 1) % 256становится 0 и на следующей итерации loop() всё начинается сначала.

Задания для самостоятельного решения

Измените программу так, чтобы яркость шкалы росла только до половины от максимальной.

Листинг:

1. #define CONTROL_PIN 9

2. int brightness = 0;

3. void setup() {

4. pinMode(CONTROL_PIN, OUTPUT);

5. Serial.begin(9600);

6. }

7. void loop() {

8. brightness = (brightness +1)%128;

9. Serial.println(brightness);

10. analogWrite(CONTROL_PIN, brightness);

11. delay(10);

12. }

Измените программу так, чтобы шкала становилась максимально яркой в три раза быстрее, без изменения функции delay.

Листинг:

1. #define CONTROL_PIN 9

2. int brightness = 0;

3. void setup() {

4. pinMode(CONTROL_PIN, OUTPUT);

5. Serial.begin(9600);

6. }

7. void loop() {

8. brightness = (brightness +3)%256;

9. Serial.println(brightness);

10. analogWrite(CONTROL_PIN, brightness);

11. delay(10);

12. }

3.Измените исходную программу так, чтобы такой же результат был получен без использования операции %, но с применением условного оператора if.

Листинг:

1. #define CONTROL_PIN 9

2. int brightness = 0;

3. void setup() {

4. pinMode(CONTROL_PIN, OUTPUT);

5. Serial.begin(9600);

6. }

7. void loop() {

8. brightness = (brightness +3);

9. Serial.println(brightness);

10. if (brightness == 255){

11. brightness=0;

12. }

13. analogWrite(CONTROL_PIN, brightness);

14. delay(10);

15. }

Эксперимент 7. Бегущийогонёк

В этом эксперименте мы заставляем огонёк бежать по светодиодной шкале.

Принципиальная схема

Код

1. #define FIRST_LED_PIN 2

2. #define LAST_LED_PIN 11

3. void setup() {

4. for(int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; pin++){

5. pinMode(pin, OUTPUT);

6. }

7. }

8. void loop() {

9. unsigned int ms = millis();

10. int pin = FIRST_LED_PIN + (ms/120)%10;

11. digitalWrite(pin,HIGH);

12. delay(10);

13. digitalWrite(pin,LOW);

14. }

Вопросы для проверки себя

Почему в данном эксперименте мы подключаем светодиодную шкалу, не используя транзистор?

Так как светодиоды в шкале будут включаться не все вместе, а по отдельности, и не будут потреблять большой ток.

Если бы мы включали светодиоды только на портах 5, 6, 7, 8, 9, что нужно было бы изменить в программе?

Листинг:

1. #define FIRST_LED_PIN 5

2. #define LAST_LED_PIN 9

3. void setup()

4. {

5. for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)

6. pinMode(pin, OUTPUT);

7. }

8. void loop()

9. {

10. unsigned int ms = millis();

11. int pin = FIRST_LED_PIN + (ms / 120) % 5;

12. digitalWrite(pin, HIGH);

13. delay(10);

14. digitalWrite(pin, LOW);

15. }

3.С помощью какой другой инструкции можно выполнить действие, эквивалентное ++pin?

pin = pin + 1

В чем разница между переменными типов int и unsigned int?

Тип данных unsigned int используют для хранения целых чисел без знака, т.е. только неотрицательных. За счет лишнего бита, который теперь не используется для хранения знака, мы можем хранить в переменной такого типа значения до 65 535.


Поделиться с друзьями:

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.