ハンドルはesp 8266を使ってスマートプラグを作ります-ソフトウェア編
前にすでにハードウェア编の内容を书いて、ここのソフトウェア编はあまり内容を书いていません.ここでは主にみんなにテストのコードを提供して、自分のハードウェアが正常に働いているかどうかをテストします.もし自分が他の机能が必要なら、楽鑫公式サイトのSDK开発関连のチュートリアルを参考にすることができます.まず完全なテストコードをつけて、コードは比较的に简単で、见るとすぐに分かりました.ここで说明して、コードは私のところはテストを経て、正常にコンパイルして焼き取ることができて、コンパイル环境はNONOSバージョンのSDKで、ツールは公式サイトの仮想机の环境で、もしプログラムのコンパイルが间违っていることを発见したら、自分のSDKバージョンとコンパイル环境をチェックしてください.
/******************************************************************************
* Copyright 2013-2014 Espressif Systems
*
*******************************************************************************/
#include "ets_sys.h"
#include "os_type.h"
#include "osapi.h"
#include "mem.h"
#include "user_interface.h"
LOCAL os_timer_t change_timer;
#define SWITCH_Pin_NUM 0
#define SWITCH_Pin_FUNC FUNC_GPIO0
#define SWITCH_Pin_MUX PERIPHS_IO_MUX_GPIO0_U
static bool status = true;
/******************************************************************************
* FunctionName : user_rf_cal_sector_set
* Description : SDK just reversed 4 sectors, used for rf init data and paramters.
* We add this function to force users to set rf cal sector, since
* we don't know which sector is free in user's application.
* sector map for last several sectors : ABCCC
* A : rf cal
* B : rf init data
* C : sdk parameters
* Parameters : none
* Returns : rf cal sector
*******************************************************************************/
uint32 ICACHE_FLASH_ATTR user_rf_cal_sector_set(void)
{
enum flash_size_map size_map = system_get_flash_size_map();
uint32 rf_cal_sec = 0;
switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
rf_cal_sec = 128 - 5;
break;
case FLASH_SIZE_8M_MAP_512_512:
rf_cal_sec = 256 - 5;
break;
case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_16M_MAP_1024_1024:
rf_cal_sec = 512 - 5;
break;
case FLASH_SIZE_32M_MAP_512_512:
case FLASH_SIZE_32M_MAP_1024_1024:
rf_cal_sec = 1024 - 5;
break;
default:
rf_cal_sec = 0;
break;
}
return rf_cal_sec;
}
/******************************************************************************
* FunctionName : user_rf_pre_init
* Description :
* Parameters :
*
* Returns : none
*******************************************************************************/
void ICACHE_FLASH_ATTR user_rf_pre_init(void){}
void ICACHE_FLASH_ATTR user_change(void){
if( status == true )
{
status = false;
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
os_printf("---key is false
");
}
else
{
status = true;
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);
os_printf("---key is true
");
}
}
void ICACHE_FLASH_ATTR user_test(void){
os_printf("---User Test ~~~~~
");
os_timer_disarm(&change_timer);
os_timer_setfn(&change_timer, (os_timer_func_t *)user_change, NULL);
os_timer_arm(&change_timer, 3000, 1);
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void user_init(void)
{
os_printf("SDK version:%s
", system_get_sdk_version());
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO2);
GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
user_test();
}
以上のコードは、タイマ方式で3秒ごとにリレーの状態を切り替え、リレーが正常に動作しているかどうかを確認します.