Xin chào mọi người. Tôi đang thực hiện mô hình stm32+ cảm biến e18d80nk làm mạch đếm người trong phòng học và bật tắt thiết bị tự động. Tôi đã soạn thảo bản code mạch đếm người thành công. Nhưng tôi đang gặp khó khăn trong việc soạn thảo đoạn code khi có người vào phòng thì tự động bật thiết bị như quạt hay đèn, khi người trong phòng ra hết thì tự động tắt hết các thiết bị.
Mong mọi người giúp đỡ. Cảm ơn rất nhiều.
Hi everybody. I am making a model stm32+ sensor e18d80nk as a circuit to count people in the classroom and turn on and off the device automatically. I have compiled the code of the successful person counting circuit. But I’m having a hard time editing the code when someone enters the room, it automatically turns on devices such as fans or lights, when everyone in the room goes out, automatically turns off all devices.
Hope everybody help please. Thanks very much.
Mycode:
#include <stm32f10x.h>
static uint8_t code7seg[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
static uint32_t count = 0;
// 12_Signal Front 13_Signal Back -> PORT B
void GPIO_Configuration(void);
void show_7seg(uint8_t, uint32_t);
void display_7seg(uint32_t);
void delay_ms(uint32_t);
void delay_sign(void);
/*==========================================*/
/*=================== MAIN ==================*/
int main(void)
{
GPIO_Configuration();
while(1)
{
/* Nguoi di vao User input */
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0 )
{
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
count++;
delay_sign();
/* nguoi dung o cong - chua vao - chua ra / User not input not output*/
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 0)
{
while(1)
{
// Nguoi di vao User Input
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 1)
{
break;
}
// Nguoi di ra User output
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 1)
{
count--;
break;
}
display_7seg(count);
}
}
delay_sign();
}
/* Nguoi di ra User Output */
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 0)
{
count--;
delay_sign();
/* nguoi dung o cong - chua vao - chua ra User not Input not output */
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)
{
while(1)
{
// Nguoi di vao User input
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 1)
{
break;
}
// Nguoi di ra User output
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 1)
{
count++;
break;
}
display_7seg(count);
}
}
delay_sign();
}
if(count == 0) GPIO_SetBits(GPIOC, GPIO_Pin_13);
display_7seg(count);
}
}
/*=================== END MAIN ==================*/
void GPIO_Configuration()
{
GPIO_InitTypeDef p;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC, ENABLE);
p.GPIO_Mode = GPIO_Mode_Out_PP;
p.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
p.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &p);
p.GPIO_Mode = GPIO_Mode_IPU;
p.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;
p.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &p);
p.GPIO_Mode = GPIO_Mode_Out_PP;
p.GPIO_Pin = GPIO_Pin_13;
p.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &p);
}
/*==========================================*/