#include <WiFi.h>
#include <LiquidCrystal.h>
#include <HTTPClient.h>
const char* WIFI_SSID = "网速不太好"; // 替换为您的WiFi网络名称
const char* WIFI_PASSWORD = "sxj20020811"; // 替换为您的WiFi密码
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int buttonPin = 34;
const int ledPin = 2;
const char* url = "http://wokwi.com/api/endpoint"; // 替换为有效的服务器URL
WiFiClient client; // WiFi网络客户端
void setup() {
Serial.begin(115200);
while (!Serial);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2);
connectToWiFi();
lcd.print("WiFi Connected!");
}
void connectToWiFi() {
WiFi.disconnect(true);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi Connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
// 凯撒密码加密函数
String caesarEncrypt(String text, int shift) {
String encryptedText = "";
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (isalpha(c)) {
char base = isupper(c) ? 'A' : 'a';
c = ((c - base + shift) % 26) + base;
}
encryptedText += c;
}
return encryptedText;
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
performCryptographyAndSend();
}
}
void performCryptographyAndSend() {
lcd.clear();
lcd.print("Button Pressed");
String message = "Hello, World!";
int shift = 4;
String encryptedMessage = caesarEncrypt(message, shift);
lcd.print("Encryption Done!");
Serial.println("Encrypted Message: " + encryptedMessage);
if (WiFi.status() == WL_CONNECTED) {
sendEncryptedData(encryptedMessage);
} else {
Serial.println("Failed to connect to WiFi");
}
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
}
void sendEncryptedData(String encryptedData) {
HTTPClient http;
if (http.begin(client, url)) {
http.addHeader("Content-Type", "text/plain");
int httpCode = http.POST(encryptedData);
if (httpCode > 0) {
Serial.println("HTTP Response code: " + String(httpCode));
} else {
Serial.println("Error on HTTP request");
}
http.end();
} else {
Serial.println("Failed to connect to server");
}
}