分享10个优美的程序员把玩儿的实用科技设计酷站(2)

今天豪哥哥为优美的程序员们带来了科技设计酷站第2期!哈哈哈~~~都是非常实用的推荐呦!快来看看吧~~~O(∩_∩)O~

 

MOODILY

Moodly 是一款能够搜集各种灵感素材和设计图片的在线情绪板协同工具。Moodly 让每个用户都为整个情绪板素材库作出贡献,这样它能够足够强大,并且会越来越好用。另外,每个用户都能够评论,并且塑造它的设计和进化方向。

 

TEACHABLE MACHINE

Teachable Machine 是一个Google 的基于人工智能的实验性项目,你可以通过你的摄像头来教你的计算机来做一些事情。无需代码知识,你会看到机器是如何学习,如何在浏览器中运行的。看起来很好玩。

 

BOTTENDER

Bottender 是一款开源的JavaScript 框架,用来构建跨平台智能机器人的。它的优点在于可以横跨 Messenger、Slack、Telegram ,创造一致的Bot 体验。

 

FRAPPE CHARTS

Frappe Charts 是一个灵感来源于 GitHub 的网络图表工具,它可以独立运行,无需依赖库。你可以通过上传数据来创建各种数据图表,它能够确保各种图表足够友好,易于编辑。

 

WHATRUNS

WhatRuns 是一个浏览器插件,它会帮助设计师和开发者看到特定网站开发和使用中的工具有哪些,它有Chrome 和 Firefox 两个版本。

 

FONTBASE

对于桌面端的字体的管理和自定义使用,你会不会因为不好使而纠结?现在不用担心这个问题了,全新的 FontBasetool 可以帮你一键调用Google Fonts 中的任何字体,便于你使用。它横跨 Windows、Mac 和 Linux 三大平台,方便管理,清晰预览,超级好用。

 

CRELLO ANIMATED DESIGNS

这款工具可以帮你抓取一些动画模板,让你可以更好地发送各种社交媒体信息。它所抓取的动画和设计素质都很高,你所需要做的就是将它和你所发送的内容结合起来。

 

APP COST CALCULATOR

构建一个APP到底要花多少钱?这个简单的工具能够根据你的业务需求,找出一系列问题的答案。最后,你将得到一份自定义的PDF报告,包括具体的预算和缘由。

 

POLYGON GENERATOR

漂亮的SVG多边形总是非常实用的,这个SVG 多边形生成器能够生成自定义的多边形,并且生成相应的轻量级的代码片段。

 

PAINTCUBE

Paintcube 是一款在线绘制三维图形的软件。它不仅可以绘制三维图形,而且可以调用纹理,可以针对图形进行管理,并且在完成后导出所有的元素。这款基于Web 的工具几乎可以在任何设备上运行。

 


 

好啦,今天的分享就是这些啦,这里是igeekbar,希望可以给各位geek小伙伴们带来帮助呦~~~

听说只有优美的程序猿才会尝试把玩儿这些网站呐啊哈哈哈哈~~~~看到此文的你惊不惊喜^_^ 

如果你有什么好玩儿的酷站,也欢迎留言分享给我呦~~~

STM32按键设计通常使用外部中断来实现。具体步骤如下: 1. 初始化GPIO口为输入模式,使能外部中断。 2. 定义中断服务函数,并在函数中判断是哪个按键被按下,然后执行相应的操作。 3. 在主函数中启用全局中断。 4. 循环检测按键状态,判断按键是否按下,可以使用软件消抖。 以下是一个简单的例子,通过2个按键实现8种以上的功能: ```c #include "stm32f10x.h" #define KEY1_GPIO_PORT GPIOA #define KEY1_GPIO_PIN GPIO_Pin_0 #define KEY2_GPIO_PORT GPIOA #define KEY2_GPIO_PIN GPIO_Pin_1 void EXTI0_IRQHandler(void) // 中断服务函数 { if (EXTI_GetITStatus(EXTI_Line0) == SET) // 判断是哪个中断引脚产生的中断 { // KEY1按下时执行的操作 // ... EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志位 } } void EXTI1_IRQHandler(void) // 中断服务函数 { if (EXTI_GetITStatus(EXTI_Line1) == SET) // 判断是哪个中断引脚产生的中断 { // KEY2按下时执行的操作 // ... EXTI_ClearITPendingBit(EXTI_Line1); // 清除中断标志位 } } void init_key(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); // 使能GPIOA时钟和复用功能时钟 GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN; // 配置KEY1的GPIO口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = KEY2_GPIO_PIN; // 配置KEY2的GPIO口 GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // 配置中断线 EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1); // 配置中断线 EXTI_InitStructure.EXTI_Line = EXTI_Line1; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; // 上升沿触发 EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // 配置中断优先级和使能中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; NVIC_Init(&NVIC_InitStructure); } int main(void) { init_key(); __enable_irq(); // 启用全局中断 while (1) { if (GPIO_ReadInputDataBit(KEY1_GPIO_PORT, KEY1_GPIO_PIN) == RESET) // 检测KEY1状态 { // KEY1按下时执行的操作 // ... } else if (GPIO_ReadInputDataBit(KEY2_GPIO_PORT, KEY2_GPIO_PIN) == RESET) // 检测KEY2状态 { // KEY2按下时执行的操作 // ... } } } ``` 需要注意的是,这里只是一个简单的例子,实际应用中还需要考虑按键消抖等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值