Планирование освещения с помощью Arduino: методы и примеры кода

  1. Планирование по времени.
    Этот метод позволяет запланировать включение и выключение света в определенное время дня.

    #include <TimeLib.h>
    #include <TimeAlarms.h>
    int lightPin = 2;
    void setup() {
     // Initialize the light pin
     pinMode(lightPin, OUTPUT);
     // Set the on and off times
     Alarm.alarmRepeat(8, 0, 0, turnOnLight);   // Turn on at 8:00 AM every day
     Alarm.alarmRepeat(18, 0, 0, turnOffLight);  // Turn off at 6:00 PM every day
     // Start the alarm
     Alarm.timerOnce(1);
    }
    void loop() {
     // Process the alarms
     Alarm.delay(1000);
    }
    void turnOnLight() {
     digitalWrite(lightPin, HIGH);
    }
    void turnOffLight() {
     digitalWrite(lightPin, LOW);
    }
  2. Планирование на основе датчика освещенности.
    Этот метод позволяет управлять освещением в зависимости от уровня окружающего освещения. Свет будет включаться, когда стемнеет, и выключаться, когда станет светло.

    int lightPin = 2;
    int sensorPin = A0;
    int threshold = 500;
    void setup() {
     // Initialize the light and sensor pins
     pinMode(lightPin, OUTPUT);
     pinMode(sensorPin, INPUT);
    }
    void loop() {
     int lightLevel = analogRead(sensorPin);
     if (lightLevel < threshold) {
       digitalWrite(lightPin, HIGH);  // Turn on the light
     } else {
       digitalWrite(lightPin, LOW);   // Turn off the light
     }
     delay(1000);  // Adjust the delay as needed
    }
  3. Планирование через веб-интерфейс:
    Этот метод позволяет планировать освещение удаленно через веб-интерфейс. Вы можете использовать модуль Wi-Fi с Arduino для подключения к Интернету и управления освещением.

    #include <ESP8266WiFi.h>
    #include <ESP8266HTTPClient.h>
    const char* ssid = "your_SSID";
    const char* password = "your_PASSWORD";
    const char* serverUrl = "http://your_server_url.com";
    int lightPin = 2;
    void setup() {
     // Initialize the light pin
     pinMode(lightPin, OUTPUT);
     // Connect to Wi-Fi
     WiFi.begin(ssid, password);
     while (WiFi.status() != WL_CONNECTED) {
       delay(1000);
     }
    }
    void loop() {
     // Check for scheduled commands from the server
     if (WiFi.status() == WL_CONNECTED) {
       HTTPClient http;
       http.begin(serverUrl);
       int httpCode = http.GET();
       if (httpCode == HTTP_CODE_OK) {
         String command = http.getString();
         if (command == "on") {
           digitalWrite(lightPin, HIGH);
         } else if (command == "off") {
           digitalWrite(lightPin, LOW);
         }
       }
       http.end();
     }
     delay(1000);  // Adjust the delay as needed
    }