Файл: Отчет по практической работе 2 Светодиодные индикаторы.docx

ВУЗ: Не указан

Категория: Отчеты по практике

Дисциплина: Не указана

Добавлен: 17.10.2024

Просмотров: 12

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


}

void loop()

{ if (!digitalRead(BUTTON_PIN))

{

if (isPrime(number))

{

m = number%10; //остаток от деления

n =number/10; //целочисленое деление



digitalWrite(LATCH_PIN, LOW);

shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, segments[n]);

digitalWrite(LATCH_PIN, HIGH);

digitalWrite(LATCH_PIN_1, LOW);

shiftOut(DATA_PIN_1, CLOCK_PIN_1, LSBFIRST, segments[m]);

digitalWrite(LATCH_PIN_1, HIGH);

delay(500);

}

number = number +1;

}

}

//проверяем, простое ли это число

bool isPrime(int n)

{

// если n > 1

if (n > 1)

{

// в цикле перебираем числа от 2 до n - 1

for (int i = 2; i < n; i++)

if (n % i == 0) // если n делится без остатка на i - возвращаем false (число не простое)

return false;



// если программа дошла до данного оператора, то возвращаем true (число простое) - проверка пройдена

return true;

}

else // иначе возвращаем false (число не простое)

return false;

}
Ссылка на рабочий проект:

https://www.tinkercad.com/things/afuEQnUkhnn-2-zadanie-4-schyotchik-nazhatij/editel?sharecode=0sQa8v7qk1T7rQiUD6PCoNRF8WAE9WpU40TIyRiIqKM
Вывод

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

.

Задание 5

«Тестер батареек»



Задание: Добавить потенциометр в схему для прокрутки текста, не менее 5 строк.
Цель работы: Ознакомление с элементами Arduino IDE, изучение основ работы со средой для программирования, а также сборка схем с дисплеем.
Схема сборки на макетной плате:





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


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

#define POT_PIN A1


#include

#define DIODE_DROP 0.7 // RS E DB4 DB5 DB6 DB7

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

void setup()

{

lcd.begin(0, 5);

//lcd.print("Battery voltage:");

pinMode(POT_PIN, INPUT); //пин с потенциометром – вход

}

void loop()

{

float voltage = analogRead(A0) / 1024.0 * 10.0;

int rotation; //используем переменные, для хранения в них целых чисел

rotation = analogRead(POT_PIN); //считываем в rotation напряжение с потенциометра

if (rotation < 200)

{

lcd.setCursor(0, 0);

lcd.print("Battery");

}

else if (rotation < 400)

{

lcd.setCursor(0, 1);

lcd.print("voltage: ");

}

else if (rotation < 600)

{

delay(50);

lcd.clear(); // очищаем экран

lcd.setCursor(0, 0);

lcd.print(voltage);

}

else if (rotation < 800)

{

lcd.setCursor(0, 1);

lcd.print("Volts");

}

else if (rotation < 1000)

{

delay(50);

lcd.clear(); // очищаем экран

lcd.setCursor(0, 0);

lcd.print("good!");

}

else

lcd.clear();

}
Ссылка на рабочий проект:

https://www.tinkercad.com/things/0QFKZpD2YgZ-2-zadanie-5-tester-batareek/editel?sharecode=9Knm3qDjhX60g2L69UWgQGzfoG1Adw121WHYBE4lsos
Вывод

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



Задание 6

«Тестер батареек»



Задание: Изменить схему и программу таким образом, чтобы получилась бегущая строка длиной 20 символов слева направо.
Цель работы: Ознакомление с элементами Arduino IDE, изучение основ работы со средой для программирования, а также сборка схем с дисплеем.
Схема сборки на макетной плате:





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



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

#include

#define DIODE_DROP 0.7 // RS E DB4 DB5 DB6 DB7

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

void setup()

{

lcd.begin(16, 1);

}

void loop()

{

lcd.print(" Task 6. Battery tester");

lcd.scrollDisplayRight();

delay(500);

}

Ссылка на рабочий проект:

