2022年9月18日日曜日

LearningKit 2022 for M5Stack Core2 Sensors








 

//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 件のコメント:

コメントを投稿