#include "stdio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "driver/i2c.h"
#include "i2c-lcd1602.h"
#define I2C_MASTER_SCL_IO 9
#define I2C_MASTER_SDA_IO 8
#define I2C_MASTER_NUM I2C_NUM_0
#define I2C_MASTER_FREQ_HZ 100000
#define LCD_ADDR 0x27
#define PIR_SENSOR_GPIO 0
#define RED_LED_GPIO 2
#define GREEN_LED_GPIO 3
#define BLUE_LED_GPIO 10
#define BUZZER_GPIO 1
i2c_lcd1602_info_t *lcd_info;
static void i2c_master_init() {
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.scl_io_num = I2C_MASTER_SCL_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
i2c_param_config(I2C_MASTER_NUM, &conf);
i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0);
}
static void gpio_setup() {
gpio_set_direction(PIR_SENSOR_GPIO, GPIO_MODE_INPUT);
gpio_set_direction(RED_LED_GPIO, GPIO_MODE_OUTPUT);
gpio_set_direction(GREEN_LED_GPIO, GPIO_MODE_OUTPUT);
gpio_set_direction(BLUE_LED_GPIO, GPIO_MODE_OUTPUT);
gpio_set_direction(BUZZER_GPIO, GPIO_MODE_OUTPUT);
}
void app_main() {
i2c_master_init();
gpio_setup();
lcd_info = i2c_lcd1602_malloc();
i2c_lcd1602_init(lcd_info, I2C_MASTER_NUM, LCD_ADDR, 16, 2, I2C_LCD1602_CHARACTER_5x8);
i2c_lcd1602_set_backlight(lcd_info, true);
i2c_lcd1602_clear(lcd_info);
i2c_lcd1602_write_string(lcd_info, "Hazir...");
while (true) {
int motion = gpio_get_level(PIR_SENSOR_GPIO);
if (motion) {
gpio_set_level(RED_LED_GPIO, 1);
gpio_set_level(GREEN_LED_GPIO, 0);
gpio_set_level(BLUE_LED_GPIO, 0);
gpio_set_level(BUZZER_GPIO, 1);
i2c_lcd1602_clear(lcd_info);
i2c_lcd1602_write_string(lcd_info, "Hareket Algilandi!");
} else {
gpio_set_level(RED_LED_GPIO, 0);
gpio_set_level(GREEN_LED_GPIO, 1);
gpio_set_level(BLUE_LED_GPIO, 1);
gpio_set_level(BUZZER_GPIO, 0);
i2c_lcd1602_clear(lcd_info);
i2c_lcd1602_write_string(lcd_info, "Bekleniyor...");
}
vTaskDelay(pdMS_TO_TICKS(500));
}
}
Loading
esp32-c3-devkitm-1
esp32-c3-devkitm-1