首页 > 其他分享 >【树莓派C语言开发】实验01:双色LED

【树莓派C语言开发】实验01:双色LED

时间:2024-09-03 14:24:14浏览次数:4  
标签:makerobo 01 LED 调光 树莓 delay PWM



文章目录

  • 前言
  • 1.实验器材
  • 2.实验原理
  • 3.控制代码
  • 3.1显示器的PWM调光和DC调光
  • 3.2 编译代码
  • 3.2.1直接使用Geany编译器内部选项
  • 3.2.2 使用linux语言
  • 4.如何在使用面包板的同时使用散热小风扇
  • 结语


前言

今晚上没啥事(其实作业没写完),就开始折腾树莓派

我当初买的是树莓派4B(4GB)版本的套件,东西还是非常全的,店家还送了全套学习资料+指导视频,加上一本还算不错的书。

本篇博客,让我们一起来完成第一个实验:双色LED



1.实验器材

  • 装好系统的树莓派开发板+电源适配器
  • 面包板+T型转接板
  • 40p软排线
  • 双色LED
  • 若干跳线

2.实验原理

将引脚S(绿色)和中间管脚(红色)链接到面包板的接口上,对树莓派进行编程控制,使LED的颜色由红变绿。并利用PWM混合成其他颜色。

【树莓派C语言开发】实验01:双色LED_c语言

对应接线表格

树莓派

T型转接板

双色LED

GPI01

GPI018

S

GPI00

GPI017

R

GND

GND

GND

实际接线图如下(手机画质也太渣了)

【树莓派C语言开发】实验01:双色LED_树莓派_02

3.控制代码

当树莓派需要与外部元件相接时,要用到一些写好的库。如树莓派wiringPi库

树莓派wiringPi库:wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等

还有softPwm.h库:GitHub链接


本次双色LED实验需要用到的就是这两个库,以及C语言自带的库函数stdio.h

代码如下:

#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>

#define uchar unsigned char

#define makerobo_Led_PinRed    0 // 红色LED 管脚
#define makerobo_Led_PinGreen  1 // 绿色LED 管脚

// LED 初始化
void makerobo_led_Init(void)
{
	softPwmCreate(makerobo_Led_PinRed,  0, 100);
	softPwmCreate(makerobo_Led_PinGreen,0, 100);
}
// 设置LED 亮度PWM调节范围是0x00-0xff
void makerobo_led_ColorSet(uchar r_val, uchar g_val)
{
	softPwmWrite(makerobo_Led_PinRed,   r_val);
	softPwmWrite(makerobo_Led_PinGreen, g_val);
}

int main()
{
    //初始化连接失败时,将消息打印到屏幕
	if(wiringPiSetup() == -1){ 
		printf("setup wiringPi failed !");
		return 1; 
	}

	makerobo_led_Init(); // LED 初始化

	while(1){
		makerobo_led_ColorSet(0xff,0x00);   //红色	
		delay(500);                         //延时500ms
		makerobo_led_ColorSet(0x00,0xff);   //绿色
		delay(500);
		makerobo_led_ColorSet(0xff,0x45);	
		delay(500);
		makerobo_led_ColorSet(0xff,0xff);	
		delay(500);
		makerobo_led_ColorSet(0x7c,0xfc);	
		delay(500);
	}
	return 0;
}

在wiringPi库中,可以看到两个函数的使用说明

  • Create函数相当于初始化针脚
  • Write函数会更改该管脚的pwm值,以达到控制LED亮度的目的

【树莓派C语言开发】实验01:双色LED_linux_03

3.1显示器的PWM调光和DC调光

如果你有了解过显示器的选购知识,估计听说过显示器的PWM调光和DC调光。

使用DC调光的显示器,屏幕背光将常亮;使用PWM调光的显示器,屏幕背光将高速开关来点亮屏幕。只要PWM高于一定值,人眼就分辨不出该屏幕的闪烁。当一块显示器使用高频PWM调光时,我们认为它与DC调光没有太大的区别。

但总的来说,使用DC调光技术的显示器更加“护眼”,而使用低频PWM调光的显示器就是极度辣眼睛(这也是有些屏幕在摄像头中会屏闪的原因)

目前主流手机都上了OLED屏幕,该屏幕材质普遍使用的是PWM调光。部分手机厂家在屏幕设置中推出了“类DC调光选项”,其原理就是用高频PWM来模拟DC调光

如果你想了解这方面的知识,可以看看这个视频

标签:makerobo,01,LED,调光,树莓,delay,PWM
From: https://blog.51cto.com/musnow/11908555

