红外遥控成功

This commit is contained in:
james 2024-08-06 18:00:29 +08:00
parent 823ddd46ec
commit d5b82bdaa9
6 changed files with 82 additions and 32 deletions

View File

@ -35,9 +35,10 @@ int main(void)
main_init(); main_init();
rt_pin_mode(PIN_LED_B, PIN_MODE_OUTPUT); rt_pin_mode(PIN_LED_B, PIN_MODE_OUTPUT);
rt_pin_write(PIN_LED_B, PIN_LOW); rt_pin_write(PIN_LED_B, PIN_LOW);
system("snake game"); system("snake");
rt_wlan_config_autoreconnect(RT_TRUE); rt_wlan_config_autoreconnect(RT_TRUE);
rt_wlan_connect("Dong", "abcd07691234"); rt_wlan_connect("Dong", "abcd07691234");
system("myproject");
mytime(); mytime();
/* init Wi-Fi auto connect feature */ /* init Wi-Fi auto connect feature */

View File

@ -20,6 +20,9 @@
``` c ``` c
Snake_Thread = rt_thread_create("Snake_Thread", snake_entry, RT_NULL, THREAD_STACK_SIZE, 10, THREAD_TIMESLICE); Snake_Thread = rt_thread_create("Snake_Thread", snake_entry, RT_NULL, THREAD_STACK_SIZE, 10, THREAD_TIMESLICE);
``` ```
不注释又闪了,
加到myproject没唤醒时没事唤醒后闪重启也闪
![alt text](image-2.png)
### GET_PIN(F, 11) 的头文件 ### GET_PIN(F, 11) 的头文件
``` c ``` c
@ -43,3 +46,12 @@ Snake_Thread = rt_thread_create("Snake_Thread", snake_entry, RT_NULL, THREAD_STA
| 0xA8 | 静音 | | 0xA8 | 静音 |
| 0x88 | 菜单 | | 0x88 | 菜单 |
| 0x28 | 退出 | | 0x28 | 退出 |
### 等待消息
写成这样,导致一直等待,所以一直没反应
``` c
if(page_chosen == 1)
{
rt_mdelay(1000);
}
```

BIN
my_error/image-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -12,7 +12,35 @@
/* 配置 LED 灯引脚 */ /* 配置 LED 灯引脚 */
#define PIN_LED_B GET_PIN(F, 11) // PF11 : LED_B --> LED #define PIN_LED_B GET_PIN(F, 11) // PF11 : LED_B --> LED
#define PIN_LED_R GET_PIN(F, 12) // PF12 : LED_R --> LED #define PIN_LED_R GET_PIN(F, 12) // PF12 : LED_R --> LED
#define PAGE_MAX 2
extern rt_atomic_t now_direction;
extern rt_atomic_t snake_pressed;
extern rt_atomic_t page_chosen ;
extern int snake_max;
extern char tmp[10];
void snake_compare(rt_uint8_t key)
{
rt_sprintf(tmp, "%02X", key);
rt_atomic_store(&snake_pressed, snake_max + 1);
if (rt_strcmp(tmp, "30") == 0)
if (rt_atomic_load(&now_direction) != 2)
rt_atomic_store(&now_direction, 0);
if (rt_strcmp(tmp, "E8") == 0)
if (rt_atomic_load(&now_direction) != 3)
rt_atomic_store(&now_direction, 1);
if (rt_strcmp(tmp, "B0") == 0)
if (rt_atomic_load(&now_direction) != 0)
rt_atomic_store(&now_direction, 2);
if (rt_strcmp(tmp, "68") == 0)
if (rt_atomic_load(&now_direction) != 1)
rt_atomic_store(&now_direction, 3);
if (rt_strcmp(tmp, "88") == 0)
page_chosen = (page_chosen % PAGE_MAX) + 1;
}
void myir_entry(void *parameter) void myir_entry(void *parameter)
{ {
@ -31,7 +59,7 @@ void myir_entry(void *parameter)
rt_pin_write(PIN_LED_R, PIN_HIGH); rt_pin_write(PIN_LED_R, PIN_HIGH);
rt_pin_write(PIN_LED_B, PIN_HIGH); rt_pin_write(PIN_LED_B, PIN_HIGH);
while (count > 0) while (1)
{ {
if (infrared_read("nec", &infrared_data) == RT_EOK) if (infrared_read("nec", &infrared_data) == RT_EOK)
{ {
@ -39,17 +67,15 @@ void myir_entry(void *parameter)
rt_pin_write(PIN_LED_R, PIN_LOW); rt_pin_write(PIN_LED_R, PIN_LOW);
LOG_I("RECEIVE OK: addr:0x%02X key:0x%02X repeat:%d", infrared_data.data.nec.addr, LOG_I("RECEIVE OK: addr:0x%02X key:0x%02X repeat:%d", infrared_data.data.nec.addr,
infrared_data.data.nec.key, infrared_data.data.nec.repeat); infrared_data.data.nec.key, infrared_data.data.nec.repeat);
snake_compare(infrared_data.data.nec.key);
} }
rt_thread_mdelay(10); rt_thread_mdelay(50);
/* 熄灭蓝灯 */ /* 熄灭蓝灯 */
rt_pin_write(PIN_LED_B, PIN_HIGH); rt_pin_write(PIN_LED_B, PIN_HIGH);
/* 熄灭红灯 */ /* 熄灭红灯 */
rt_pin_write(PIN_LED_R, PIN_HIGH); rt_pin_write(PIN_LED_R, PIN_HIGH);
count++;
// if( count % 100 == 0) // if( count % 100 == 0)
// rt_kprintf("count = %d\n", count); // rt_kprintf("count = %d\n", count);
} }
} }

View File

@ -10,7 +10,8 @@
#include <dfs_posix.h> #include <dfs_posix.h>
#include <drv_lcd.h> #include <drv_lcd.h>
#include "mysnake.h" #include "mysnake.h"
#include "infrared.h"
#include <ulog.h>
char DEMO_PRODUCT_KEY[IOTX_PRODUCT_KEY_LEN + 1] = {0}; char DEMO_PRODUCT_KEY[IOTX_PRODUCT_KEY_LEN + 1] = {0};
char DEMO_DEVICE_NAME[IOTX_DEVICE_NAME_LEN + 1] = {0}; char DEMO_DEVICE_NAME[IOTX_DEVICE_NAME_LEN + 1] = {0};
@ -49,14 +50,14 @@ rt_uint16_t ps_data;
float brightness; float brightness;
int lcd_y; int lcd_y;
int int_tmp; int int_tmp;
struct infrared_decoder_data infrared_data;
// extern void myir_entry(void *parameter); extern void myir_entry(void *parameter);
void ath_init(void); void ath_init(void);
void mqt_init(void); void mqt_init(void);
int ap3_init(void); int ap3_init(void);
// void inf_init(void); void inf_init(void);
#define EXAMPLE_TRACE(fmt, ...) \ #define EXAMPLE_TRACE(fmt, ...) \
do \ do \
@ -186,10 +187,13 @@ void tmp_payload(void)
Temp = aht10_read_temperature(Dev); Temp = aht10_read_temperature(Dev);
brightness = ap3216c_read_ambient_light(dev); brightness = ap3216c_read_ambient_light(dev);
ps_data = ap3216c_read_ps_data(dev); ps_data = ap3216c_read_ps_data(dev);
if (ps_data > 14) // if (infrared_read("nec", &infrared_data) == RT_EOK)
{ // {
page_chosen = (page_chosen % PAGE_MAX) + 1; // /* 读取到红外数据,红灯亮起 */
} // // rt_pin_write(PIN_LED_R, PIN_LOW);
// LOG_I("RECEIVE OK: addr:0x%02X key:0x%02X repeat:%d", infrared_data.data.nec.addr,
// infrared_data.data.nec.key, infrared_data.data.nec.repeat);
// }
// icm20608_get_accel(icm20608_device_t dev, rt_int16_t *accel_x, rt_int16_t *accel_y, rt_int16_t *accel_z) // icm20608_get_accel(icm20608_device_t dev, rt_int16_t *accel_x, rt_int16_t *accel_y, rt_int16_t *accel_z)
// memset(tmp, 0, sizeof(tmp)); // memset(tmp, 0, sizeof(tmp));
// sprintf(tmp, "Temp: %.1f;Humi: %.1f;Count: %d\n", Temp, Humi,++cnt); // sprintf(tmp, "Temp: %.1f;Humi: %.1f;Count: %d\n", Temp, Humi,++cnt);
@ -199,6 +203,10 @@ void tmp_payload(void)
{ {
show_lcd(); show_lcd();
} }
if (ps_data > 14)
{
page_chosen = (page_chosen % PAGE_MAX) + 1;
}
sprintf(tmp, "{\"params\":{\"temperature\":%.2f,\"humidity\":%.2f,\"LightLux\":%.2f,\"Psdata\":%d,\"Snakelen\":%d}}", Temp, Humi, brightness, ps_data, snake_len); sprintf(tmp, "{\"params\":{\"temperature\":%.2f,\"humidity\":%.2f,\"LightLux\":%.2f,\"Psdata\":%d,\"Snakelen\":%d}}", Temp, Humi, brightness, ps_data, snake_len);
return; return;
} }
@ -305,7 +313,7 @@ static void mqtt_example_main(void *parameter)
rt_thread_t MQTT_Thread = RT_NULL; rt_thread_t MQTT_Thread = RT_NULL;
rt_thread_t Snake_Thread = RT_NULL; rt_thread_t Snake_Thread = RT_NULL;
// rt_thread_t Infrared_Thread = RT_NULL; rt_thread_t Infrared_Thread = RT_NULL;
void ath_init(void) void ath_init(void)
{ {
@ -361,28 +369,31 @@ MSH_CMD_EXPORT_ALIAS(snk_init, snake, "snake game");
// return 0; // return 0;
// } // }
// void inf_init(void) void inf_init(void)
// { {
// Infrared_Thread = rt_thread_create("Infrared_Thread", myir_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); Infrared_Thread = rt_thread_create("Infrared_Thread", myir_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE);
// if (Infrared_Thread != RT_NULL) if (Infrared_Thread != RT_NULL)
// { {
// rt_thread_startup(Infrared_Thread); rt_thread_startup(Infrared_Thread);
// } }
// else else
// { {
// rt_kprintf("Infrared Thread Create Failed!\n"); rt_kprintf("Infrared Thread Create Failed!\n");
// } }
// } }
// MSH_CMD_EXPORT_ALIAS(inf_init, inf, "Infrared"); MSH_CMD_EXPORT_ALIAS(inf_init, inf, "Infrared");
void my_project(void) void my_project(void)
{ {
// /* 选择 NEC 解码器 */
// ir_select_decoder("nec");
ath_init(); ath_init();
mqt_init(); mqt_init();
ap3_init(); ap3_init();
// inf_init(); inf_init();
} }
MSH_CMD_EXPORT_ALIAS(my_project, myproject, run my project); MSH_CMD_EXPORT_ALIAS(my_project, myproject, run my project);

View File

@ -110,7 +110,7 @@ void snake_entry(void *parameter)
snake_head = (snake_head + 1) % (SNAKE_MAX); snake_head = (snake_head + 1) % (SNAKE_MAX);
snake_list[snake_head][0] = new_head_x; snake_list[snake_head][0] = new_head_x;
snake_list[snake_head][1] = new_head_y; snake_list[snake_head][1] = new_head_y;
}
rt_thread_mdelay(900); rt_thread_mdelay(900);
} }
}
} }