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

  • ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ

  • 1. Что будет, если подключить к земле анод светодиода вместо катода

  • 3. Что будет, если подключить светодиод без резистора

  • 4. Зачем нужна встроенная функция pinMode Какие параметры она принимает

  • 6. С помощью какой встроенной функции можно заставить микроконтроллер ничего не делать

  • 2. Чтопроизойдет, еслисоздатьдирективу defineHIGHLOW

  • 4. Какое усредненное напряжение мы получим на выходе 6, если вызовем функцию analogWrite(6, 153)

  • 1. Можно ли при сборке схемы подключить светодиод и потенциометрнапрямую к разным входам GND микроконтроллера

  • 3. Что будет, если стереть из программы строчку pinMode(LED_PIN,OUTPUT) АстрочкуpinMode(POT_PIN, INPUT)

  • 1. Как будет работать вызов tone() без указания длительности звучания

  • Отчёт по практике Arduino. Отчет. Программирование микроконтроллеров в среде Arduino


    Скачать 2.74 Mb.
    НазваниеПрограммирование микроконтроллеров в среде Arduino
    АнкорОтчёт по практике Arduino
    Дата14.05.2022
    Размер2.74 Mb.
    Формат файлаdocx
    Имя файлаОтчет.docx
    ТипОтчет
    #528283
    страница1 из 4
      1   2   3   4

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

    Федеральное государственное автономное образовательное учреждение

    высшего образования

    «Южно-Уральский государственный университет

    (национальный исследовательский университет)»

    Высшая школа электроники и компьютерных наук

    Кафедра автоматики и управления
    ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ

    Тема: Программирование микроконтроллеров в среде Arduino

    Студент _______________________

    (Ф.И.О., Подпись)

    Группа XX-1XXкурс I .

    Место прохождения учебной практики

    ЮУрГУ, Кафедра автоматики и управления, ауд. 712/3б

    (наименование учреждения, адрес)

    Продолжительность ‒ 4 недели

    Сроки прохождения практики

    начало 01.07.201X г. окончание 28.07.201X г.

    (дата начала и окончания практики)


    Руководитель практики в группе _________ Колесникова О.В.

    Руководитель практики от кафедры __________Колесникова О.В.


    Челябинск

    201X

    Задание №1. Маячок

    Цель: программное управление включением светодиода, подключенного к плате Arduino.



    Рисунок 1.1 – Схема электрическая принципиальная



    Рисунок 1.2 – Схема, собранная в программной среде SimulIDE

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

    int ledPin = 13;

    voidsetup(){pinMode(ledPin, OUTPUT);}

    voidloop()

    { digitalWrite(ledPin, HIGH);

    delay(500);

    digitalWrite(ledPin, LOW);

    delay(1000);}

    Листинг 1.2 – Листингпрограммы

    2. Код примера изменен так, чтобы светодиод включался на три секунды после запуска устройства, а затем мигал в стандартном режиме.
    int ledPin = 13;

    voidsetup()

    { pinMode(ledPin, OUTPUT);

    digitalWrite(ledPin, HIGH);

    delay(3000);

    digitalWrite(ledPin, LOW);

    delay(1000);

    }

    voidloop()

    {

    digitalWrite(ledPin, HIGH);

    delay(1000);

    digitalWrite(ledPin, LOW);

    delay(1000);

    }

    Листинг 1.3 – Листинг программы

    Ответы на вопросы:


    1. Что будет, если подключить к земле анод светодиода вместо катода?

    Ответ: светодиод не будет гореть, т.к. не будет пропускать ток.


    2. Что будет, если подключить светодиод с резистором большого номинала (например, 10 кОм)?

    Ответ: сила тока будет недостаточна для горения светодиода, и он не будет гореть.


    3. Что будет, если подключить светодиод без резистора?

    Ответ: светодиод может сгореть, из-за неограниченной силы тока.


    4. Зачем нужна встроенная функция pinMode? Какие параметры она принимает?

    Ответ: функция pinMode служит для определения входных и выходных портов.


    5. Зачем нужна встроенная функция digitalWrite? Какие параметры она принимает?

    Ответ: функция digitalWrite служит для установления сигналов на портах. Может быть высокого или низкого уровня.


    6. С помощью какой встроенной функции можно заставить микроконтроллер ничего не делать?

    Ответ: с помощью функции пустой функции loop.


    7. В каких единицах задается длительность паузы для этой функции?

    Ответ: задается в миллисекундах.

    Вывод: Я ознакомился с базовыми принципами работы микроконтроллера Arduino Uno R3, написана программа для работы маячка.

    Задание №2. Плавное мигание

    Цель: программное управление яркостью свечения светодиода, подключенного к плате Arduino.

    В соответствии с заданием была собрана схема и разработана программа, чтобы светодиод плавно мигал

    На рисунке 2.1 представлена схема электрическая принципиальная.



    Рисунок 2.1 – Схема электрическая принципиальная

    На рисунке 2.2 представлена схема, собранная в программной среде SimulIDE.



    Рисунок 2.2 – Схема, собранная в программной среде SimulIDE

    1. Кодисхеманарисунке 2.3 изменены так, чтобы светодиод работал от 11-го порта.Код программы приведен на листинге 2.2.



    Рисунок 2.3 – Схема, собранная в программной среде SimulIDE

    #include

    int ledPin = 11;

    float Val;

    int led;

    voidsetup(){}

    voidloop()

    {

    for (int x = 0; x < 180; x++)

    {

    Val = sin(x*(3.1412 / 180));

    led = int(Val * 255);

    analogWrite(ledPin, led);

    delay(10);

    }

    }

    Листинг 2.2 – Листинг программы

    2. Код программы изменен так, чтобы в течение секунды на светодиодпоследовательно подавалось усредненное напряжение 0, 1, 2, 3, 4, 5 В.

    Схемы аналогичны схемам, приведенным на рисунках 2.1-2.2. Код программы приведен на листинге 2.3.

    int ledPin = 9;

    float Val;

    int led;

    voidsetup(){}

    voidloop()

    {

    led = int(0);

    analogWrite(ledPin, led);

    delay(166);

    led = int(255 / 5);

    analogWrite(ledPin, led);

    delay(166);

    led = int(255 / 5 * 2);

    analogWrite(ledPin, led);

    delay(166);

    led = int(255 / 5 * 3);

    analogWrite(ledPin, led);

    delay(166);

    led = int(255 / 5 * 4);

    analogWrite(ledPin, led);

    delay(166);

    led = int(255);

    analogWrite(ledPin, led);

    delay(166);

    }

    Листинг 2.3 – Листинг программы

    3. Добавлен еще один светодиод, резистор на 220 Ом (см. рисунок 2.4), светодиодподключен к порту 3, программа изменена так, чтобы светодиоды мигали в противофазе (см. листинг 2.4).



    Рисунок 2.4 – Схема, собранная в программной среде SimulIDE


    #include

    float Val;

    int led;

    voidsetup(){}

    voidloop()

    {

    for (int x = 0; x < 180; x++)

    {

    Val = sin(x*(3.1412 / 180));

    led = int(Val * 255);

    analogWrite(9, led);

    analogWrite(3, 255 - led);

    delay(10);

    }

    }

    Листинг 2.4 – Листингпрограммы

    Ответы на вопросы:

    1. Какие из следующих идентификаторов корректны и не вызовутошибку?13pin,MOTOR_1,контакт_светодиода, sensorvalue,leftServo,my-var,distance_eval2.

    Ответ: MOTOR_1, leftServo, distance_eval2.


    2. Чтопроизойдет, еслисоздатьдирективу #defineHIGHLOW?

    Ответ: значение HIGHбудет равно LOW (0 В).


    3. Почему мы не сможем регулировать яркость светодиода, подключенного к порту 7?

    Ответ: вывод 7 не поддерживает ШИМ-сигнал, то есть на нём нельзя регулировать напряжение.


    4. Какое усредненное напряжение мы получим на выходе 6, если вызовем функцию analogWrite(6, 153)?

    Ответ:3В.


    5. Какое значение параметра value нужно передать функцииanalogWrite(), чтобы получить усредненное напряжение 2 В?

    Ответ: 102.

    Вывод: Я обучилсяпрограммному управлению яркостью свечения светодиода, подключенного к плате Arduino

    Упражнение №3. Светильник с управляемой яркостью

    Цель: программное управление яркостью свечения светодиода, подключенного к плате Arduino в зависимости от положения движка переменного резистора.

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

    На рисунке 3.1 представлена схема электрическая принципиальная.



    Рисунок 3.1 – Схема электрическая принципиальная

    На рисунке 3.2 представлена схема, собранная в программной среде SimulIDE.



    Рисунок 3.2 – Схема, собранная в программной среде SimulIDE

    1. Подключен к порту 5 еще один светодиод (см. Рисунок 3.3). Код изменентак, чтобы второй светодиод светился на 1/8(см. Листинг 3.2) от яркости первого.



    Рисунок 3.3 – Схема, собранная в программной среде SimulIDE

    #defineLED_PIN 9

    #defineLED_PIN2 5

    #definePOT_PIN A0

    voidsetup()

    { pinMode(LED_PIN, OUTPUT);

    pinMode(LED_PIN2, OUTPUT);

    pinMode(POT_PIN, INPUT);}

    voidloop()

    {

    int rotation, brightness;

    rotation = analogRead(POT_PIN);

    brightness = rotation / 4;

    analogWrite(LED_PIN, brightness);

    analogWrite(LED_PIN2, brightness / 8);

    }

    Листинг 3.2 – Листинг программы
    2. Код изменен таким образом, чтобы яркость второго светодиода увеличивалась, в то время как яркость первого уменьшалась (см. Листинг 3.3).

    #defineLED_PIN 9

    #defineLED_PIN2 5

    #definePOT_PINA0

    voidsetup()

    { pinMode(LED_PIN, OUTPUT);

    pinMode(LED_PIN2, OUTPUT);

    pinMode(POT_PIN, INPUT);}

    voidloop()

    {

    int rotation, brightness;

    rotation = analogRead(POT_PIN);

    brightness = rotation / 4;

    analogWrite(LED_PIN, brightness);

    analogWrite(LED_PIN2, 255 - brightness);

    }

    Листинг 3.3 – Листинг программы

    Ответы на вопросы:


    1. Можно ли при сборке схемы подключить светодиод и потенциометрнапрямую к разным входам GND микроконтроллера?

    Ответ: да, можно.


    2. В какую сторону нужно крутить переменный резистор для увеличения яркости светодиода?

    Ответ: в сторону клеммы, подключенной к 5 В.


    3. Что будет, если стереть из программы строчку pinMode(LED_PIN,OUTPUT)? АстрочкуpinMode(POT_PIN, INPUT)?

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

    4. Зачем делится значение, полученное с аналогового входа перед тем,как задать яркость светодиода? Что будет, если этого не сделать?

    Ответ: функция analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255. По мере вращения ручки светодиод будет гаснуть/зажигаться 4 раза.

    Вывод: Я научилсяпрограммнному управлению яркостью свечения светодиода, подключенного к плате Arduino в зависимости от положения движка переменного резистора

    Упражнение №4. Музыкальная пауза

    Цель: управление звучанием пьезоакустического преобразователя (пьезодинамика).

    В соответствии с заданием была собрана схема с пьезодинамиком.

    На рисунке 4.1 представлена схема электрическая принципиальная.



    Рисунок 4.1 – Схема электрическая принципиальная

    На рисунке 4.2 представлена схема, собранная в программной среде SimulIDE.



    Рисунок 4.2 – Схема, собранная в программной среде SimulIDE



    Рисунок 4.3 – Схема, собранная в программной среде SimulIDE

    1. С помощью функции analogWrite() подаётсясигнал SOS: три точки, три тире, три точки азбукой Морзе (см. листинг 4.4)

    int buzzer = 9;

    voidsetup() {pinMode(buzzer, OUTPUT);}

    voidloop() {

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

    {

    analogWrite(buzzer, 100);

    delay(100);

    analogWrite(buzzer, 0);

    delay(200);

    }

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

    {

    analogWrite(buzzer, 100);

    delay(500);

    analogWrite(buzzer, 0);

    delay(200);

    }

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

    {

    analogWrite(buzzer, 100);

    delay(100);

    analogWrite(buzzer, 0);

    delay(200);

    }}

    Листинг 4.4 – Листинг программы

    2. С помощью функции tone()звук раздается не непрерывно, а 10 раз в секунду с различимыми паузами(см. листинг 4.5).

    int buzzer = 9;

    voidsetup()

    {pinMode(buzzer, OUTPUT);}

    voidloop()

    { tone(buzzer, 261); delay(5);

    noTone(buzzer); delay(95);

    tone(buzzer, 261); delay(15);

    noTone(buzzer); delay(85);

    tone(buzzer, 261); delay(25);

    noTone(buzzer); delay(75);

    tone(buzzer, 261); delay(35);

    noTone(buzzer); delay(65);

    tone(buzzer, 261); delay(45);

    noTone(buzzer); delay(55);

    tone(buzzer, 261); delay(55);

    noTone(buzzer); delay(45);

    tone(buzzer, 261); delay(65);

    noTone(buzzer); delay(35);

    tone(buzzer, 261); delay(75);

    noTone(buzzer); delay(25);

    tone(buzzer, 261); delay(85);

    noTone(buzzer); delay(15);

    tone(buzzer, 261); delay(95);

    noTone(buzzer); delay(5);}

    Листинг 4.5 – Листингпрограммы

    Ответы на вопросы:


    1. Как будет работать вызов tone() без указания длительности звучания?

    Ответ: бесконечное звучание


    2. Можно ли устроить полифоническое звучание с помощью функцииtone()?

    Ответ: нет, нельзя.


    3. Сколькими пьезодинамиками можно управлять одновременно?

    Ответ: одним.

    Вывод: Теперь я умеюуправлять звучанием пьезоакустического преобразователя.
    Упражнение №5. Автомат уличного освещения

    Цель: управление включением светодиода, подключенного к платеArduino, в зависимости от уровня освещенности фоторезистора и порога,заданного потенциометром.

    В соответствии с заданием была собрана схема автомата уличного освещения.

    На рисунке 5.1 представлена схема электрическая принципиальная.



    Рисунок 5.1 – Схема электрическая принципиальная

    На рисунке 5.2 представлена схема, собранная в программной среде Tinkercad.



    Рисунок 5.2 – Схема, собранная в программной среде Tinkercad

    1. Переписана программа без использования переменной tooDark ссохранением функционала устройства(см. листинг 5.2).

    #define LED_PIN 13

    #define LDR_PIN A0

    #define POT_PIN A1

    int cnt = 0;

    void setup()

    {pinMode(LED_PIN, OUTPUT);}

    void loop()

    {

    int lightness = analogRead(LDR_PIN);

    int threshold = analogRead(POT_PIN);

    if (lightness < threshold) cnt++;

    if (cnt>300)

    { cnt=0;

    digitalWrite(LED_PIN, HIGH);

    delay(5000);

    digitalWrite(LED_PIN, LOW);

    }

    }

    Листинг 5.2 – Листингпрограммы

    3. Добавлен в схему еще один светодиод(см. рисунок 5.3). Программа дополнена: при падении освещенности ниже порогового значения включаетсяодин светодиод, а при падении освещенности ниже половины от порогового значения включаются оба светодиода(см. листинг 5.3).



    Рисунок 5.3 – Схема, собранная в программной среде TinkerCAD

    #define LED_PIN 10

    #define LED_PIN_2 9

    #define LDR_PIN A0

    #define POT_PIN A1

    int cnt = 0;

    void setup()

    {

    pinMode(LED_PIN, OUTPUT);

    pinMode(LED_PIN_2, OUTPUT);

    }

    void loop()

    { int lightness = analogRead(LDR_PIN);

    int threshold = analogRead(POT_PIN);

    if (lightness < threshold) cnt++;

    if (cnt>300)

    { digitalWrite(LED_PIN, HIGH);

    if (lightness < threshold/2) digitalWrite(LED_PIN_2, HIGH);

    delay(5000);

    cnt=0;

    digitalWrite(LED_PIN, LOW);

    digitalWrite(LED_PIN_2, LOW);

    }

    }

    Листинг 5.3 – Листингпрограммы

    4. Схема и программа изменены: светодиоды включаются по-прежнему принципу, но светятся тем ярче, чем меньше света падаетна фоторезистор (см. листинг 5.4).

    #define LED_PIN 10

    #define LED_PIN_2 9

    #define LDR_PIN A0

    #define POT_PIN A1

    void setup()

    {

    pinMode(LED_PIN, OUTPUT);

    pinMode(LED_PIN_2, OUTPUT);

    }

    void loop()

    {

    int lightness=analogRead(LDR_PIN);

    int Threshold=analogRead(POT_PIN);

    if (lightness
    analogWrite(LED_PIN,255-lightness/4);

    elseanalogWrite(LED_PIN,0);

    if (lightness
    analogWrite(LED_PIN_2,255-lightness/4);

    elseanalogWrite(LED_PIN_2,0);

    }

    Листинг 5.4 – Листингпрограммы
    Ответы на вопросы:

    1. Если установить фоторезистор между аналоговым входом и землей,устройство будет работать наоборот: светодиод будет включаться при увеличении количества света. Почему?

    Ответ: в этом случае при уменьшении сопротивления фоторезистора напряжение в средней точке будет смещаться не к 5 В, а к земле.

      1   2   3   4


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