Сколько val = digitalread() можно ввести в программу ардуино

Ты бы вместе с внуками немного по занимался…

Не, ну вот это “перец” ))) Месяц как ардуино занимается и еще имеет наглость “права качать” :laughing:

2 лайка

Мне кажется, первый выделенный фрагмент противоречит второму выделенному фрагменту. Не?

1 лайк

это круто

всё давно объяснено тут, пост #2 я думаю

PS если ТС меня не понял то сам себе злобный буратино

держи, ради праздника, не проверял, не на чем

Спойлер
#include <DHT.h>
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include “RTClib.h” //Подключаем библиотеку для использования модуля часов реального времени RTC
#include <LiquidCrystal_I2C.h>
RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC
//задаем адрес LCD экрана 0x27, 16 символов, 2 строки
LiquidCrystal_I2C lcd(0x27, 16, 2);
int svet = 3;
#define DHTPIN 2
#define DHTTYPE DHT11
int t = 4;
int h = 5;
int val;

DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = // кодируем символ градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};
int value = 0;
int analogPin = A1;
int poliv = 6;
int norma = 300;
void setup () {
  lcd.init(); // Инициализируем экран
  lcd.backlight(); //без подсветки,буквы плохо видно
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();
  pinMode(svet, OUTPUT);
  lcd.createChar(1, degree);

  dht.begin();
  pinMode(t, OUTPUT);
  pinMode(h, OUTPUT);
  pinMode(analogPin, INPUT);
  pinMode(poliv, OUTPUT);
}

void loop () {
  //освещение пин 3
  DateTime now = RTC.now();
  if (now.hour() >= 8 && now.hour() < 15)
    digitalWrite(svet, LOW);//включено

  else
    digitalWrite(svet, HIGH); //Отключено
  val = digitalRead(svet);

  if (val == LOW) {
    lcd.setCursor(12, 0);
    lcd.print(“S”);
  }

  else if (val == HIGH)
  {
    lcd.setCursor(12, 0);
    lcd.print(“s”);
  }

  //часы
  if (millis() % 1000 == 0) {
    lcd.setCursor(3, 1);
    lcd.print(now.month(), DEC);//месяц
    lcd.setCursor(2, 1);
    lcd.print(“: ”);
    lcd.setCursor(0, 1);
    lcd.print(now.day(), DEC);//день
    lcd.setCursor(0, 0);
    lcd.print(now.hour(), DEC);//час
    lcd.setCursor(2, 0);
    lcd.print(“: ”);
    lcd.setCursor(3, 0);
    lcd.print(now.minute(), DEC);//минуты

    //температура пин 2 вход температура пин 4 вых и влажность пин 5 вых

    h = dht.readHumidity();
    t = dht.readTemperature();
    if (t > 25)
    {
      digitalWrite (t, HIGH);
    }
    else
    {
      digitalWrite (t, LOW);
    }

    val = digitalRead(t);
    if (val == HIGH) {
      lcd.setCursor(13, 0);
      lcd.print(“T”);
    }

    else if (val == LOW)
    {
      lcd.setCursor(13, 0);
      lcd.print(“t”);
    }
    delay (1000);
    if (h > 45)
    {
      digitalWrite (h, HIGH);
    }
    else
    {
      digitalWrite (h, LOW);
    }

    val = digitalRead(h););
    if (val == HIGH)
  {
    lcd.setCursor(14, 0);
      lcd.print(“H”);
    }

    else if (val == LOW)
  {
    lcd.setCursor(14, 0);
      lcd.print(“h”);
    }

    delay(1000);
    lcd.setCursor(10, 1);
    lcd.print(“ % ”);
    lcd.setCursor(8, 1);
    lcd.print(h);
    lcd.setCursor(10, 0);
    lcd.print(“C”);
    lcd.setCursor(8, 0);
    lcd.print(t);

    //полив вход а1 выход 6
    if (analogRead(analogPin) >= norma)
      digitalWrite(poliv, LOW);
      else
        digitalWrite(poliv, HIGH);

        val = digitalRead(poliv);
        if (val == LOW) {
        lcd.setCursor(15, 0);
          lcd.print(“P”);
        }
        else if (val == HIGH)
      {
        lcd.setCursor(15, 0);
          lcd.print(“p”);
        }
    delay (1000);
  }
}

ты уверен, что правильно распознал, после каких if у него должны быть скобки, а после каких нет? :slight_smile:
И вот еще код интересный…

сначала сами включаем или выключаем свет по условию, а потом читаем из пина, что это мы такое там выставили в прошлой строчке :slight_smile:
И такой замечательный блок условий не один…

