艹,终于在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

相关内容

热门资讯

《法学基本概念导论》| 专研法... 导言 本书是对权利、义务、法律主体、法律规范、法律渊源、法律行为等法学基本概念(juristic f...
上海AI新动向:世界AI合作组... 在今日的天气状况下,上海迎来了阴到多云的天气,偶尔还有阵雨光顾,气温徘徊在27至31摄氏度之间,给市...
山鹰国际跌1.52%,成交额2... 来源:新浪证券-红岸工作室 7月25日,山鹰国际跌1.52%,成交额2.50亿元,换手率2.33%,...
马斯克擎天柱解决不了无「手」难... 新智元报道 编辑:英智 【新智元导读】马斯克说人形机器人是特斯拉的未来,可今年5000台的目标才刚...
开封警方回应网传“释永信相关警... 7月27日,开封市公安局官方微博回复网友评论时表示:“(网传释永信相关)通报是假的,请不要再传播,目...
创新业务模式 提升开放水平 近日,在东营综合保税区食用油分装生产车间,工人们正在进行进口豆油灌装作业。 近年来,东营综合保税区...
中国资本市场学会成立!吴清当选... 来源:证监会发布 2025年7月26日,中国资本市场学会成立大会暨第一届第一次会员代表大会在上...
本周外盘看点丨美联储最新决议来... 来源:第一财经 欧美二季度GDP表现如何,特朗普关税谈判“大限”到来。 上周国际市场风云变幻,美国...
生态环境部逯世泽:全国碳市场量... 21世纪经济报道记者雷椰 李德尚玉 北京报道 7月26日,由冶金工业规划研究院主办,中国节能协会冶金...
原创 帮... 刚刚,后台好多朋友问,帮主啊,国家统计局刚发了上半年的工业利润数据,下降了1.8%,这是不是经济不行...
“国补”来了!第三批690亿元... 国家发展改革委下达今年第三批690亿元超长期特别国债支持消费品以旧换新资金。 2025年以来,国家发...
海拍客IPO,创始人抵押价值上... 瑞财经 严明会 6月30日,Yangtuo Technology Inc.(以下简称“海拍客”)向港...
提前涨停!快递巨头出手:收购! 【导读】布局品质快递,申通快递以3.62亿元收购菜鸟旗下丹鸟物流 中国基金报记者 杨晨 7月25日晚...
第八届虹桥国际经济论坛发布主题... 第八届虹桥国际经济论坛(简称“虹桥论坛”)倒计时迎来一百天。记者获悉,第八届虹桥论坛的主题是“开放共...
21独家|吴清挂帅!资本市场超... 21世纪经济报道 记者 崔文静 上海报道 7月26日,一场关乎2亿股民的重磅会议召开,资本市场“国家...
原创 A... 最近的行情,简直像是被注入了一针强心剂,让不少老股民都忍不住揉眼睛——这是咱们熟悉的大盘吗?原本在3...
关于比特币,你可能不知道的(二... 本文来自微信公众号:,作者:经济小张,原文标题:《关于比特币,你可能不知道的(2):让比特币独一无二...
【WAIC2025】阶跃星辰发... 记者 钱玉娟 在2025世界人工智能大会(下称“WAIC 2025”)开幕前夜,7月25日,中国人工...
每周股票复盘:浙数文化(600... 截至2025年7月25日收盘,浙数文化(600633)报收于14.05元,较上周的14.01元上涨0...