Загрузка данных
Это большой набор лабораторных заданий, поэтому дам тебе готовые решения (схемы + код) по ключевым пунктам, особенно там, где требуется программирование Arduino.
⸻
1. Мигание светодиода раз в секунду
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
⸻
3. Кнопка + светодиод
int button = 2;
int led = 13;
void setup() {
pinMode(button, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
if (digitalRead(button) == HIGH) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
⸻
5. Два светодиода по очереди
int red = 12;
int green = 11;
void setup() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
delay(500);
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
delay(500);
}
⸻
7. Потенциометр → яркость светодиода
int pot = A0;
int led = 9;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
int value = analogRead(pot);
int brightness = map(value, 0, 1023, 0, 255);
analogWrite(led, brightness);
}
⸻
9. Зуммер + кнопка
int button = 2;
int buzzer = 8;
void setup() {
pinMode(button, INPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
if (digitalRead(button)) {
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
}
}
⸻
11. Ночник (фоторезистор)
int ldr = A0;
int led = 13;
int threshold = 500;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
int light = analogRead(ldr);
if (light < threshold) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
⸻
13. Сервопривод
#include <Servo.h>
Servo servo;
void setup() {
servo.attach(9);
}
void loop() {
servo.write(0);
delay(1000);
servo.write(90);
delay(1000);
servo.write(180);
delay(1000);
}
⸻
14. Делитель напряжения (объяснение)
Два резистора по 1 кОм:
* Общее напряжение: 5 В
* Делится пополам → 2.5 В
Формула:
U_{out} = U \cdot \frac{R2}{R1 + R2}
⸻
15. 3 светодиода + 2 кнопки
int btnA = 2;
int btnB = 3;
int leds[] = {10, 11, 12};
int count = 0;
void setup() {
pinMode(btnA, INPUT);
pinMode(btnB, INPUT);
for (int i=0;i<3;i++) pinMode(leds[i], OUTPUT);
}
void loop() {
if (digitalRead(btnA)) {
count++;
if (count > 3) count = 3;
delay(200);
}
if (digitalRead(btnB)) {
count = 0;
delay(200);
}
for (int i=0;i<3;i++) {
digitalWrite(leds[i], i < count);
}
}
⸻
17. Датчик температуры (DS18B20)
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(0));
delay(1000);
}
⸻
19. HC-SR04 + зуммер
int trig = 9;
int echo = 10;
int buzzer = 8;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzzer, OUTPUT);
}
long getDistance() {
digitalWrite(trig, LOW); delayMicroseconds(2);
digitalWrite(trig, HIGH); delayMicroseconds(10);
digitalWrite(trig, LOW);
long duration = pulseIn(echo, HIGH);
return duration * 0.034 / 2;
}
void loop() {
long dist = getDistance();
if (dist < 20) {
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
} else {
digitalWrite(buzzer, LOW);
}
}
⸻
21. Бегущий огонь
int leds[] = {8,9,10,11};
void setup() {
for (int i=0;i<4;i++) pinMode(leds[i], OUTPUT);
}
void loop() {
for (int i=0;i<4;i++) {
digitalWrite(leds[i], HIGH);
delay(200);
digitalWrite(leds[i], LOW);
}
}
⸻
22. Кнопки управления миганием
int btnStart = 2;
int btnStop = 3;
int led = 13;
bool blinking = false;
void setup() {
pinMode(btnStart, INPUT);
pinMode(btnStop, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
if (digitalRead(btnStart)) blinking = true;
if (digitalRead(btnStop)) blinking = false;
if (blinking) {
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
} else {
digitalWrite(led, LOW);
}
}
⸻
23. LCD 16x2
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12);
unsigned long start;
void setup() {
lcd.begin(16,2);
lcd.print("Hello, Student!");
start = millis();
}
void loop() {
lcd.setCursor(0,1);
lcd.print((millis() - start)/1000);
}
⸻
25. PIR датчик
int pir = 2;
int led = 13;
void setup() {
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
if (digitalRead(pir)) {
digitalWrite(led, HIGH);
delay(3000);
digitalWrite(led, LOW);
}
}
⸻
27. RGB + потенциометры
int rPot=A0, gPot=A1, bPot=A2;
int r=9, g=10, b=11;
void setup() {
pinMode(r,OUTPUT);
pinMode(g,OUTPUT);
pinMode(b,OUTPUT);
}
void loop() {
analogWrite(r, map(analogRead(rPot),0,1023,0,255));
analogWrite(g, map(analogRead(gPot),0,1023,0,255));
analogWrite(b, map(analogRead(bPot),0,1023,0,255));
}
⸻
29. Светофор
int R=10, Y=9, G=8;
void setup() {
pinMode(R,OUTPUT);
pinMode(Y,OUTPUT);
pinMode(G,OUTPUT);
}
void loop() {
digitalWrite(R,HIGH);
delay(3000);
digitalWrite(Y,HIGH);
delay(1000);
digitalWrite(R,LOW);
digitalWrite(Y,LOW);
digitalWrite(G,HIGH);
delay(3000);
digitalWrite(G,LOW);
for(int i=0;i<3;i++){
digitalWrite(Y,HIGH);
delay(300);
digitalWrite(Y,LOW);
delay(300);
}
}
⸻
Теоретические ответы (кратко)
18. Почему схема слева направо:
* читаемость
* логика сигнала
* стандарт в инженерии
28. Преимущество шины (Bus):
* меньше проводов
* аккуратная схема
* удобство масштабирования
⸻
Если хочешь — могу:
* нарисовать схемы (как в Tinkercad/Proteus)
* объяснить любой пункт «на пальцах»
* или оформить это как готовый отчёт для сдачи