四位共阴管从上手到搞定

news2024/11/23 15:20:11

这个图里的1,2,3,4就是公共端,也就是分别管着对应的第1-4位接低电势或者接高电势(取决于你买了共阴还是共阳),剩下的a~h就是8个led小管子。 

举个形象的例子,比如让第一个位数的b小灯泡亮,可以这么干:

接下来废话少说 上代码,有大妈亲测的0~9二进制表达:

# 4位共阴管
"""
tubeA -> GPIO0(Pin27)
tubeB -> GPIO6(Pin31)
tubeC -> GPIO7(Pin26)
tubeD -> GPIO20(Pin38)
tubeE -> GPIO21(Pin40)
tubeF -> GPIO5(Pin29)
tubeG -> GPIO1(Pin28)
tubeH -> GPIO16(Pin36)

G1 -> GPIO22(Pin15)
G2 -> GPIO26(Pin37)
G3 -> GPIO17(Pin11)
G4 -> GPIO14(Pin8)
"""

import RPi.GPIO as GPIO
import random
import time

NUMBER_OF_DIGITS = 4

def format_num(num):
    digits_left = NUMBER_OF_DIGITS
    format_str = ''
    if num < 0:
        digits_left -= 1
        format_str += '-'
        num *= -1
    if isinstance(num, int):
        len_int = len(str(num))
    else:
        len_int = len(str(int(round(num))))
    if len_int > digits_left:
        return ''
    else:
        if isinstance(num, int):
            format_str += '%d'
        else:
            len_frac = digits_left - len_int
            format_str += '%%.%df' % len_frac
    return format_str % num

GPIO.setmode(GPIO.BCM) #用BCM就是用GPIO序号,用BOARD就是用树莓派物理上的pin位置。

# GPIO ports for the 7seg pins
segments = (0,6,7,20,21,5,1,16)

for segment in segments:
    GPIO.setup(segment, GPIO.OUT)
    GPIO.output(segment, 1)

# GPIO ports for the digit 0-3 pins
digits = (22,26,17,14)

for digit in digits:
    GPIO.setup(digit, GPIO.OUT)
    GPIO.output(digit, 1)

#大妈顶着老花近视眼,笨办法个个数字调试出来的。前提第一个' '一定要对。
num = {
    ' ':(0,0,0,0,0,0,0),
    '-':(0,0,1,0,0,0,0),
    '6':(0,1,1,1,1,1,1),
    '1':(0,0,0,0,1,1,0),
    '8':(1,1,1,1,1,1,1),
    '5':(0,1,1,1,0,1,1),
    '0':(1,1,0,1,1,1,1),
    '9':(1,1,1,1,0,1,1),
    '4':(1,0,1,0,0,1,1),
    '2':(1,1,1,1,1,0,0),
    '3':(1,1,1,1,0,0,1),
    '7':(1,1,0,0,0,1,1)
}

RAND_MAX = (10 ** NUMBER_OF_DIGITS) - 1
RAND_MIN = (-10 ** (NUMBER_OF_DIGITS - 1)) + 1

r = random.uniform(-1, 1)
max_scale = NUMBER_OF_DIGITS
if r < 0:
    max_scale -= 1
n = r * (10 ** random.randint(0, max_scale))
print(n)
next_mode = 'int'
last_change = time.time()

try:
    while True:
        s = format_num(n).rjust(NUMBER_OF_DIGITS)
        #s = format_num(4).rjust(NUMBER_OF_DIGITS) #猜单个数字的byte的时候用的。
        digit = 0
        for char in s:
            if char == '.':
                continue
            for loop in range(0,7):
                GPIO.output(segments[loop], num[char][loop])
                if digit < (NUMBER_OF_DIGITS-1) and s[digit+1] == '.':
                    GPIO.output(16, 1)
                else:
                    GPIO.output(16, 0)
            GPIO.output(digits[digit], 0)
            time.sleep(0.001)
            GPIO.output(digits[digit], 1)
            digit += 1
        if (time.time() - last_change) > 2:
            r = random.uniform(-1, 1)
            max_scale = NUMBER_OF_DIGITS
            if r < 0:
                max_scale -= 1
            n = r * (10 ** random.randint(0, max_scale))
            if next_mode == 'int':
                n = int(n)
                next_mode = 'float'
            elif next_mode == 'float':
                next_mode = 'int'
            print(n)
            last_change = time.time()
finally:
    GPIO.cleanup()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/874035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity C# 之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息

Unity C# 之 Http 获取网页的 html 数据&#xff0c;并去掉 html 格式等相关信息 目录 Unity C# 之 Http 获取网页的 html 数据&#xff0c;并去掉 html 格式等相关信息 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、关键代码 一、简单介绍 Unity中的一些知…

Streamlit 讲解专栏(八):图像、音频与视频魔法

文章目录 1 前言2 st.image&#xff1a;嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio&#xff1a;嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video&#xff1a;嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…

Java-IO模型分析

BIO&#xff08;同步阻塞&#xff09; 利用网络连接传输数据为例&#xff1a; 服务端单线程 服务端只有一个主线程处理客户端的连接和读写处理&#xff0c;此时如果有第二个客户端欲连接并发送消息服务端是接收不到的。 因为读写和等待accept连接都是阻塞的。 sever端代码…

CSS:服务器字体 与 响应式布局(用法 + 例子 + 效果)

