Файл: Цель работы Знакомство с элементами Arduino ide теоретическое и практическое изучение основ для работы в данной среде. 1 Маячок.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 199
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Цель работы
Знакомство с элементами Arduino IDE; теоретическое и практическое изучение основ для работы в данной среде.
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 кнопки. Изменить программу таким образом, чтобы по нажатии на кнопку загорался соответствующий цвет, при повторном нажатии выключался. При этом цвета смешиваются. Кнопки с фиксацией!