D1' was not declared in this scope; did you mean 'y1'?
Несмотря на то, что я упоминаю все в начале, тогда тоже m выходит за рамки ошибки. Ссылка на код :- https://noisycarlos.com/project/how-to-turn-your-computer-on-and-off-remotely/ Я не знаю, что здесь происходит. Я использую модуль ESP8266. Пожалуйста, помогите.
#include <ESP8266WiFi.h>
const char* ssid = <YOUR WIFI NAME>;
const char* password = <YOUR WIFI PASSWORD>;
const char ON = '+',
OFF = '-',
SLEEP = '/',
AUTO = 'A';
const int pinPowerLightOut = D1,
pinPowerLightIn = D5,
pinPowerButton = D6,
pinResetButton = D7,
buttonPressTime = 250;
char currentStatus = OFF;
char lightStatus = AUTO;
unsigned long autoDisconnectTime = 0,
powerButtonReleaseTime = 0;
WiFiServer wifiServer(80);
WiFiClient client;
unsigned long lastOn = 0,
lastOff = 0;
void changeStatusTo(char newStatus)
{
if(newStatus != currentStatus)
{
Serial.print("Status changed to ");
Serial.println(newStatus);
}
currentStatus = newStatus;
}
void recordLightStatusChange(bool lightIn)
{
if(lightIn)
lastOn = millis();
else
lastOff = millis();
if(lightStatus == AUTO);
digitalWrite(pinPowerLightOut, lightIn);
}
void statusChange()
{
bool currentLightStatus = !digitalRead(pinPowerLightIn);
if(lastOn != 0 && lastOff != 0)
{
if((millis() < lastOn + 4000) && (millis() < lastOff + 4000))
{
changeStatusTo(SLEEP);
recordLightStatusChange(currentLightStatus);
return;
}
}
if(currentLightStatus)
changeStatusTo(ON);
else
changeStatusTo(OFF);
recordLightStatusChange(currentLightStatus);
}
void Print(String toPrint)
{
client.print(toPrint);
Serial.print(toPrint);
}
void Println(String toPrint)
{
client.println(toPrint);
Serial.println(toPrint);
}
void processCommand(String command)
{
Serial.print(F("Received command "));
Serial.println(command);
if(command.equalsIgnoreCase(F("status")))
{
Print("Status: ");
if(currentStatus == ON)
Println("On");
else if(currentStatus == OFF)
Println("Off");
else if(currentStatus == SLEEP)
Println("Sleeping");
}
else if(command.equalsIgnoreCase(F("on")))
{
if(currentStatus != ON)
{
Println("Power Button Pressed (powering on)");
pressPowerButton(buttonPressTime);
}
else
Println("Machine is already on (button not pressed)");
}
else if(command.equalsIgnoreCase(F("off")))
{
if(currentStatus == ON)
{
Println("Power Button Pressed (powering off)");
pressPowerButton(buttonPressTime);
}
else
Println("Machine is already off (button not pressed)");
}
else if(command.equalsIgnoreCase(F("reset")))
{
unsigned long releaseTime = millis() + 500;
digitalWrite(pinResetButton, HIGH);
while(millis() < releaseTime)
{}
digitalWrite(pinResetButton, LOW);
Println("Reset Button Pressed");
}
else if(command.equalsIgnoreCase(F("force off")))
{
if(currentStatus != OFF)
{
Print("Holding Power Button for 10 seconds...");
pressPowerButton(10000);
}
}
else if(command.equalsIgnoreCase(F("pressPwr")))
{
digitalWrite(pinPowerButton, HIGH);
Println("Power Button Pressed");
}
else if(command.equalsIgnoreCase(F("releasePwr")))
{
digitalWrite(pinPowerButton, LOW);
Println("Power Button Released");
}
else if(command.equalsIgnoreCase(F("light on")))
{
setLightStatus(ON);
}
else if(command.equalsIgnoreCase(F("light off")))
{
setLightStatus(OFF);
}
else if(command.equalsIgnoreCase(F("light auto")))
{
setLightStatus(AUTO);
}
}
void setLightStatus(char newStatus)
{
if(newStatus == ON)
{
digitalWrite(pinPowerLightOut, HIGH);
Println("Light On");
return;
}
if(newStatus == OFF)
{
digitalWrite(pinPowerLightOut, LOW);
Println("Light Off");
return;
}
if(newStatus == AUTO)
{
Println("Light Set to Auto");
setLightStatus(currentStatus);
}
}
void pressPowerButton(int duration)
{
powerButtonReleaseTime = millis() + (duration);
digitalWrite(pinPowerButton, HIGH);
}
void runRoutineChecks()
{
checkIfPowerNeedsToRelease();
if((millis() > lastOn + 4000) && (millis() > lastOff + 4000))
statusChange();
}
void checkIfPowerNeedsToRelease()
{
if(powerButtonReleaseTime != 0)
{
if(millis() >= powerButtonReleaseTime)
{
digitalWrite(pinPowerButton, LOW);
powerButtonReleaseTime = 0;
Println("Power Button Released");
}
}
}
/////////////----------------------------------------------------------------------------
void setup() {
Serial.begin(115200);
pinMode(pinPowerLightIn, INPUT_PULLUP);
pinMode(pinPowerLightOut, OUTPUT);
pinMode(pinPowerButton, OUTPUT);
pinMode(pinResetButton, OUTPUT);
attachInterrupt(digitalPinToInterrupt(pinPowerLightIn), statusChange, CHANGE);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting..");
}
Serial.print("Connected to WiFi. IP:");
Serial.println(WiFi.localIP());
wifiServer.begin();
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
runRoutineChecks();
client = wifiServer.available();
if (client)
{
while (client.connected())
{
String comm = "";
while (client.available()>0)
{
char c = client.read();
autoDisconnectTime = millis() + 60000;
if(c == ';')
{
processCommand(comm);
comm = "";
}
else
{
comm.concat(c);
}
}
runRoutineChecks();
if(autoDisconnectTime > 1000 && millis() > autoDisconnectTime)
{
Serial.println("Client timeout");
client.stop();
}
}
client.stop();
Serial.println("Client disconnected");
autoDisconnectTime = 0;
}
}
ОШИБКА :-
NODEMCU:2:30: error: 'D1' was not declared in this scope; did you mean 'y1'?
2 | const int pinPowerLightOut = D1,
| ^~
| y1
C:\Users\wahid\Documents\Arduino\NODEMCU\NODEMCU.ino: In function 'void statusChange()':
NODEMCU:61:42: error: 'pinPowerLightIn' was not declared in this scope; did you mean 'pinPowerLightOut'?
61 | bool currentLightStatus = !digitalRead(pinPowerLightIn);
| ^~~~~~~
| pinPowerLightOut
C:\Users\wahid\Documents\Arduino\NODEMCU\NODEMCU.ino: In function 'void processCommand(String)':
NODEMCU:118:24: error: 'buttonPressTime' was not declared in this scope
118 | pressPowerButton(buttonPressTime);
| ^~~~~~~
NODEMCU:130:24: error: 'buttonPressTime' was not declared in this scope
130 | pressPowerButton(buttonPressTime);
| ^~~~~~~
NODEMCU:140:18: error: 'pinResetButton' was not declared in this scope
140 | digitalWrite(pinResetButton, HIGH);
| ^~~~~~
NODEMCU:158:18: error: 'pinPowerButton' was not declared in this scope; did you mean 'pressPowerButton'?
158 | digitalWrite(pinPowerButton, HIGH);
| ^~~~~~
| pressPowerButton
NODEMCU:163:18: error: 'pinPowerButton' was not declared in this scope; did you mean 'pressPowerButton'?
163 | digitalWrite(pinPowerButton, LOW);
| ^~~~~~
| pressPowerButton
C:\Users\wahid\Documents\Arduino\NODEMCU\NODEMCU.ino: In function 'void pressPowerButton(int)':
NODEMCU:212:16: error: 'pinPowerButton' was not declared in this scope; did you mean 'pressPowerButton'?
212 | digitalWrite(pinPowerButton, HIGH);
| ^~~~~~
| pressPowerButton
C:\Users\wahid\Documents\Arduino\NODEMCU\NODEMCU.ino: In function 'void checkIfPowerNeedsToRelease()':
NODEMCU:232:20: error: 'pinPowerButton' was not declared in this scope; did you mean 'pressPowerButton'?
232 | digitalWrite(pinPowerButton, LOW);
| ^~~~~~
| pressPowerButton
C:\Users\wahid\Documents\Arduino\NODEMCU\NODEMCU.ino: In function 'void setup()':
NODEMCU:246:11: error: 'pinPowerLightIn' was not declared in this scope; did you mean 'pinPowerLightOut'?
246 | pinMode(pinPowerLightIn, INPUT_PULLUP);
| ^~~~~~~
| pinPowerLightOut
NODEMCU:248:11: error: 'pinPowerButton' was not declared in this scope; did you mean 'pressPowerButton'?
248 | pinMode(pinPowerButton, OUTPUT);
| ^~~~~~
| pressPowerButton
NODEMCU:249:11: error: 'pinResetButton' was not declared in this scope
249 | pinMode(pinResetButton, OUTPUT);
| ^~~~~~
exit status 1
'D1' was not declared in this scope; did you mean 'y1'?
@Frankruss, 👍-1
Обсуждение1 ответ
Только для некоторых плат esp8266 dev определены контакты Dx. Константы сопоставляют выводы модулей esp с выводами платы (например, на большинстве из них D1-это io 4).
Если у вас есть плата dev с метками Dx на печатной плате, выберите нужную плату в меню Сервис.
Для обычного модуля esp8266 используйте PIN в коде. Если у автора кода была плата Wemos D1 mini или NodeMci dev, используйте определения Dx в заголовочном файле, чтобы сопоставить контакты Dx с контактами esp8266.
Обратите внимание, что на esp8266 не все контакты являются выводами общего назначения. Некоторые из них имеют ограниченное использование, поэтому используйте те же контакты esp8266, что и автор кода.
Я использовал те же контакты, что и автор. Можете ли вы объяснить часть отображения, которую я dnt понимаю.Спасибо., @Frankruss
@Frankruss, если у вас есть NodeMCU, просто выберите его в меню Сервис. Я написал ответ до того, как вы показали, что у вас есть NodeMCU., @Juraj
Я выбрал универсальный модуль ESP8266 . должен ли я выбрать NodeMCU да, а затем какой из них?, @Frankruss
@Frankruss, да, выберите NodeMCU. версия, которая у вас есть, или любая другая, которая работает, @Juraj
U r gr8 сэр я могу скомпилировать код но при загрузке я все равно получаю эту ошибку : esptool.py v3.0 Последовательный порт COM8 выбранный последовательный порт _ не существует или ваша плата не подключена. @Juraj, @Frankruss
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Захват изображений с OV7670 (без FIFO) с использованием Arduino Uno?
@Juraj m использует Nodemcu ESP8266, который содержит контакты от D0 до D8 ?, @Frankruss