Serial1' was not declared in this scope для автоматического полива растений
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
int in1 = 2;
int in2 = 3;
LiquidCrystal lcd(14,15,16,17,18,19);
int led = 13;
int flag = 0;
int motorpin = 11;
int sensorpin = 7;
void setup()
{
lcd.begin(16,2);
Serial1.begin(9600);
pinMode(led, OUTPUT);
pinMode(motor, OUTPUT);
pinMode(sensor, INPUT_PULLUP);
lcd.print("Plant Watering");
lcd.setCursor(4,1);
delay(2000);
lcd.clear()
lcd.print("RCC INSTITUTE");
lcd.setCursor(0,1);
lcd.print("Starting....");
delay(2000);
gsmInit();
lcd.clear();
lcd.print("System Ready");
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Automatic Mode");
if (digitalRead(sensor) == 1 && flag == 0)
{
delay(1000);
if (digitalRead(sensor) == 1)
{
digitalWrite(led, HIGH);
sendSMS("Low Soil Moisture detected. Motor turned ON");
lcd.begin(16, 2);
lcd.setCursor(0, 1);
lcd.print("Motor ON ");
digitalWrite(motor, HIGH);
delay(2000);
flag=1;
}
} else if(digitalRead(sensor) == 0 && flag == 1)
{
delay(1000);
if (digitalRead(sensor) == 0)
{
digitalWrite(led, LOW);
sendSMS("Soil Moisture is Normal. Motor turned OFF");
digitalWrite(motor, LOW);
lcd.begin(16, 2);
lcd.print("Motor OFF");
lcd.setCursor(0, 1);
lcd.print("Motor OFF");
delay(2000);
flag = 0;
}
}
}
void sendSMS(String msg)
{
lcd.clear();
lcd.print("Sending SMS");
Serial1.println("AT+CMGF=1");
delay(500);
Serial1.print("AT+CMGS=");
Serial1.print('"');
Serial1.print("+918xxxxxxxxx"); // number
Serial1.print('"');
Serial1.println();
delay(500);
Serial1.println(msg);
delay(500);
Serial1.write(26);
delay(1000);
lcd.clear();
lcd.print("SMS Sent");
delay(1000);
lcd.begin(16, 2);
}
void gsmInit()
{
lcd.clear();
lcd.print("Finding Module..");
boolean at_flag = 1;
while (at_flag)
{
Serial1.println("AT");
while (Serial1.available() > 0)
{
if (Serial1.find("OK"))
at_flag = 0;
}
delay(1000);
}
Serial1.println("ATE0"); //<=== it says 'Serial1' was not declared in this scope
lcd.clear();
lcd.print("Finding Network..");
boolean net_flag = 1;
while(net_flag)
{
Serial1.println("AT+CPIN?");
while(Serial1.available() > 0)
{
if (Serial1.find("READY"))
net_flag = 0;
break;
}
delay(1000);
}
Serial1.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial1.println("AT+CMGF=1");
delay(1000);
Serial1.println("AT+CSMP=17,167,0,0");
lcd.clear();
Serial1.flush();
}
@Dave Tesfa, 👍0
Обсуждение1 ответ
▲ 1
UNO имеет только один последовательный порт с именем Serial
. Вы можете создать еще один, используя SoftwareSerial (который вы включили, но не использовали), и вы можете, если захотите, назвать этот Serial1
.
#include <SoftwareSerial.h>
SoftwareSerial Serial1(4, 5); // RX, TX
,
@Majenko
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
У UNO нет Serial1, так чего же вы ожидали?, @Majenko
1. У ООН нет сериала 1. Просто используйте
Serial
. 2. При запросе об ошибке компиляции на этом сайте вы всегда должны указывать полное сообщение об ошибке, включая информацию о том, где произошла ошибка., @chrislВ качестве отступа: в gsmInit()
break
не находится внутриif (Serial1.find("READY"))
из-за отсутствия `{}'; возможной ошибки., @ocrduК вашему сведению, я пометил администратора, чтобы он удалил номер телефона из вашего кода., @Peter M