文章目录 服务器字体定义 服务器字体使用例子 响应式布局设备类型设备特性例子 服务器字体 解决字体不一致而产生的。 首先&#xff0c;在网上把字体下载好。 定义 服务器字体 font-face{font-family:字体名称;src:url(字体资源路径); }使用 在需要使用的选择器里加上 font…

抖音关键词搜索小程序排名怎么做

抖音关键词搜索小程序排名怎么做 1 分钟教你制作一个抖音小程序。 抖音小程序就是我的视频&#xff0c;左下方这个蓝色的链接&#xff0c;点进去就是抖音小程序。 如果你有了这个小程序&#xff0c;发布视频的时候可以挂载这个小程序&#xff0c;直播的时候也可以挂载这个小…

camera hal|如何学习一个新平台

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 我自己目前从事的是android camera hal 的工作,工作上接触到的芯片平台要么是高通的,要么是mtk的。 其实…

034_小驰私房菜_[问题复盘] Qcom平台,某些三方相机拍照旋转90度

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 【一、问题】 某些三方相机,预览正常,拍照旋转90度 【二、问题排查】 1 ) HAL这边Jpeg编码数据在哪个地方…

FPGA----Vivado SDK创建并使用静态链接库(C/C++代码移植)

1、在进行SoC开发时&#xff0c;PS端的C/C代码可能涉及到核心算法需要移植操作&#xff0c;为此&#xff0c;本文讲述了如何将C/C代码打包为.a文件供程序调用 2、文章以我的程序为例&#xff0c;逐步讲述代码生成静态链接库并调用的方法。 下面是我程序的目录结构&#xff0c…

MySQL入门学习教程(三)

上一章给大家说的是数据库的视图&#xff0c;存储过程等等操作&#xff0c;这章主要讲索引&#xff0c;以及索引注意事项&#xff0c;如果想看前面的文章&#xff0c;url如下&#xff1a; MYSQL入门全套(第一部)MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个…

python中的运算符号含义,python基本运算符的操作

本篇文章给大家谈谈python的运算符号有哪些类型&#xff0c;以及python各运算符号的功能说明&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1.算数运算符&#xff08;最常见的&#xff09; 标准算数运算符&#xff08;加减乘除&#xff09; 取余运算…

贪心 二分查找和二分答案 递推与递归

贪心 知识点 局部最优解->整体最优解 贪心算法理论基础&#xff01;_哔哩哔哩_bilibili 选择的贪心策略必须具备无后效性&#xff0c;即某个状态以前的过程不会影响以后的状态&#xff0c;只与当前状态有关。 证明贪心策略的有效性 反证法 数学归纳法 例题 376.摆…

不同版本Idea部署Maven和Tomcat教学

目录 一、2019版Idea 1.1. Maven配置 1.2. Tomcat配置 二、2023版Idea 2.1 Maven配置 2.2. Tomcat配置 一、2019版Idea 1.1. Maven配置 在这篇 http://t.csdn.cn/oetKq 我已经详细讲述了Maven的下载安装及配置&#xff0c;本篇就直接开始实操 : 1. 首先进入设置搜索Mave…

6939. 数组中的最大数对和

题目描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums 。请你从 nums 中找出和 最大 的一对数&#xff0c;且这两个数数位上最大的数字相等。 返回最大和&#xff0c;如果不存在满足题意的数字对&#xff0c;返回 -1 。 示例&#xff1a; 解题思路&#xff1a; 使用数组…

PyQt5同一界面实现不同窗口跳转

目录 一、目的 二、QStacked Widget 二、QTabWidget 三、实战演示 1、在Qt Designer中编辑界面文件 2、编写逻辑文件用于显示 四、QStackedWidget、QTabWidget可以相互嵌套使用,效果奇佳 五、附录——生成新的窗口进行跳转,跳转的同时关闭另外一个界面 1、第一个跳转…

Java之多态

多态 多态的实现条件重写重写的定义重写的例子方法重写的条件 多态思想动态绑定与静态绑定 作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等 作者主页&#xff1a;zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&…

7-7 整数152的各位数字

本题要求编写程序&#xff0c;输出整数152的个位数字、十位数字和百位数字的值。 输入格式&#xff1a; 本题无输入。 输出格式&#xff1a; 按照以下格式输出&#xff1a; 152 个位数字 十位数字*10 百位数字*100代码长度限制 16 KB 时间限制 400 ms 内存限制 64…

Mac 卸载appium

安装了最新版的appium 2.0.1,使用中各种问题&#xff0c;卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium&#xff1a; npm uninstall -g appium 出现报错&#xff1a;Error: EACCES: permiss…

命题与命题联结词

一、命题 什么是命题&#xff1f; 具有确切真值的陈述句称为命题。疑问句、感叹句、祈使句都不是命题。 例如&#xff1a; 是命题 1加1等于3雪是黑色的 不是命题有&#xff1a; 太好啦&#xff01;X0X>1 原子命题&#xff08;简单命题&#xff09;——不能分解的…

1572. 矩阵对角线元素的和

题目描述&#xff1a; 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例&#xff1a; 解题思路&#xff1a; 同时求对角线和副对角线上元素的和再减去重合的元素 相关代码&#xf…

期权定价模型系列【5】—ETF期权数据

1.前言 对期权定价模型进行研究时&#xff0c;往往需要匹配的实际数据&#xff0c;国内上市时间超过两年、主流的ETF期权包括华夏上证50ETF期权、沪深300ETF期权等&#xff0c;其对应的标的资产分别为华夏上证50ETF、华泰柏瑞沪深300ETF、嘉实沪深300ETF。 2.上证50ETF期权合约…