艹,终于在8226上把灯点亮了
创始人
2025-05-30 12:39:08
0

接上次点文章

ESP8266还可以这样玩

这次,我终于学会了在ESP8266上面点亮LED灯了

现在一个单片机的价格是几块,加上一个晶振,再来一个快递费,十几块钱还是需要的。

所以能用这个ESP8266来当单片机玩,还是比较不错的

可以在ubuntu、windows、Macos上开发

来了,先点亮一个LED灯

LED灯的GPIO口是 16

直接看代码,我们现在看到的代码实际上已经是跑了freertos的,这也是我为什么不用ardino玩,脱离了C语言就好像已经不是在做嵌入式了,要想了解底层还是用C语言比较有亲切感。

看代码

/* Hello World ExampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied.
*/
#include 
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
#define GPIO_LED_NUM 16void app_main()
{printf("Hello world!\n");/* 1.定义一个gpio配置结构体 */gpio_config_t gpio_config_structure;/* 2.初始化gpio配置结构体*/gpio_config_structure.pin_bit_mask = (1ULL << GPIO_LED_NUM);/* 选择gpio2 */gpio_config_structure.mode = GPIO_MODE_OUTPUT; /* 输出模式 */gpio_config_structure.pull_up_en = 0; /* 不上拉 */gpio_config_structure.pull_down_en = 0; /* 不下拉 */gpio_config_structure.intr_type = GPIO_INTR_DISABLE; /* 禁止中断 *//* 3.根据设定参数初始化并使能 */gpio_config(&gpio_config_structure);/* 4.输出低电平,点亮LED*/gpio_set_level(GPIO_LED_NUM, 0);/* Print chip information */esp_chip_info_t chip_info;esp_chip_info(&chip_info);printf("This is ESP8266 chip with %d CPU cores, WiFi, ",chip_info.cores);printf("silicon revision %d, ", chip_info.revision);printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");for (int i = 100000; i >= 0; i--) {printf("Restarting in %d seconds...\n", i);gpio_set_level(GPIO_LED_NUM, 0);vTaskDelay(500 / portTICK_PERIOD_MS);gpio_set_level(GPIO_LED_NUM, 1);vTaskDelay(500 / portTICK_PERIOD_MS);}printf("Restarting now.\n");fflush(stdout);esp_restart();
}

70858ba5c8a4e82b124930b5c6fd6940.gif

LED是一个很入门的东西,但是LED也是一个很有意思的东西,如果玩得好可以变得很有趣。

本来想用这个GPIO口来做一个PWM控制的呼吸灯功能的,可惜查看了下手册,发现这个GPIO16口没有PWM功能。

86a0df1a1a1b0252784d71a1ad515cfc.png

再来搞一个程序

