树莓派编程wiringPi控制电子数码管显示循环0~9_BluesTroy的博客-程序员宝宝

技术标签: 电子数码管  wiringPi  raspberry pi  

我是看着胡老师的文档做的,现在也懒得写了。把文档放在这了http://pan.baidu.com/s/1c07D02k,胡老师写的文档真是太详细了


下面只贴一下代码吧,也没有注释。


led.h

#define LED_A 29
#define LED_B 27
#define LED_C 24
#define LED_D 22
#define LED_E 21
#define LED_F 28
#define LED_G 25
#define LED_H 23
#define LED_COM1 0
#define LED_COM2 2
#define LED_COM3 3
#define LED_COM4 12

#define LED_D1 LED_E
#define LED_D2 LED_D
#define LED_D3 LED_H
#define LED_D4 LED_C
#define LED_D5 30
#define LED_D6 31
#define LED_D7 11
#define LED_D8 10

int tube_segment[]={LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G, LED_H};
int number_segments[]={0b11111100, 0b01100000, 0b11011010, 0b11110010, 0b01100110, 0b10110110, 0b10111110,0b11100000, 0b11111110, 0b11100110};
int tube_coms[]={LED_COM1, LED_COM2, LED_COM3, LED_COM4};

int led_segment[]={LED_D1, LED_D2, LED_D3, LED_D4, LED_D5, LED_D6, LED_D7, LED_D8};
void init_raspberrypi_gpios(void);
void display_number_in_tube(int number, int tube_number);


led.c

#include<stdio.h>
#include<wiringPi.h>
#include "led.h"

int main()
{
	int i, current_number=0;
	wiringPiSetup();
	init_raspberrypi_gpios();
	while(1){
		// for (i = 0; i < 4; ++i)
		{
			display_number_in_tube(current_number, 0);
			display_number_in_tube(current_number, 1);
			display_number_in_tube(current_number, 2);
			display_number_in_tube(current_number, 3);
			current_number++;
			if(current_number==10){
				current_number=0;
			}
			delay(500);
		}
	}
	return 0;
}

void init_raspberrypi_gpios(void){
	int i, count =8;
	for (i = 0; i < count; ++i)
	{
		pinMode(tube_segment[i], OUTPUT);
		digitalWrite(tube_segment[i], HIGH);
	}

	count = 4;
	for (i = 0; i < count; ++i)
	{
		pinMode(tube_coms[i], OUTPUT);
		digitalWrite(tube_coms[i], HIGH);
	}
}

void display_number_in_tube(int number, int tube_number){
	int i;
	int b_number = number_segments[number];
	for (i = 0; i < 8; ++i)
	{
		if(b_number&0x80){
			digitalWrite(tube_segment[i], LOW);
		}else{
			digitalWrite(tube_segment[i], HIGH);
		}
		b_number<<=1;
	}

	// for (i = 0; i < 4; ++i)
	// {
	// 	digitalWrite(tube_coms[i], HIGH);
	// }

	if (tube_number < 4)
	{
		digitalWrite(tube_coms[tube_number], LOW);
		/* code */
	}else{
		printf("%s\n", "tube number error!");
	}
}

然后用WinScp传到树莓派上,在终端用如下命令编译、运行。

gcc -Wall -o led led.c -lwiringPi

sudo ./led




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhuyongzhen1219/article/details/49081275

智能推荐

jQuery常用编程案例_Charles-Su的博客-程序员宝宝

文章目录jQuery实现全选,反选和取消按钮基于DOM来实现反选基于jQuery的写法基于jQuery(使用三元运算符)jQuery实现全选,反选和取消按钮以下是要操控的HTML代码&lt;input type="button" value="全选" onclick="selectAll()"/&gt; &lt;input type="button" value="取消" oncli...

缺芯!涨价!交期52周!i.MX 6ULL用户“慌”了?_Tronlong创龙的博客-程序员宝宝

缺芯!涨价!交期52周!从2020年底开始到现在,相信听到的、看到的最多的都是这几个关键词了,这引发了不只是消费类市场的恐慌,也引发了工业类市场的恐慌。众所周知,相对比消费类市场,工业类市场的产品更加稳定、更新换代速度较慢、生命周期更长。但是即便如此,长时间的“供货慌”,还是会对工业类市场造成冲击,因此除了积极寻求更多的供货渠道,寻求替代物料也成了维持产品生命力的又一出路,特别是主处理器。以工业网关以及工业HMI产品为例,目前市场里主流的处理器是恩智浦(NXP)的i.MX 6ULL和德州仪器

在Windows下安装配置OpenCV-Python-PyCharm开发环境_昊虹图像算法的博客-程序员宝宝

​一、Python的安装①下载Python的安装文件。Python发展至今,有很多版本,这里以python 3.68为例,其官网下载地址为:https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe有时候官网下载比较慢,我把安装文件上传到百度网盘,分享给大家。python 3.68的百度网盘下载地址为:链接:https://pan.baidu.com/s/17qfs7yUNsUGzb1ab6ce8Aw提取码:nl5c②下载完成

超越Kubernetes:值得关注的5大云原生技术_xiaoyaGrace的博客-程序员宝宝

Kubernetes是一个开源容器管理平台,它现在已经成为了云原生的中流砥柱。自从把它移交给Cloud Native Compute Foundation(云原生计算基金)后,该项目在业界上取得了史无前例的关注,目前没有一个公有云环境不提供Kubernetes托管服务。Kubernetes正迅速成为现代容器化应用运行的管理平台。随着Kubernetes的崛起,它带来了一个全新的生态系统的形成。...

安卓图片轮播(banner)_王竹根的博客-程序员宝宝

github地址:https://github.com/youth5201314/banner效果图:Step 1.依赖bannerGradledependencies{ compile 'com.youth.banner:banner:1.4.10' //最新版本}123Step 2.添加权限到你的 AndroidManifest.xml&amp;lt;!-- if you want to ...

随便推点

liunx命令大全 (学好liux的必用指令)_温建江的博客-程序员宝宝

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui

运行 tomcat的时候报错:java.lang.UnsatisfiedLinkError_failure_Growing612的博客-程序员宝宝

运行 tomcat的时候,突然报出这个错误:java.lang.UnsatisfiedLinkError: E:\apache-tomcat-7.0.75\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform最快的解决方法是:删掉E:\apache-tomca

json文件存储 qt_Qt修改JSON文件_weixin_39616503的博客-程序员宝宝

我需要能夠讀取現有的JSON文件,對其進行修改(例如替換,移除和添加對象,數組和鍵值對),然後再次將文件寫出。Qt修改JSON文件我一直想讀,寫與這些內容的JSON文件:{"array": [{"name": "Channel","default": 1},{"name": "Size","default": 457}]}我讀成功的文件,但在不使用下面的代碼做出任何更改:QFile File("/...

java.lang.Math 复盘__大木_的博客-程序员宝宝

耍不动了…package com.beyond;import javax.sound.midi.Soundbank;public class MathTest { public static void main(String[] args) { System.out.println(Math.E); // 自然对数的底数 e。 System.out.println(Math.PI); // 圆周率 System.out.println(.

推荐文章

热门文章

相关标签