Главная страница
Навигация по странице:

  • Экранная форма сборки

  • 1.2 Листинг кода сборки

  • 2 «Маячок с нарастающей яркостью»

  • 2.2 Листинг кода сборки

  • 3 «Светильник с управляемой яркостью»

  • 3.1 Экранная форма сборки

  • 3.2 Листинг кода сборки

  • 4.1 Экранная форма сборки

  • 4.2 Листинг кода сборки

  • 5.1 Экранная форма сборки

  • 5.2 Листинг кода сборки

  • 6.1 Экранная форма сборки

  • 6.2 Листинг кода сборки

  • 7 «Кнопочный переключатель» Задание: Измените код так, чтобы светодиод переключался только после отпускания кнопки.7.1 Экранная форма сборки

  • 7.2 Листинг кода сборки

  • 8 «Светильник с кнопочным переключением»

  • 8.1 Экранная форма сборки

  • 8.2 Листинг кода сборки

  • 9.1 Экранная форма сборки

  • 9.2 Листинг кода сборки

  • 10.1 Экранная форма сборки

  • 10.2 Листинг кода сборки

  • Практическая рабата 1. Цель работы Знакомство с элементами Arduino ide теоретическое и практическое изучение основ для работы в данной среде. 1 Маячок


    Скачать 1.37 Mb.
    НазваниеЦель работы Знакомство с элементами Arduino ide теоретическое и практическое изучение основ для работы в данной среде. 1 Маячок
    Дата13.04.2023
    Размер1.37 Mb.
    Формат файлаdocx
    Имя файлаПрактическая рабата 1.docx
    ТипДокументы
    #1059132

    Цель работы

    Знакомство с элементами Arduino IDE; теоретическое и практическое изучение основ для работы в данной среде.

    1 «Маячок»

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

      1. Экранная форма сборки

    На рисунках 1 и 2 представлены макетная и принципиальная схемы сборки.



    Рисунок 1 – Схема сборки на макетной плате



    Рисунок 2 – Принципиальная схема

    1.2 Листинг кода сборки

    int led1 = 13;

    int led2 = 12;

    void setup()

    {

    pinMode(led1, OUTPUT);

    pinMode(led2, OUTPUT);

    }

    void loop()

    {

    digitalWrite(led1, HIGH);

    digitalWrite(led2, HIGH);

    delay(1000); // Wait for 1000 millisecond(s)

    digitalWrite(led1, LOW);

    digitalWrite(led2, LOW);

    delay(1000); // Wait for 1000 millisecond(s)

    }
    Ссылка на рабочую программу: https://www.tinkercad.com/things/8iMzhEERprv-mayachok11/editel?sharecode=bnN8dZW2bAlO2m-xMeh4yeeT--fdHP3QaA2Lne04lUc

    2 «Маячок с нарастающей яркостью»

    Задание: Добавить в схему второй светодиод. Изменить программу таким образом, чтобы светодиоды в противофазе увеличивали, а потом уменьшали яркость. Не менее 4х положений.

    2.1 Экранная форма сборки

    На рисунках 3 и 4 представлены макетная и принципиальная схемы сборки.



    Рисунок 3 – Схема сборки на макетной плате



    Рисунок 4 – Принципиальная схема

    2.2 Листинг кода сборки

    int led1 = 10;

    int led2 = 9;

     

    void setup() {

    pinMode(led1, OUTPUT);

    pinMode(led2, OUTPUT);

    }

    void loop() {

    analogWrite(led1, 1);

    analogWrite(led2, 255);

    delay(200);

    analogWrite(led1, 20);

    analogWrite(led2, 170);

    delay(200);

    analogWrite(led1, 50);

    analogWrite(led2, 140);

    delay(200);

    analogWrite(led1, 125);

    analogWrite(led2, 125);

    delay(200);

    analogWrite(led1, 140);

    analogWrite(led2, 50);

    delay(200);

    analogWrite(led1, 170);

    analogWrite(led2, 20);

    delay(200);

    analogWrite(led1, 255);

    analogWrite(led2, 1);

    delay(200);

    }

     

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/f3oSnJMPKrM-mayachok-s-narastayushej-yarkostyu22/editel?sharecode=WO6k5WhgIL-ESxp7Kp8o32Pqi-_oxy0F_kSHCxZyB5M

    3 «Светильник с управляемой яркостью»

    Задание: Добавить в схему второй светодиод. Изменить программу таким образом чтобы управлять светодиодами асинхронно. В крайних положениях потенциометра горит только один светодиод!

    3.1 Экранная форма сборки

    На рисунках 5 и 6 представлены макетная и принципиальная схемы сборки.



    Рисунок 5 – Схема сборки на макетной плате



    Рисунок 6 – Принципиальная схема

    3.2 Листинг кода сборки

    #define ONE_LED_PIN 9

    #define TWO_LED_PIN 10

    #define POT_PIN A0

    void setup()

    {

    pinMode(ONE_LED_PIN, OUTPUT);

    pinMode(TWO_LED_PIN, OUTPUT);

    pinMode(POT_PIN, INPUT);

    }

    void loop()

    {

    Control(POT_PIN, ONE_LED_PIN, TWO_LED_PIN);

    }

    void Control(int potPin, int oneLedPin, int twoLedPin){

    int rotation = analogRead(potPin);

    int brightness = rotation / 4;

    analogWrite(oneLedPin, brightness);

    analogWrite(twoLedPin, 255 - brightness);

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/b8dUYVLKAgc-svetilnik-s-upravlyaemoj-yarkostyu23/editel?sharecode=yW3OWBKUEgUUyzWdS7Hu36HQEPxcG7qAgEoEtl08TGY

    4 «Ночной светильник»

    Задание: Уберите потенциометр и добавьте в схему еще один светодиод. Дополните программу так, чтобы при падении освещенности ниже порогового значения включался один светодиод, а при падении освещенности ниже половины от порогового значения включались оба светодиода.

    4.1 Экранная форма сборки

    На рисунках 7 и 8 представлены макетная и принципиальная схемы сборки.



    Рисунок 7 – Схема сборки на макетной плате



    Рисунок 8 – Принципиальная схема


    4.2 Листинг кода сборки

    #define LED_PIN1 13//даём имя для пина No13 со светодиодом

    #define LED_PIN2 12//даём имя для пина No12 со светодиодом

    #define LDR_PIN A0 //имя для пина с фоторезистором

    #define POT_PIN A1

    void setup()

    {

    pinMode(LED_PIN1, OUTPUT);

    pinMode(LED_PIN2, OUTPUT);

    }

    void loop()

    {

    int lightness = analogRead(LDR_PIN);

    int threshold = analogRead(POT_PIN)/3.3;

    boolean tooDark = (lightness < threshold);

    if (tooDark)

    {

    digitalWrite(LED_PIN1, HIGH);

    }

    else

    {

    digitalWrite(LED_PIN1, LOW);

    }

    boolean tooDark1 = (lightness < threshold/2);

    if (tooDark1)

    {

    digitalWrite(LED_PIN2, HIGH);

    }

    else {

    digitalWrite(LED_PIN2, LOW);

    }

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/1XXUKsiLoE6-nochnoj-svetilnik24/editel?sharecode=0WR8NX8p9Q0xOWHpMxRCSJkRLYjQcc7yUOEWnfUJURI

    5 «Пульсар»
    Задание: Сделать пульсар с полевым P канального транзистора с постепенным уменьшением яркости. Без использования циклов в функции loop(). Не более 30 строк кода! Одна функция в строке.

    5.1 Экранная форма сборки

    На рисунках 9 и 10 представлены макетная и принципиальная схемы сборки.



    Рисунок 9 – Схема сборки на макетной плате



    Рисунок 10 – Принципиальная схема

    5.2 Листинг кода сборки

    int brightness = 0;

    void setup()

    {

    pinMode(9, OUTPUT);

    }

    void loop()

    {

    brightness = (brightness + 1) % 256;

    analogWrite(9, brightness);

    delay(10);

    }
    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/8bx8QB8CHEy-pulsar25/editel?sharecode=4_-bEREPUdijwe6sZuOH-jgaGw-V4reddS5ZpDWIGbU

    6 «Бегущий огонек»
    Задание: Изменить программу таким образом, чтобы в одну сторону загорались последовательно только четные, а обратно только нечетные светодиоды. Без использования циклов в функции loop(). Не более 30 строк кода! Одна функция в строке.

    6.1 Экранная форма сборки

    На рисунках 11 и 12 представлены макетная и принципиальная схемы сборки.



    Рисунок 11 – Схема сборки на макетной плате



    Рисунок 12 – Принципиальная схема

    6.2 Листинг кода сборки

    #define First 2

    #define Last 11

    int pinone = 2;

    bool left = 1;

    void setup()

    {

    for (int pin = First; pin <= Last; ++pin)

    pinMode(pin, OUTPUT);

    }

    void loop()

    {

    digitalWrite(pinone,HIGH);

    delay(200);

    digitalWrite(pinone,LOW);

    if(left)

    pinone = pinone+2;

    else

    pinone = pinone-2;

    if(pinone > 11)

    {

    left = 0;

    pinone = 11;

    }

    else

    if(pinone<2)

    {left = true;

    pinone = 2;}

    }

    Ссылка на рабочую программу: https://www.tinkercad.com/things/b7AUcOianDV-begushij-ogonyok26/editel?sharecode=X1ub1q19xccA6LjtIkuLvc7raNWtxB4JWewwdU4Haa0

    7 «Кнопочный переключатель»
    Задание: Измените код так, чтобы светодиод переключался только после отпускания кнопки.

    7.1 Экранная форма сборки

    На рисунках 13 и 14 представлены макетная и принципиальная схемы сборки.



    Рисунок 13 – Схема сборки на макетной плате



    Рисунок 14 – Принципиальная схема

    7.2 Листинг кода сборки

    #define BUTTON_PIN 3

    #define LED_PIN 13

    boolean buttonWasUp = true;

    boolean ledEnabled = false;

    void setup()

    {

    pinMode(LED_PIN, OUTPUT);

    pinMode(BUTTON_PIN, INPUT_PULLUP);

    }

    void loop()

    {

    boolean buttonIsUp = digitalRead(BUTTON_PIN);

    if (buttonWasUp && !buttonIsUp){

    buttonIsUp = digitalRead(BUTTON_PIN);

    while(!buttonIsUp){

    buttonIsUp = digitalRead(BUTTON_PIN);

    delay(10);

    if(buttonIsUp){

    ledEnabled = !ledEnabled;

    digitalWrite(LED_PIN, ledEnabled);

    }

    }

    }

    buttonWasUp = buttonIsUp;

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/gCFYxBKZfLr-knopochnyj-pereklyuchatel27/editel?sharecode=EumyoRYkdjpfsgeP2Yhlo4bz7EYkNHL4o5tE-2tCKy4

    8 «Светильник с кнопочным переключением»
    Задание: Добавить светодиод и изменить программу таким образом, что когда яркость 1 светодиода достигнет максимума, то она начнет повышать яркость второго и при снижении аналогично. Второй светодиод –продолжение первого.

    8.1 Экранная форма сборки

    На рисунках 15 и 16 представлены макетная и принципиальная схемы сборки.



    Рисунок 15 – Схема сборки на макетной плате



    Рисунок 16 – Принципиальная схема

    8.2 Листинг кода сборки

    #define PLUS_BUTTON_PIN 2

    #define MINUS_BUTTON_PIN 3

    #define LED_PIN0 10 //даём имя для пина No10 со светодиодом

    #define LED_PIN1 9 //даём имя для пина No9 со светодиодом

    int brightness = 100; //переменная для яркости

    boolean plusUp = true;

    boolean minusUp = true;

    void setup() {

    pinMode(LED_PIN0, OUTPUT);

    pinMode(LED_PIN1, OUTPUT);

    pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);

    pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);

    }

    void loop() {

    if (brightness > 255) {

    analogWrite(LED_PIN0, 255);analogWrite(LED_PIN1, brightness-256);

    }

    else {

    analogWrite(LED_PIN0, brightness);

    analogWrite(LED_PIN1, 0);

    }

    plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35); //реагирует на нажатие

    minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35);

    }

    boolean handleClick(int buttonPin, boolean wasUp, int delta) {

    boolean isUp = digitalRead(buttonPin);

    if (wasUp && !isUp) {

    delay(10);

    isUp = digitalRead(buttonPin);

    if (!isUp) //если был клик, то меняем яркость в пределах от 0 до 511

    brightness = constrain(brightness + delta, 0, 511);

    }

    return isUp; //возвращаем значение обратно, в вызывающий код

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/lB8YeYKUPJg-svetilnik-s-knopochnym-pereklyucheniem28/editel?sharecode=1LR0c2aeW61rbKMOw17FROoU15w5WN7TbeQkcUjio5k

    9 «RGB»
    Задание: Сделать постепенное изменение цвета на RGB светодиоде от синего к красному и затем к зеленому цвету. Цвет меняем каждый раз на 3 из 255 и с задержкой 50 мс. меняем. Без использования циклов в функции loop().Одна функция в строке.

    9.1 Экранная форма сборки

    На рисунках 17 и 18 представлены макетная и принципиальная схемы сборки.



    Рисунок 17 – Схема сборки на макетной плате



    Рисунок 18 – Принципиальная схема

    9.2 Листинг кода сборки

    int brightness = 0;

    int led1 = 9;

    int led2 = 10;

    int led3 = 11;
    int red = 0;

    int green = 0;

    int blue = 255;
    void setup() {

    for (int i = 9; i < 12; i++) pinMode(i, OUTPUT);

    }

    void loop() {

    analogWrite(led3, red);

    analogWrite(led2, blue);

    analogWrite(led1, green);
    delay(50);
    if (blue != 0) {

    blue = blue - 3;

    red = red + 3;

    }
    else if (red != 0) {

    red = red - 3;

    green = green + 3;

    }

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/dq5EhhIJZwU-rgb2в9/editel?sharecode=MMmte7kfm1yNtQcQRevxEv8eSjWP3b5HvmI_9uL0SxM

    10 «RGB»
    Задание: Добавить в схему 3 кнопки. Изменить программу таким образом, чтобы по нажатии на кнопку загорался соответствующий цвет, при повторном нажатии выключался. При этом цвета смешиваются. Кнопки с фиксацией!

    10.1 Экранная форма сборки

    На рисунках 19 и 20 представлены макетная и принципиальная схемы сборки.



    Рисунок 19 – Схема сборки на макетной плате



    Рисунок 20 – Принципиальная схема

    10.2 Листинг кода сборки

    int ColorButtons[3] = {11, 10, 9};

    int Buttons[3] = {4, 3, 2};

    boolean ButtonWasUp[3] = {1, 1, 1};

    bool ledEnable[3] = {0, 0, 0};

    boolean ButtonIsUp[3];

    int k = 0;

    void setup() {

    for (int i = 0; i < 3; i++) {

    pinMode(Buttons[i], INPUT_PULLUP);

    pinMode(ColorButtons[i], OUTPUT);

    }

    }

    void loop() {

    ButtonIsUp[k] = digitalRead(Buttons[k]);

    if (ButtonWasUp[k] && !ButtonIsUp[k]) {

    delay(10);

    digitalWrite(ColorButtons[k], !ButtonWasUp[k]);

    if (!ButtonIsUp[k]) {

    ledEnable[k] = !ledEnable[k];

    digitalWrite(ColorButtons[k], ledEnable[k]);

    }

    }

    ButtonWasUp[k] = ButtonIsUp[k];

    k = (k + 1) % 3;

    }

    void ValueBack(int a[3]) {

    for (int i = 0; i < 3; i++) digitalWrite(a[i], 0);

    }

    Ссылка на рабочую программу:

    https://www.tinkercad.com/things/au6Ic28Od6O-rgb310/editel?sharecode=SSt4ZESSK5Og-C9oEj8sFFAKleNP2nNM3DpW4idgcos

    Вывод

    В ходе практической работы были изучены теоретические и практические основы для работы с Arduino IDE, а также было проведено ознакомление с главными элементами.


    написать администратору сайта