//#include <LiquidCrystal.h> //Dołączenie bilbioteki
#include <LiquidCrystal_I2C.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include "WiFi.h"
#include <iostream>
#include <iomanip> // Potrzebne dla setprecision i fixed
#include <math.h>
#include <Adafruit_ILI9341.h>
#include "SPI.h"
#include "Adafruit_GFX.h"
#define TFT_DC D2
#define TFT_CS D1
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define PRZYCISK_LEFT D9
#define PRZYCISK_RIGHT D6
#define PRZYCISK_ENTER D7
#define PRZYCISK_MODE D3
int ostatniStan_LEFT = HIGH; //BO PULLUP
int ostatniStan_RIGHT = HIGH;
int ostatniStan_ENTER = HIGH;
int ostatniStan_MODE = HIGH;
int stan_MODE;
int stan_ENTER;
int stan_LEFT;
int stan_RIGHT;
//const char* ssid = "Wokwi-GUEST";
//const char* password = "";
const char* ssid = "ESP32-Access-Point";
const char* password = "123456789";
// Set web server port number to 80
WiFiServer server(80);
// Variable to store the HTTP request
String header;
int Tryb=1;
int Alarm=0;
int Edycja=0;
LiquidCrystal_I2C lcd2(0x27, 16, 2);
Adafruit_MPU6050 mpu;
void setup() {
lcd2.init();
lcd2.backlight();
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print("Program");
lcd2.setCursor(0, 1);
lcd2.print("V 12.0");
tft.begin();
tft.setRotation(1);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.print("Czesc onnecting to WiFi");
pinMode(PRZYCISK_LEFT, INPUT_PULLUP);
pinMode(PRZYCISK_RIGHT, INPUT_PULLUP);
pinMode(PRZYCISK_ENTER, INPUT_PULLUP);
pinMode(PRZYCISK_MODE, INPUT_PULLUP);
pinMode(A0, INPUT);
Serial.begin(115200);
while (!Serial) {
delay(10); // wait for serial monitor to open
}
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
lcd2.setCursor(0, 0);
lcd2.print("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(1000);
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print("X:" );
lcd2.setCursor(8, 0);
lcd2.print("Y:" );
lcd2.setCursor(0, 1);
lcd2.print("Z:" );
/*
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println(Tryb);
*/
// Connect to Wi-Fi network with SSID and password
Serial.print("Setting AP (Access Point)…");
// Remove the password parameter, if you want the AP (Access Point) to be open
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
server.begin();
delay(1000);
}
void loop() {
WiFiClient client = server.available(); // Listen for incoming clients
int value = analogRead(A0);
float Vbattf = value/819;
Serial.println(Vbattf);
delay(100);
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
//wykrycie przycisniecia przycisku Mode
stan_MODE = digitalRead(PRZYCISK_MODE);
if(ostatniStan_MODE == HIGH && stan_MODE == LOW) {
Serial.println("Hello world!");
Tryb=Tryb+1;
lcd2.clear();
Serial.println(Tryb);
if (Tryb>2){
Tryb=1;
}
}
ostatniStan_MODE = stan_MODE;
// Tryb wyświetlania danych z gyroskopu
if (Tryb==1){
/* Print out the values */
lcd2.setCursor(0, 0);
lcd2.print("X:" );
lcd2.setCursor(8, 0);
lcd2.print("Y:" );
lcd2.setCursor(0, 1);
lcd2.print("Z:" );
lcd2.setCursor(2, 0); //Ustawienie kursora
lcd2.print(g.gyro.x); //Wyświetlenie tekstu
lcd2.setCursor(10, 0); //Ustawienie kursora
lcd2.print(g.gyro.y); //Wyświetlenie tekstu
lcd2.setCursor(2, 1); //Ustawienie kursora
lcd2.print(g.gyro.z); //Wyświetlenie tekstu
//lcd2.setCursor(15, 0);
//lcd2.print(Tryb);
}
// Tryb aktywowania alarmu
if (Tryb==2){
//lcd2.setCursor(15, 0);
//lcd2.print(Tryb);
lcd2.setCursor(0, 0); //Ustawienie kursora
//float a=g.gyro.x;
//float b=0;
// Dokładnie 1 cyfry po przecinku
//std::cout << b << std::fixed << std::setprecision(1) << a << std::endl; // Wynik: 123.457
//a = round(a * 10) / 10;
lcd2.print(g.gyro.x); //Wyświetlenie tekstu
//lcd2.print(a);
lcd2.setCursor(4, 0);
lcd2.print(" ");
lcd2.setCursor(5, 0); //Ustawienie kursora
lcd2.print(g.gyro.y); //Wyświetlenie tekstu
lcd2.setCursor(9, 0);
lcd2.print(" ");
lcd2.setCursor(10, 0); //Ustawienie kursora
lcd2.print(g.gyro.z); //Wyświetlenie tekstu
lcd2.setCursor(14, 0);
lcd2.print(" ");
//wykrycie przycisniecia przycisku Enter
stan_ENTER = digitalRead(PRZYCISK_ENTER);
if(ostatniStan_ENTER == HIGH && stan_ENTER == LOW) {
Serial.println("Wcisnieto przycisk Enter, Edycja!");
if (Edycja==0){
Edycja=1;
}
else {
Edycja=0;
}
}
ostatniStan_ENTER = stan_ENTER;
if (Edycja==1) {
//wykrycie przycisniecia przycisku Left
stan_LEFT = digitalRead(PRZYCISK_LEFT);
if(ostatniStan_LEFT == HIGH && stan_LEFT == LOW) {
Serial.println("Lewy prztcisk");
}
ostatniStan_MODE = stan_LEFT;
//wykrycie przycisniecia przycisku Right
stan_RIGHT = digitalRead(PRZYCISK_RIGHT);
if(ostatniStan_RIGHT == HIGH && stan_RIGHT == LOW) {
Serial.println("Prawy prztcisk");
}
ostatniStan_MODE = stan_RIGHT;
}
lcd2.setCursor(8, 1);
if (Edycja==0){
lcd2.print("OFF");
}
else {
lcd2.print("ON ");
}
}
/* Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");
Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");
Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");*/
//delay(500);
}Loading
xiao-esp32-c6
xiao-esp32-c6
<
>
Enter
Mode