数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 5319|回复: 22

[STM] 求大神帮女大学生设计一个STM32F103程序,光敏电阻输入信号,控制LED亮度.

[复制链接]
发表于 2021-2-14 10:44:28 | 显示全部楼层 |阅读模式
本帖最后由 icsheet 于 2021-2-14 10:50 编辑

如题,开发板是"正点原子"的,屏是"中景园"的.是朋友的孩子大学做设计需要.本人对单片机没有经验,只有一些样本程序.如ADC输入和PWM输出.可是不知怎么把它们搞在一起,求大神帮帮忙.非常感谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2021-2-14 10:52:50 | 显示全部楼层
这个~~~~~居然~~~~
没有代码,说个思路:
单片机A/D采样光敏电阻,然后,这个采样值就可以对应一个PWM的占空比,通过不同占空比的PWM来控制LED的亮度。
显示部分没有太多的难度,取出来字模,OLED显示就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-14 10:55:58 | 显示全部楼层
ahyu99 发表于 2021-2-14 10:52
这个~~~~~居然~~~~
没有代码,说个思路:
单片机A/D采样光敏电阻,然后,这个采样值就可以对应一个PWM的占 ...

感谢回复,我也明白这个意思,就是ADC取样到寄存器,然后读取寄存器的数据来控制PWM亮度.
您可以帮忙设计一下吧?两个原程序都有.可否发给您帮忙修改一下.非常感谢
回复 支持 反对

使用道具 举报

发表于 2021-2-14 11:26:33 | 显示全部楼层
直接套用库,自己编写的代码没有几行。要是我,直接上cubeMX自动生成代码了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-14 11:39:35 | 显示全部楼层
真情永存 发表于 2021-2-14 11:26
直接套用库,自己编写的代码没有几行。要是我,直接上cubeMX自动生成代码了。 ...

感谢回复,请问需要调用哪些库?代码能帮忙写下吗?
回复 支持 反对

使用道具 举报

发表于 2021-2-14 11:44:11 | 显示全部楼层
这个能用arduino ide开发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-14 11:52:29 | 显示全部楼层
丶陪妳看流星 发表于 2021-2-14 11:44
这个能用arduino ide开发

感谢回复,现在是只能用这个来开发.
回复 支持 反对

使用道具 举报

发表于 2021-2-14 12:23:17 | 显示全部楼层
大学生的照片呢?
回复 支持 反对

使用道具 举报

发表于 2021-2-14 21:53:53 | 显示全部楼层
是上次找你修电饭锅的那个朋友家的孩子么?:lol:
回复 支持 反对

使用道具 举报

发表于 2021-2-14 23:00:04 | 显示全部楼层
icsheet 发表于 2021-2-14 11:52
感谢回复,现在是只能用这个来开发.

arduino的话下边这一小段应该大致可满足需求了吧?细节做些改动应该就可以蒙混过关的吧,我自己没试,只是个想法。
#include <DFRobot_SSD1306_I2C.h>

DFRobot_SSD1306_I2C oled12864(0x3c);

void setup() {
        oled12864.begin();
}

void loop() {
        analogWrite(3, (map(analogRead(A0), 0, 1023, 0, 255)));
这样一句读取A0引脚输入的光敏电阻值改变带来的电压变化,映射到3脚输出的PWM脉冲就可以了吧?当然光敏需要用运放做一个0-3.3的电路。输入到模拟输入引脚、把映射的值和引脚改到实际应用的范围。
oled12864.fillScreen(0);
oled12864.setCursorLine(1);
oled12864.printLine(analogRead(A0));
oled12864.setCursorLine(1);
oled12864.printLine(digitalRead(0));
oled12864.setCursor(42, 1);
oled12864.print("hello");
}




打赏

参与人数 1家元 +5 收起 理由
bg4rff + 5 歡迎探討,如果采样间隔延时10ms或者50ms,.

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2021-2-15 09:12:53 | 显示全部楼层
这个应该不难,一样一样完成,读出AD值(有例程改一改不是问题)计算出电压,调节亮度,最后用显示屏显示。
回复 支持 反对

使用道具 举报

发表于 2021-2-15 17:46:55 | 显示全部楼层
这标题取得的。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2021-2-15 18:13:25 | 显示全部楼层
用stm32duino,是不是很方便呢
回复 支持 反对

使用道具 举报

发表于 2021-2-15 22:21:43 | 显示全部楼层
首先给光明电阻做一个分压电路,根据选用光明电阻的型号现在分压电阻的阻值。然后用单片机的ADC对这个电压进行采样,转换成数字。实验好全暗和全亮(太阳晒,手机电筒照)的数值,然后就根据这个数值控制PWM输出的占空比就行了。
回复 支持 反对

使用道具 举报

发表于 2021-2-16 09:27:11 | 显示全部楼层
icsheet 发表于 2021-2-14 11:52
感谢回复,现在是只能用这个来开发.

能用Arduino开发,那还有什么问题吗?

1.采样(analogRead)
2.转换(map)
3.输出PWM(analogWrite)
回复 支持 反对

使用道具 举报

发表于 2021-2-17 13:20:50 | 显示全部楼层
QQ 九三九零三八零二3 ,专业代做单片机设计
回复 支持 反对

使用道具 举报

发表于 2021-2-18 11:06:07 | 显示全部楼层
话说女大学生就可以不付费免费让人帮做毕业设计?:lol:
回复 支持 反对

使用道具 举报

发表于 2021-2-20 10:59:38 | 显示全部楼层
arduino开发,用vscode+platformIO比arduino ide好用,或者用stduino ide(最近更新支持platformIO
插件了)
回复 支持 反对

使用道具 举报

发表于 2021-2-20 11:32:34 | 显示全部楼层
搞不懂既然用了STM32还有人非要用Arduino,用HAL库,估计自己都不用写20句呵呵。
回复 支持 反对

使用道具 举报

发表于 2021-2-20 11:47:14 来自手机浏览器 | 显示全部楼层
大学生不会有理系列…
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-21 12:21 , Processed in 0.249601 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表