相关文章

  • Exchange 2016部署实施案例篇-03.Exchange部署篇(中)
    上一章《Exchange2016部署实施案例篇-03.Exchange部署篇(上)》我们对部署ExchangeServer2016的先决条件做了简单的讲解,接下来我们进入先决条件准备工作。先简单说下环境:服务器名称IP地址系统作用ADSrv01192.168.1.10Win2016GC(已部署完成)ADSrv02192.168.1.20......
  • Exchange 2016部署实施案例篇-03.Exchange部署篇(上)
    距离上一篇《Exchange2016部署实施案例篇-02.活动目录部署篇》博文更新已经过去快一周了,最近一直在忙项目上的事情和软考,整的真心有点身心俱疲啊,最近看了下上一篇博文不知道为什么访问量一直上不去,真心有点心寒啊。希望大家能多多提出宝贵意见,看看如何能让访问量上去。......
  • T8332FI LED驱动芯片—原厂货源,一级代理,质量保障,库存充裕
    T8332FILED驱动芯片概述T8332FI是一款多功能的LED驱动芯片,主要用于驱动高功率LED。这款芯片支持多种转换配置,包括Boost、Buck、Buck-Boost以及SEPIC转换器,具有良好的恒定电流控制能力,恒流精度通常在±3%以内。芯片输入电压范围广泛,支持从5V到60V的输入电压,适用于汽车照明、LC......
  • TMtech凯珏LED驱动芯片T8333FI升压降压升降压
    T8333FI:高性能LED驱动控制器的介绍概述:T8333FI是一款多功能且高效的LED驱动控制器IC,专为需要精确、可靠和高效的应用而设计。它特别适用于高功率LED驱动器,并支持Boost、Buck、Buck-Boost和SEPIC等多种转换器配置,广泛应用于汽车照明、LCD背光照明及其他要求严苛的LED应用场景......
  • Exchange 2016部署实施案例篇-02.活动目录部署篇
    其实在写这篇博文之前纠结了好久,到底是该写部署1台AD演示下,还是部署2台活动目录那,比较这个专家还是以Exchang为主,但思来想去最终决定还是部署一主一辅吧,毕竟部署主与辅助还是稍微在步骤上有些不同的,废话不多说,接下来我们开始我们今天的话题,活动目录部署,请大家耐心读奥,有福利奥......
  • Exchange 2016部署实施案例篇-01.架构设计篇(下)
    相信看过上篇Blog《Exchange2016部署实施案例篇-01.架构设计篇(上)》的老铁们可能知道,小弟在上篇Blog中编写了一个需求,不知是否有老铁们已经设计出相对于的架构了,今天我就给大家介绍下我设计的架构。  需求分析我在上篇已经做过了,欢迎各位老铁查阅上一篇博客《Exchange2016......
  • Exchange 2016部署实施案例篇-01.架构设计篇(上)
       前言:此博客为转载,最开始发布这个博客的博主已经看不到了,而网上的一般又不太全,所以我整理起来发布在这里,如果需要删除的化请私信我  年前就答应大家要给大家写一个关于Exchange规划部署的文章,一直忙到现在也没有倒出时间来写这个东西。特别是节后,更是开工不利啊,各种奇......
  • pycharm中应用PPOCRLabelv2时遇到的Qt bug:This application failed to start because
    bug提示如上所示:ThisapplicationfailedtostartbecausenoQtplatformplugincouldbeinitialized.Reinstallingtheapplicationmayfixthisproblem.尝试一:https://www.cnblogs.com/hywing/p/18240487(安装Qt过程可参考,但debug无果)尝试二:https://blog.csdn.net/m0_......
  • ISO27001、风险评估与纵深防御
    ISO27001是国际标准化组织(ISO)和国际电工委员会(IEC)联合发布的信息安全管理体系(ISMS)标准,其最新版本为ISO/IEC27001:2013。该标准为组织提供了一套全面的方法,用于建立、实施、维护和持续改进信息安全管理体系,以保护组织的信息资产免受各种威胁,确保信息的机密性、完整性和可用性......
  • 论文阅读01-Improving Closed and Open-Vocabulary Attribute Prediction using Trans
    论文框架研究背景和动机这篇论文试图解决什么问题?为什么这个问题重要?这个问题在当前的研究领域中有哪些已知的解决方案?研究方法和创新点论文提出了什么新的方法或模型?这个方法或模型是如何工作的?它与现有的方法相比有哪些改进?论文中的创新点是否显著且有实际意义?理......