Проект на базе Ардуино "Освещение школьного двора"
Список деталей:
· плата Arduino Mega;
· светодиоды;
· резисторы номиналом 220 Ом;
· фоторезистор;
· провода соединительные;
· ультразвуковой дальномер;
· лазерный указатель;
· датчик дневного и ночного освещения на основе солнечной батареи.
Схема проекта:
Скетч программы:
#include "Ultrasonic.h"
Ultrasonic ultrasonic(11, 12);
int solarInPin = A0; // solar panel
int laserInpin = A1; // sensor laser
int laserOnPin = 52; // laser on pin
int myLampsPin[] = {2, 3, 4, 5, 6, 7};
int pinCount = 8;
int brightness = 1023;
int solarInPinRead = 0;
int laserInPinRead = 0;
int sonarValue = 0; // value read from the pot
int lamligth = 0;
int ligthOutputValue = 0; // value output to the PWM (analog out)
void setup() {
pinMode(laserOnPin, OUTPUT);
digitalWrite(laserOnPin, LOW);
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(myLampsPin[thisPin], OUTPUT);
digitalWrite(myLampsPin[thisPin], LOW);
}
Serial.begin(9600);
}
void loop() {
solarInPinRead = analogRead(solarInPin);
laserInPinRead = analogRead(laserInpin);
int dist_cm = ultrasonic.Ranging(CM); // get distance
Serial.println(dist_cm); // print the distance
lamligth = dist_cm;
if (dist_cm <= 78) {
analogWrite(myLampsPin[0], lamligth * 7.5);
analogWrite(myLampsPin[1], lamligth * 7.5);
analogWrite(myLampsPin[3], lamligth * 7.5);
Serial.println(lamligth);
} else {
analogWrite(myLampsPin[0], LOW);
analogWrite(myLampsPin[1], LOW);
analogWrite(myLampsPin[3], LOW);
}
Serial.print("Pokzaniya solnechoi paneli ");
Serial.println(solarInPinRead);
Serial.print("Pokzaniya priemnika signala lasera ");
Serial.println(laserInPinRead);
if (solarInPinRead <= 225) // solar
{
// 600
Serial.println(" Night & sleep");
Serial.println(" All is good");
digitalWrite(laserOnPin, HIGH);
if (laserInPinRead < 245) // laser
{
// 485
Serial.println(" ALARM Who here?");
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
analogWrite(myLampsPin[thisPin], brightness);
delay(1000);
}
delay(1000);
for (int thisPin = pinCount; thisPin >= 0; thisPin--) {
for (brightness = 1023; brightness >= 0; brightness--) {
analogWrite(myLampsPin[thisPin], brightness);
delay(1);
// Serial.println(brightness);
}
}
}
} else {
Serial.println(" Day");
digitalWrite(laserOnPin, LOW);
}
}