扫描附近的wifi,如果搞好了继续往深的玩,可以做一个这样的设备,专门用来扫描附近的热点,然后用随机密码连接,连接上了打印密码,是不是也很酷。

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "esp_wifi.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_event_loop.h"
#include "esp_log.h"
#include "nvs_flash.h"static EventGroupHandle_t wifi_event_group;//定义一个事件的句柄
const int SCAN_DONE_BIT = BIT0;//定义事件,占用事件变量的第0位,最多可以定义32个事件。
static wifi_scan_config_t scanConf = { //定义scanConf结构体,供函数esp_wifi_scan_start调用.ssid = NULL,.bssid = NULL,.channel = 0,.show_hidden = 1
};static const char *TAG = "example";esp_err_t event_handler(void *ctx, system_event_t *event)
{if (event->event_id == SYSTEM_EVENT_SCAN_DONE) {xEventGroupSetBits(wifi_event_group, SCAN_DONE_BIT); //设置事件位}return ESP_OK;
}static void initialise_wifi(void)        //define a static function ,it's scope is this file
{wifi_event_group = xEventGroupCreate(); //创建一个事件标志组ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));//创建事件的任务wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();//设置默认的wifi栈参数ESP_ERROR_CHECK(esp_wifi_init(&cfg)); //初始化WiFi Alloc资源为WiFi驱动,如WiFi控制结构,RX / TX缓冲区,WiFi NVS结构等,此WiFi也启动WiFi任务。ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));// Set the WiFi API configuration storage typeESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));//Set the WiFi operating modeESP_ERROR_CHECK(esp_wifi_start());
}static void scan_task(void *pvParameters)
{while(1) {xEventGroupWaitBits(wifi_event_group, SCAN_DONE_BIT, 0, 1, portMAX_DELAY); //等待事件被置位,即等待扫描完成ESP_LOGI(TAG, "WIFI scan doen");xEventGroupClearBits(wifi_event_group, SCAN_DONE_BIT);//清除事件标志位uint16_t apCount = 0;esp_wifi_scan_get_ap_num(&apCount);//Get number of APs found in last scanprintf("Number of access points found: %d\n", apCount);if (apCount == 0) {ESP_LOGI(TAG, "Nothing AP found");return;}//如果apCount没有受到数据,则说明没有路由器wifi_ap_record_t *list = (wifi_ap_record_t *)malloc(sizeof(wifi_ap_record_t) * apCount);//定义一个wifi_ap_record_t的结构体的链表空间ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&apCount, list));//获取上次扫描中找到的AP列表。int i;printf("======================================================================\n");printf(" SSID | RSSI | AUTH \n");printf("======================================================================\n");for (i=0; i

运行的情况是

c8496ba90c09731bdc2cb24811963d08.png

8226可以玩的东西还有很多,比如内存、Flash、I2C、SPI

因为我对LED灯还是不死心,就买了一些LED灯回来,等到货了继续给大家看看呼吸灯。

好了,我的商店也上了20个这样的ESP8266,喜欢的可以去看看吧。

现在只有20个的ESP8266

e2c794cf571622e2a56817e3f6250427.jpeg

11e64e9437f1cc20d34cb41a49703673.jpeg

da1bb589da8e6b5e467a0d936a36f3e8.png

相关内容

热门资讯

阿联酋最大银行及另两家中东银行... 观点网讯:5月8日,路透社报道指,阿联酋最大银行第一阿布扎比银行(First Abu Dhabi B...
深圳239亿地王易主,再造万象... 2017年,世茂集团豪掷239.43亿元拿下世茂深港国际中心地块,曾规划建筑高度达700米的深圳第一...
蔚来在安庆成立新能源科技公司 ... 天眼查App显示,近日,安庆蔚来新能源科技有限公司成立,法定代表人为姚蒀,注册资本500万人民币,经...
美国牛肉商期盼峰会重启对华出口 据路透社5月8日报道,美国牛肉生产商正期待特朗普与中国于5月14日至15日的峰会推动对华出口许可恢复...
创业板首家未盈利企业,市值突破... 5月8日,大普微总市值正式突破2000亿元大关。截至午间收盘,大普微涨14.07%,报493.1元/...
招商证券:董事长霍达因工作变动... 招商证券公告,公司董事长霍达因工作变动申请辞去董事长、执行董事等全部职务,辞任自辞呈送达董事会之日生...
原创 中... 【阅读须知】本文所引用的所有信息和数据,均为作者通过查阅官方资料与网络公开数据整理、分析而成,旨在为...
原创 从... 2026年5月5日,中国商务部发布了一项具有划时代意义的专项阻断禁令,这份公告让一向倚仗长臂管辖的美...
布米普特拉北京投资基金管理有限... 美国圣路易斯联邦储备银行总裁穆萨莱姆周三发出明确信号,美联储货币政策面临的潜在风险正在发生关键转向。...
加工的秘密:超精加工设备如何做... 你知道吗? 一根头发丝的直径大约0.07毫米,也就是70微米。 超精加工设备,可切出表面,其尺寸为0...
招商证券董事长霍达因工作变动离... 北京商报讯(记者 刘宇阳 实习生 王思奕)5月8日,招商证券发布关于公司董事长离任暨推举董事代行董事...
华帝股份营收创近3年新低,37... 乐居财经李兰近日,华帝股份(002035.SZ)发布2025年年度报告。 2025年,华帝股份实现营...
大模型融资杀疯了!月之暗面狂揽... 图源:视觉中国 5月7日,据华峰资本官微消息,国内头部大模型公司月之暗面(Kimi)于近日完成新一轮...
扎根长宁二十余载,仲利国际融资... 作为总部扎根上海长宁的优质台资金融企业,仲利国际融资租赁有限公司深耕融资租赁行业二十余载,始终坚守金...
估值210亿!李彦宏又将收获一... 来源:直通IPO,文/王非 国产GPU上市潮仍然汹涌,继两家登陆A股、两家登陆H股后,这家公司正推进...
基金“盲盒”拆了 公募基金正在迎来一场让投资者“看得懂”的变革。 近日,华夏、易方达、南方、招商等12家头部及特色基金...
原创 2... 前言 十年间,中国企业在印尼镍产业链累计砸下超过140亿美元,电厂、公路、码头和全套生产线,硬生生...
原创 欧... 俄罗斯卫星通讯社5月6日报道,欧盟宣布禁止欧洲银行为含有来自不可靠供应商的关键部件的可再生能源项目提...
原创 余... 2026年5月2日,在中国理财市场扎根十三年的余额宝,终于触碰到了一个让所有人错愕的数字——7日年化...
银华基金增聘谭普景共同管理银华... 来源:新浪基金∞工作室 5月8日,银华基金管理股份有限公司发布公告称,为银华中证机器人交易型开放式指...