//M5Stack_Core2 Sensors
#include <M5Core2.h>
#include <Wire.h>
#include <AXP192.h>
#include <DHT.h>
int PIR = 19;
int Trig = 13;
int Echo = 14;
int IRPin = 25;
int IRstate = HIGH;
int LaserPin = 27;
double speedSound = 331.5 + 0.61 * 20;
double distance = 0;
boolean goon=true;
AXP192 power;
DHT dht(26, DHT11); //DHT11
void setup()
{
M5.begin();
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("Welcom to Core2 sensors");
M5.Lcd.setCursor(0, 20);
M5.Lcd.println("Coded by Kim Grossa");
dht.begin();
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
pinMode(PIR,INPUT_PULLUP);
pinMode(IRPin, INPUT);
pinMode(LaserPin, OUTPUT);
}
void loop()
{
sensorDHT11();
sensorPIR();
sensorHCSR04();
sensorIR08H();
sensorLaser();
M5.Lcd.setCursor(0, 180);
M5.Lcd.setTextColor(GREEN,BLACK);
M5.Lcd.print("Battery Level ");
M5.Lcd.printf("%3.4f V",power.GetBatVoltage());
M5.update();
}
void sensorDHT11()
{
delay(1000);
float h = dht.readHumidity();
float t = dht.readTemperature();
M5.Lcd.setTextColor(WHITE,BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(0, 40);
M5.Lcd.println("Humid");
M5.Lcd.setCursor(150, 40);
M5.Lcd.printf("%.1f\n", h);
M5.Lcd.setCursor(0, 60);
M5.Lcd.println("Temp");
M5.Lcd.setCursor(150, 60);
M5.Lcd.printf("%.1f\n", t);
}
void sensorPIR()
{
if(digitalRead(PIR)==HIGH)
{
M5.Lcd.setTextColor(RED,BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(0, 80);
M5.Lcd.println("Motion detected ");
}
else
{
M5.Lcd.setTextColor(GREEN,BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(0, 80);
M5.Lcd.setTextSize(2);
M5.Lcd.println("Motion not detected ");
}
}
void sensorHCSR04()
{
M5.Lcd.setTextColor(WHITE,BLACK);
M5.Lcd.setTextSize(2);
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH );
delayMicroseconds( 10 );
digitalWrite(Trig, LOW );
double t = pulseIn(Echo, HIGH);
if (t > 0)
{
t = t / 2;
distance = t * speedSound * 100 / 1000000;
M5.Lcd.setCursor(0, 100);
M5.Lcd.print(distance);
M5.Lcd.setCursor(150, 100);
M5.Lcd.print("cm");
delay(500);
}
}
void sensorIR08H()
{
IRstate = digitalRead(IRPin);
if (IRstate == LOW)
{
M5.Lcd.setTextColor(RED,BLACK);
M5.Lcd.setCursor(0, 120);
M5.Lcd.print("Deteced ");
}
else
{
M5.Lcd.setTextColor(GREEN,BLACK);
M5.Lcd.setCursor(0, 120);
M5.Lcd.print("Not Detected ");
}
delay(1000);
}
void sensorLaser()
{
digitalWrite (LaserPin, HIGH);
M5.Lcd.setTextColor(RED,BLACK);
M5.Lcd.setCursor(0, 140);
M5.Lcd.print("Laser is ON ");
delay (1000);
digitalWrite (LaserPin, LOW);
M5.Lcd.setTextColor(GREEN,BLACK);
M5.Lcd.setCursor(0, 140);
M5.Lcd.print("Laser is OFF");
delay (1000);
}
0 件のコメント:
コメントを投稿