https://www.tinkercad.com/things/kwPF0dpu7QV-2-zadanie-6-tester-batareek/editel?sharecode=eXN8sToebVMBUhaiVmKRyQDd_27xCiIXq8yHkVsmjVg
Вывод

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

Задание 7

«Перетягивание каната»



Задание: Добавить в схему дисплей. Изменить программу таким образом, чтобы управлять “канатом” на дисплее.
Цель работы: Ознакомление с элементами Arduino IDE, изучение основ работы со средой для программирования, а также сборка схем с пьезодинамиком и дисплеем.
Схема сборки на макетной плате:




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


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

#include //библиотека для работы с ЖК

#define BUZZER_PIN 0

#define START_POSITION 0

#define BAR_COUNT 16

#define MAX_SCORE 16
// RS E DB4 DB5 DB6 DB7

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

//глобальная "нестабильная" переменная

volatile int score = 0;
void setup()

{

lcd.begin(16, 2);

pinMode(BUZZER_PIN, OUTPUT);

attachInterrupt(INT1, pushP1, FALLING);

attachInterrupt(INT0, pushP2, FALLING);

}
void pushP1() //функция (прерывыние) на первую кнопку

{

--score;

}

void pushP2() //функция (прерывыние) на вторую кнопку

{

++score;

}

void loop()

{

tone(BUZZER_PIN, 400, 20);

while (abs(score) < MAX_SCORE)

{

int bound = map(score, -MAX_SCORE, MAX_SCORE, 0, BAR_COUNT);


int left = min(bound, BAR_COUNT / 2 - 1);

int right = max(bound, BAR_COUNT / 2);

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

{

lcd.setCursor(i + START_POSITION, 0);

if (i >= left && i <= right)

lcd.print(".");

else

lcd.print(" ");

}

}

tone(BUZZER_PIN, 2000, 500);

while (true) {}

}
Ссылка на рабочий проект:

https://www.tinkercad.com/things/699yePKFj5k-2-zadanie-7-peretyagivanie-kanata/editel?sharecode=fYMYi-WuoDtDfp4i7Wrfxr4_gFKmvkfWFYjmiAjmp3k

Вывод

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



Задание 8

«Управление скоростью мотора»



Задание: Управляйте скоростью мотора при помощи полевого p-канального МОП транзистора.
Цель работы: Ознакомление с элементами Arduino IDE, изучение основ работы со средой для программирования, а также сборка схем с моторами.
Схема сборки на макетной плате:




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


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

#define MOTOR_PIN 9

int pot = A0;// пин потенциометра

void setup()

{

pinMode(MOTOR_PIN, OUTPUT);

pinMode(pot, INPUT);

Serial.begin(9600);

}

void loop()

{

int val = analogRead(pot) / 4;

Serial.println(val);

analogWrite(MOTOR_PIN, val);

}
Ссылка на рабочий проект:

https://www.tinkercad.com/things/kDOvfvSxrHB-2-zadanie-8-upravlenie-skorostyu-motora/editel?sharecode=8gWHOpTTVFwffaebDKeuYEIyxGg8g5CRLLdx5oWRhY0
Вывод

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

Задание 9

«Секундомер на таймере 555»



Задание: Сделать счетчик нажатий, без программирования.
Цель работы:
Ознакомление с элементами Arduino IDE, сборка схем с микросхемами.
Схема сборки на макетной плате:




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


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

Эта сборка без программирования.

 

Ссылка на рабочий проект:

https://www.tinkercad.com/things/cKtXeYCB1cm-lab2-task9/editel?sharecode=RUldcDsSJvZhLq8h4URaKFujyNU0hdJKgh-BnOb0DsQ
Вывод

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

Задание 10

«Секундомер на таймере 555»



Задание: Сделать секундомер до 99 только нечетных чисел
Цель работы: Ознакомление с элементами Arduino IDE, сборка схем с микросхемами.
Схема сборки на макетной плате:





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





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

Эта сборка без программирования.
Ссылка на рабочий проект:

https://www.tinkercad.com/things/aPlSpeoo4GI-copy-of-sekundomer-na-tajmere-555/editel?sharecode=sBEJyZspV5i763OPVGhzMqYgvUk9TveMC7Z6UI-Ao3g
Вывод

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