|
本帖最后由 zipcord 于 2022-11-5 18:15 编辑
这周又是因为疫情在家隔离, 于是把之前一直想改造的日行灯改一下, 刚好最近又看到arduino 支持CH552G系列, 这么便宜,那就来啊,互相伤害啊!立创开源上直接免费打板,这里感谢嘉立创免费的板子,感谢作者小安,淘宝了几个CH552G ,照着样子焊接,渣渣焊工,见谅!
开始还想着这价格配置还不错,后来一查,才16k flash,1k ram,能干的大事不多(其实自己也写不了大程序,哈哈),但是anyway ,谁让这么便宜呢,简单点的什么pwm,spi,eeprom都支持,还支持usb。
直接连接usb到电脑,找了一个blink示例,下载 , 搞定, 又试了几个示例,这里有个问题,好多人写刷第二次程序的时候要用10k短接p3.6和vcc,但是后来实践是不需要的,直到我试了模拟USB键盘,arduino IDE死活刷不了了,因为找不到com8了,终于让我用到了上面的短接按钮。而且只能用WCHtools,才能刷回去。
接着看到ws2812,哈哈,太熟悉了。
接线图
成本,板子免费,552g : 1.5 ws2812:3.0 触摸板 1.5 共6元差不多搞定。
直接上代码吧,这个垃圾代码编辑器 ,弄的很光火。
- #include <WS2812.h>
- #define NUM_LEDS 8
- #define COLOR_PER_LEDS 3
- #define NUM_BYTES (NUM_LEDS*COLOR_PER_LEDS)
- int pushButton = 11;
- #if NUM_BYTES > 255
- #error "NUM_BYTES can not be larger than 255."
- #endif
- __xdata uint8_t ledData[NUM_BYTES];
- uint8_t sw1=0;
- // eep写地址
- uint8_t writePtr = 0;
- void setup() {
- pinMode(34, OUTPUT); //Possible to use other pins.
- pinMode(pushButton, INPUT_PULLUP);
- // 读
- sw1 = eeprom_read_byte(writePtr);
- }
- void loop() {
- int buttonState = digitalRead(pushButton);
- if (buttonState) {
- sw1++;
- // 写
- eeprom_write_byte(writePtr, sw1);
- delay(50);
- }
复制代码
功能就是开机读取存储的灯颜色的开关量,按一次按钮改变灯颜色,然后保存灯颜色开关量
最后上个效果图吧。 开孔什么的都是渣,透明部分是热熔胶的,不知道夏天会融化,等找到合适的东西再补吧。
已根据建议修改switch, 查了一下,好像switch 效率超过3行就比较高。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|