При написании скетча программа выполняет только одну функцию. Что нужно изменить что бы программа заработала? Заранее спасибо.
#include "DHT.h" // подключаем библиотеку для датчика
#include "IRremote.h"
IRrecv irrecv(5);
decode_results results;
void program1()
{
while (1) // аналог loop
{
DHT dht(1, DHT11);
int ledPin = 13; // Отопление
int led = 12; /// Освещение
int ldr = 1;
int buttonPin = 1; // кнопки
int button = 1; // кнопки
int in1 = 2; // задаем порт для L298N
int in2 = 3; // задаем потр для L298N
int ledpol = 11; // полив
int ledven = 10; // вентиляция
int led1 = 8; // Светодиот АВТО Управление
int led2 = 9; // Светодиот РУЧНОЕ Управление
pinMode(led, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
digitalWrite(led, LOW);
}
}
void program2()
{
while (1) // аналог loop
{
DHT dht(1, DHT11);
int ledPin = 13; // Отопление
int led = 12; /// Освещение
int ldr = 1;
int buttonPin = 1; // кнопки
int button = 1; // кнопки
int in1 = 2; // задаем порт для L298N
int in2 = 3; // задаем потр для L298N
int ledpol = 11; // полив
int ledven = 10; // вентиляция
int led1 = 8; // Светодиот АВТО Управление
int led2 = 9; // Светодиот РУЧНОЕ Управление
pinMode(led, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
digitalWrite(led, HIGH);
}
}
void setup()
{
}
void loop()
{
int ledPin = 13; // Отопление
int led = 12; /// Освещение
int ldr = 0;
int buttonPin = 7; // кнопки
int button = 6; // кнопки
int in1 = 2; // задаем порт для L298N
int in2 = 3; // задаем потр для L298N
int ledpol = 11; // полив
int ledven = 10; // вентиляция
int led1 = 8; // Светодиот АВТО Управление
int led2 = 9; // Светодиот РУЧНОЕ Управление
int i = 0;
int buttonS = digitalRead(button);
int buttonState = digitalRead(buttonPin);
pinMode(buttonPin, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(button, INPUT);
irrecv.enableIRIn(); // запускаем прием
pinMode(led, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledpol, OUTPUT);
pinMode(ledven, OUTPUT);
DHT dht(4, DHT11);
dht.begin(); //запускаем датчик влажности DHT11
Serial.begin(9600); // подключаем монитор порта
Serial.println("DHT TEST"); // пишем один раз
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
if (t>=26 && t<=29) {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
if (t>29) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
if (buttonState == LOW) {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
}
if (t<26) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
if (buttonS == LOW ) {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
}
if (t<25)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
if (analogRead(ldr) > 900) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW); //иначе выключаем
}
if ( irrecv.decode( &results )) { // если данные пришли
switch ( results.value ) {
case 0xFFE01F:
program1();
break;
case 0xFF30CF:
program2();
}
irrecv.resume(); // принимаем следующую команду
}
}
Другие языки программирования и технологии
Пишу программу для управления микроконтроллера ARDUINO с помощью ИК приёмника.
Странно вы пишет, у вас сетап пуст
void setup()
{
}
А вот в нем как раз настройки и делаются, а то вижу
int ledPin = 13; // Отопление
int led = 12; /// Освещение
int ldr = 0;
int buttonPin = 7; // кнопки
int button = 6; // кнопки
int in1 = 2; // задаем порт для L298N
int in2 = 3; // задаем потр для L298N
int ledpol = 11; // полив
int ledven = 10; // вентиляция
int led1 = 8; // Светодиот АВТО Управление
int led2 = 9; // Светодиот РУЧНОЕ Управление
Но если это константы, то почему не через #define
определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в тексте программы
Пример: #define ledPin 13 // Отопление
Да и вообще если этим пользоваться, то все делать большими буквами
#define LEDPIN 13 // Отопление
и в программе где-то просто
digitalWrite(LEDPIN, HIGH);
Конечно, можно было бы эти переменные кинуть почти в самый верх как глобальные, то тогда не забыть volatile а то оптимизатор может намудрить, а вы кажись их вызываете из прерывания или нет, не удобно здесь мотать страницу, но кажись так.
Тогда вот так после всяких инклудов:
volatile int ledPin = 13; // Отопление
volatile int led = 12; /// Освещение
volatile int ldr = 1;
volatile int buttonPin = 1; // кнопки
volatile int button = 1; // кнопки
volatile int in1 = 2; // задаем порт для L298N
volatile int in2 = 3; // задаем потр для L298N
volatile int ledpol = 11; // полив
volatile int ledven = 10; // вентиляция
volatile int led1 = 8; // Светодиот АВТО Управление
volatile int led2 = 9; // Светодиот РУЧНОЕ Управление
Но! Если они действительно нужны как переменные, то бишь меняются в программе, а если нет, то вообще const как константы и усе будет работать.
Но допустимо правильный подход все же через #define
В программе разбираться нет ни времени ни желани и тд, но советую просто в примерах разных программ покопаться и поглядеть почему они так пишут, а не по другому.
void setup()
{
}
А вот в нем как раз настройки и делаются, а то вижу
int ledPin = 13; // Отопление
int led = 12; /// Освещение
int ldr = 0;
int buttonPin = 7; // кнопки
int button = 6; // кнопки
int in1 = 2; // задаем порт для L298N
int in2 = 3; // задаем потр для L298N
int ledpol = 11; // полив
int ledven = 10; // вентиляция
int led1 = 8; // Светодиот АВТО Управление
int led2 = 9; // Светодиот РУЧНОЕ Управление
Но если это константы, то почему не через #define
определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в тексте программы
Пример: #define ledPin 13 // Отопление
Да и вообще если этим пользоваться, то все делать большими буквами
#define LEDPIN 13 // Отопление
и в программе где-то просто
digitalWrite(LEDPIN, HIGH);
Конечно, можно было бы эти переменные кинуть почти в самый верх как глобальные, то тогда не забыть volatile а то оптимизатор может намудрить, а вы кажись их вызываете из прерывания или нет, не удобно здесь мотать страницу, но кажись так.
Тогда вот так после всяких инклудов:
volatile int ledPin = 13; // Отопление
volatile int led = 12; /// Освещение
volatile int ldr = 1;
volatile int buttonPin = 1; // кнопки
volatile int button = 1; // кнопки
volatile int in1 = 2; // задаем порт для L298N
volatile int in2 = 3; // задаем потр для L298N
volatile int ledpol = 11; // полив
volatile int ledven = 10; // вентиляция
volatile int led1 = 8; // Светодиот АВТО Управление
volatile int led2 = 9; // Светодиот РУЧНОЕ Управление
Но! Если они действительно нужны как переменные, то бишь меняются в программе, а если нет, то вообще const как константы и усе будет работать.
Но допустимо правильный подход все же через #define
В программе разбираться нет ни времени ни желани и тд, но советую просто в примерах разных программ покопаться и поглядеть почему они так пишут, а не по другому.
зачем program1 и program2? переноси в setup
Вася Піхманець
Это подпрограмма, без неё ничего не получается
Похожие вопросы
- опрос по языкам програмирования кто работает програмистами и пишет программа ответьте на вопрос внутри
- На каком языке программирования проще всего писать программы?
- Писать программу программой
- с какого урока можно писать программы на паскале?
- Нужно ли очень хорошо знать математику чтобы программировать и писать программы ??
- Можно ли писать программы на одном и том же языке для разных устройств?
- что такое программы для управления чужим компом?
- Управление сайтом HTML нужна помощь.
- Возможно ли любую программу написать на языке C++ при помощи только структурного программирования, без ООП?
- Есть тут такие, кто сам научился писать программы и теперь пишет =) Ну не заканчивал ВУЗ и т.д. И на чём пишете, если да