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

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

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

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

Добавлен: 11.01.2024

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Цель работыЗнакомство с элементами ArduinoIDE; теоретическое и практическое изучение основ для работы в данной среде.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--fdHP3QaA2Lne04lUc2 «Маячок с нарастающей яркостью»Задание: Добавить в схему второй светодиод. Изменить программу таким образом, чтобы светодиоды в противофазе увеличивали, а потом уменьшали яркость. Не менее 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_kSHCxZyB5M3 «Светильник с управляемой яркостью»Задание: Добавить в схему второй светодиод. Изменить программу таким образом чтобы управлять светодиодами асинхронно. В крайних положениях потенциометра горит только один светодиод!3.1 Экранная форма сборкиНа рисунках 5 и 6 представлены макетная и принципиальная схемы сборки.Рисунок 5 – Схема сборки на макетной платеРисунок 6 – Принципиальная схема3.2 Листинг кода сборки#define ONE_LED_PIN 9#define TWO_LED_PIN 10#define POT_PIN A0void 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=yW3OWBKUEgUUyzWdS7Hu36HQEPxcG7qAgEoEtl08TGY4 «Ночной светильник»Задание: Уберите потенциометр и добавьте в схему еще один светодиод. Дополните программу так, чтобы при падении освещенности ниже порогового значения включался один светодиод, а при падении освещенности ниже половины от порогового значения включались оба светодиода.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 A1void 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=0WR8NX8p9Q0xOWHpMxRCSJkRLYjQcc7yUOEWnfUJURI5 «Пульсар»Задание: Сделать пульсар с полевым 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-V4reddS5ZpDWIGbU6 «Бегущий огонек»Задание: Изменить программу таким образом, чтобы в одну сторону загорались последовательно только четные, а обратно только нечетные светодиоды. Без использования циклов в функции loop(). Не более 30 строк кода! Одна функция в строке.6.1 Экранная форма сборкиНа рисунках 11 и 12 представлены макетная и принципиальная схемы сборки.Рисунок 11 – Схема сборки на макетной платеРисунок 12 – Принципиальная схема6.2 Листинг кода сборки#define First 2 #define Last 11int 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;elsepinone = 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=X1ub1q19xccA6LjtIkuLvc7raNWtxB4JWewwdU4Haa07 «Кнопочный переключатель»Задание: Измените код так, чтобы светодиод переключался только после отпускания кнопки.7.1 Экранная форма сборкиНа рисунках 13 и 14 представлены макетная и принципиальная схемы сборки.Рисунок 13 – Схема сборки на макетной платеРисунок 14 – Принципиальная схема7.2 Листинг кода сборки#define BUTTON_PIN 3#define LED_PIN 13boolean 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-2tCKy48 «Светильник с кнопочным переключением»Задание: Добавить светодиод и изменить программу таким образом, что когда яркость 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 до 511brightness = constrain(brightness + delta, 0, 511);}return isUp; //возвращаем значение обратно, в вызывающий код}Ссылка на рабочую программу: https://www.tinkercad.com/things/lB8YeYKUPJg-svetilnik-s-knopochnym-pereklyucheniem28/editel?sharecode=1LR0c2aeW61rbKMOw17FROoU15w5WN7TbeQkcUjio5k9 «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_9uL0SxM10 «RGB»Задание: Добавить в схему 3 кнопки. Изменить программу таким образом, чтобы по нажатии на кнопку загорался соответствующий цвет, при повторном нажатии выключался. При этом цвета смешиваются. Кнопки с фиксацией!