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

ну поехали))
стобы не думать “Сколько val можно …”, их надо исключить!

/*
   МК использован - Attiny13A
*/

// Объявим пины более понятно:

#define   pinState1   PB0
#define   pinState2   PB1
#define   pinState3   PB2

#define   relePin1    PB3
#define   relePin2    PB4

void setup() {
  // Не знаю я что там за схема, поэтому так ))
  pinMode(pinState1, INPUT);
  pinMode(pinState2, INPUT);
  pinMode(pinState3, INPUT);

  pinMode(relePin1, OUTPUT);
  pinMode(relePin2, OUTPUT);

  digitalWrite(relePin1, LOW);
  digitalWrite(relePin2, LOW);
}

void loop() {

      digitalWrite(relePin1, !digitalRead(pinState1));
      digitalWrite(relePin2, !digitalRead(pinState2));

      digitalWrite(relePin1, digitalRead(pinState3));
      digitalWrite(relePin2, digitalRead(pinState3));
}

Исключены они в моем способе № 2 ))

1 лайк

#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;
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);//Отключено
int 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 вых

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

int 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);}

int 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);

int 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);

}
}

если четыре или три ошибка в строк int val = digitalRead( ) при двух int val = digitalRead( ); программа работает нормально

ТС, щас люлей от модератора схлопочешь!
Вставь код ПРАВИЛЬНО !!!

1 лайк

сорри, просмотрел, снимаю свою кандидатуру))

Ну и как номер строки узнать? Считать предлагаешь?
ВСТАВЬ КОД ПО ПРАВИЛАМ ФОРУМА !!!

ошибка понятна, он пытается несколько раз объявить val, но как ему это объяснить :thinking:

А нафига выполнять некие действия, присваивать переменной значение и потом эту переменную проверять для дополнительных действий?
Сразу проверяй температуру,включай реле и пиши на экране.

так, мне кажется, интереснее

void loop() {

  {
    uint8_t val = digitalRead(pinState1);
    if (!val) {    digitalWrite(relePin1, HIGH); }
    {
      uint8_t val = digitalRead(pinState2);
      if (!val) {    digitalWrite(relePin2, HIGH); }
       {
        uint8_t val = digitalRead(pinState3);
        if (!val) {    digitalWrite(relePin3, HIGH); }
       }
     }
}
2 лайка

Я пенсионер ардуино изучаю месяц если кто-то сидит возле компа днями и ночами то у меня 2-3 часа в сутки есть время. И не надо оскорблять пользователей форума если человек желает постигнуть ардуино.

@smelik
Или вставьте код правильно, или ищите помощи в другом месте

1 лайк

Ну я ж запретил.

1 лайк

В пятницу приходите

1 лайк

пенсионер, однако, сложная профессия…

1 лайк

Пенсионерам здесь скидок нет, особенно тем, кто читать не умеет, что в окне перед ним написано.

1 лайк

“Автоформатирование” с этим “чудо-кодом” (который он всё ещё никак правильно выложить не может) - не справилось :laughing:

1 лайк

Я таки понял новичкам на форуме делать не чего ведь там собираются только спецы высокого уровня дай бог всем здоровья и мирного неба над головой.Больше на форуме не появлюсь.

А код-то где? Забыли привести?

Вы не представляете как нас всех опечалили :sob:

2 лайка

неужели проще обидится, чем код правильно вставить?
Ну тогда пока, таким тут и правда делать нечего

1 лайк