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

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

Категория: Не указан

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

Добавлен: 11.01.2024

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

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

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

Цель работы

Знакомство с элементами 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 кнопки. Изменить программу таким образом, чтобы по нажатии на кнопку загорался соответствующий цвет, при повторном нажатии выключался. При этом цвета смешиваются. Кнопки с фиксацией!