Загрузка данных


Это большой набор лабораторных заданий, поэтому дам тебе готовые решения (схемы + код) по ключевым пунктам, особенно там, где требуется программирование 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)
* объяснить любой пункт «на пальцах»
* или оформить это как готовый отчёт для сдачи