2 лайка

Ты имеешь ввиду день работника клининговой сферы? Надо седня машину помыть. Говорят, если в этот праздник помыть, то потом год не нужно мыть. Вот не знаю - правда иль нет…

1 лайк

Ну эт как посмотреть… Год не мыть можно машину, которая год стоИт сломатая или разбитая😄

или ту, которую грязь только красит

Вчера первый раз с прошлого лета намыл машину. Через час дождь пошел, хотя по прогнозам не было. До сих пор не перестает никак. Как это называется?

народная примета

Я ж запретил, вроде, пенсионеру помогать

1 лайк

Где это?
Вводить нельзя было, это я помню

Каво вводить? Здесь прямо написано:

Полная цитата выглядит так))
Получается неинвазивные методы не запрещены. А равно и действия третьих лиц

Всё-таки я так и не понял - зачем ТС столько там у себя “накрутил”…
Видимо 1 месяц занятия ардуиной маловато для подобных “поделок”… )))

Засекреченная информация
#include <DHT.h>
#include <Wire.h>                   // Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include <RTClib.h>                 // Подключаем библиотеку для использования модуля часов реального времени RTC
#include <LiquidCrystal_I2C.h>

RTC_DS1307 RTC;                     // Создаем переменную класса - для использования RTC

LiquidCrystal_I2C lcd(0x27, 16, 2); // задаем адрес LCD экрана 0x27, 16 символов, 2 строки

uint8_t svet = 3;
uint8_t t = 4;
uint8_t h = 5;

#define DHTPIN    2
#define DHTTYPE   DHT11

DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = {                  // кодируем символ градуса
  B00111,                           // ( но нигде не применяем потом :D )
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};

uint8_t   analogPin = A1;
uint8_t   poliv     = 6;
int16_t   norma     = 300;
uint32_t  prevMillis;

void setup () {

  pinMode(t, OUTPUT);
  pinMode(h, OUTPUT);
  pinMode(analogPin, INPUT);
  pinMode(poliv, OUTPUT);
  pinMode(svet, OUTPUT);

  lcd.init();                     // Инициализируем экран
  lcd.backlight();                // без подсветки,буквы плохо видно
                                  // ( где не надо - запятые ставим :D )
  dht.begin();
  RTC.begin();
  Serial.begin(9600);
  Wire.begin();

  lcd.createChar(1, degree);      // зачем ???
  prevMillis = millis();
}

void loop () {

  DateTime now = RTC.now();

  if (now.hour() >= 8 && now.hour() < 15) {
    digitalWrite(svet, LOW);      //включено
    lcd.setCursor(12, 0);
    lcd.print("S");
  } else {
    digitalWrite(svet, HIGH);     //Отключено
    lcd.setCursor(12, 0);
    lcd.print("s");
  }

  //часы
//  if (millis() % 1000 == 0) {           // ТАК ДЕЛАТЬ НЕ НАДО
  if (millis() - prevMillis >= 1000) {    // А вот так - нормально ))
    prevMillis  = millis();
    lcd.setCursor(3, 1);
    lcd.print(now.month(), DEC);          // месяц
    lcd.setCursor(2, 1);
    lcd.print(": ");
    lcd.setCursor(0, 1);
    lcd.print(now.day(), DEC);            // день
    lcd.setCursor(0, 0);
    lcd.print(now.hour(), DEC);           // час
    lcd.setCursor(2, 0);
    lcd.print(": ");
    lcd.setCursor(3, 0);
    lcd.print(now.minute(), DEC);         // минуты

    // температура пин 2 вход температура пин 4 вых и влажность пин 5 вых
    int h = dht.readHumidity();
    int t = dht.readTemperature();

    if (t > 25) {
      digitalWrite (t, HIGH);
      lcd.setCursor(13, 0);
      lcd.print("T");
    } else {
      digitalWrite (t, LOW);
      lcd.setCursor(13, 0);
      lcd.print("t");
    }

    if (h > 45) {
      digitalWrite (h, HIGH);
      lcd.setCursor(14, 0);
      lcd.print("H");
    } else {
      digitalWrite (h, LOW);
      lcd.setCursor(14, 0);
      lcd.print("h");
    }

    lcd.setCursor(10, 1);
    lcd.print(" % ");
    lcd.setCursor(8, 1);
    lcd.print(h);
    lcd.setCursor(10, 0);
    lcd.print("C");
    lcd.setCursor(8, 0);
    lcd.print(t);

    //полив вход а1 выход 6
    if (analogRead(analogPin) >= norma) {
      digitalWrite(poliv, LOW);
      lcd.setCursor(15, 0);
      lcd.print("P");
    } else {
      digitalWrite(poliv, HIGH);
      lcd.setCursor(15, 0);
      lcd.print("p");
    }
  }
}

