Файл: Отчет по практической работе 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, собрала схему, без кодирования.