Скетч использует 8682 байт (28%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 501 байт (24%) динамической памяти, оставляя 1547 байт для локальных переменных. Максимум: 2048 байт.

Вот так вообще пойдётЬ )))

Супер засекреченная информация
#include <DHT.h>
#include <Wire.h>                   // Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include <RTClib.h>                 // Подключаем библиотеку для использования модуля часов реального времени RTC
#include <LiquidCrystal_I2C.h>

RTC_DS1307 RTC;                     // Создаем переменную класса - для использования RTC

LiquidCrystal_I2C lcd(0x27, 16, 2); // задаем адрес LCD экрана 0x27, 16 символов, 2 строки

uint8_t svet = 3;
uint8_t t = 4;
uint8_t h = 5;

#define DHTPIN    2
#define DHTTYPE   DHT11

DHT dht(DHTPIN, DHTTYPE);

uint8_t   analogPin = A1;
uint8_t   poliv     = 6;
int16_t   norma     = 300;
uint32_t  prevMillis;

void setup () {

  pinMode(t, OUTPUT);
  pinMode(h, OUTPUT);
  pinMode(analogPin, INPUT);
  pinMode(poliv, OUTPUT);
  pinMode(svet, OUTPUT);

  lcd.init();                     // Инициализируем экран
  lcd.backlight();                // без подсветки,буквы плохо видно
                                  // ( где не надо - запятые ставим :D )
  dht.begin();
  RTC.begin();
  Serial.begin(9600);
  Wire.begin();

  prevMillis = millis();
}

void loop () {

  DateTime now = RTC.now();

  lcd.setCursor(12, 0);
  if (now.hour() >= 8 && now.hour() < 15) {
    digitalWrite(svet, LOW);      //включено
    lcd.print("S");
  } else {
    digitalWrite(svet, HIGH);     //Отключено
    lcd.print("s");
  }

  //часы
  if (millis() - prevMillis >= 1000) {    // А вот так - нормально ))
    prevMillis  = millis();
    lcd.setCursor(3, 1);
    lcd.print(now.month(), DEC);          // месяц
    lcd.setCursor(2, 1);
    lcd.print(": ");
    lcd.setCursor(0, 1);
    lcd.print(now.day(), DEC);            // день
    lcd.setCursor(0, 0);
    lcd.print(now.hour(), DEC);           // час
    lcd.setCursor(2, 0);
    lcd.print(": ");
    lcd.setCursor(3, 0);
    lcd.print(now.minute(), DEC);         // минуты

    // температура пин 2 вход температура пин 4 вых и влажность пин 5 вых
    int h = dht.readHumidity();
    int t = dht.readTemperature();

    lcd.setCursor(13, 0);
    if (t > 25) {
      digitalWrite (t, HIGH);
      lcd.print("T");
    } else {
      digitalWrite (t, LOW);
      lcd.print("t");
    }

    lcd.setCursor(14, 0);
    if (h > 45) {
      digitalWrite (h, HIGH);
      lcd.print("H");
    } else {
      digitalWrite (h, LOW);
      lcd.print("h");
    }

    lcd.setCursor(10, 1);
    lcd.print(" % ");
    lcd.setCursor(8, 1);
    lcd.print(h);
    lcd.setCursor(10, 0);
    lcd.print("C");
    lcd.setCursor(8, 0);
    lcd.print(t);

    //полив вход а1 выход 6
    lcd.setCursor(15, 0);
    if (analogRead(analogPin) >= norma) {
      digitalWrite(poliv, LOW);
      lcd.print("P");
    } else {
      digitalWrite(poliv, HIGH);
      lcd.print("p");
    }
  }
}

Даже в Atmega8 “влазит” )))
Скетч использует 7288 байт (88%) памяти устройства. Всего доступно 8192 байт.
Глобальные переменные используют 487 байт (47%) динамической памяти, оставляя 537 байт для локальных переменных. Максимум: 1024 байт.

Лучше бы мне помог разобраться как с sqlite в C++ работать )))
PS тут вам не здесь PHP

А какие проблемы с ней работать? Она ж сама на С написана. Тут вам не php

я не понимаю, как значения из базы переменным присваивать, взять к примеру конкретную запись

rc = db_exec(db1, "SELECT count(*) FROM frequency");

и как отсюда значение счётчика в переменную вытащить?
вот сижу, репу чешу, и как в том фильме - всё самой???

SQLITE_API int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);