Arduino 数码管LED屏驱动
今天測试数码管LED屏驱动,用某产品的一个共阴极的LED屏,依据电路图做数码管LED屏的检測。
代码写得有些冗长,有好几种驱动的方法,这里仅仅是当中一种最直接的方案,抽出时间要做个更有效率的调用和驱动的方案。
//设置阴极接口
int d1 = 1;
int d2 = 2;
int d3 = 3;
int d4 = 4;
int d5 = 5;
int d6 = 6;
int d7 = 7;
//设置阳极接口
int a = 8;
int b = 9;
int c = 10;
int d = 11;
int e = 12;
int f = 13;
int g = A0;
int h = A1; void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(d5, OUTPUT);
pinMode(d6, OUTPUT);
pinMode(d7, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(h, OUTPUT);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
digitalWrite(d5, HIGH);
digitalWrite(d6, HIGH);
digitalWrite(d7, HIGH);
} void loop()
{
//缺水
digitalWrite(d7, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
delay(500);
//低水位
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
delay(500);
//定时关机
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
delay(500);
//温度十位8
digitalWrite(d7, HIGH);
digitalWrite(d1, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//温度个位8
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//温符号度
digitalWrite(d2, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, HIGH);
digitalWrite(d1, LOW);
delay(500);
//睡眠符号
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
delay(500);
//小时十位8
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//小时个位8
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//冒号
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, HIGH);
delay(500);
//分钟十位8
digitalWrite(d4, HIGH);
digitalWrite(d5, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//分钟个位8
digitalWrite(d5, HIGH);
digitalWrite(d6, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(a, HIGH);
delay(300);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
delay(300);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
delay(300);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(300);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
delay(300);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
delay(300);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
delay(300);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
delay(300);
//全亮
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(h, HIGH);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
digitalWrite(d5, LOW);
digitalWrite(d6, LOW);
digitalWrite(d7, LOW);
delay(500);
//全灭
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(h, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
digitalWrite(d5, HIGH);
digitalWrite(d6, HIGH);
digitalWrite(d7, HIGH);
delay(500);
}
计划採用机器视觉来检測,自己主动鉴别出断笔,笔段亮度差异较大等质量检验问题。
Arduino 数码管LED屏驱动的更多相关文章
- Arduino 数码管LED驱动 数组法
上个样例讲到驱动LED数码管,採用一种最直接的方案,对每一个LED进行高低电平的控制,这种长处是每一个LED都是受控可检的,避免了因为短路造成的假象,但对于数字变化来说,写起来就很冗余,因此这次尝试用 ...
- Arduino 数码管LED驱动器 阵列方法
样品谈到最后一个驱动程序LED数码管,采用了最简单的解决方案之一,对于每一个LED高低电平控制,这样的好处是每个LED控制可检.避免短路造成的错觉,因为,但是对于数字的变化是,它是多余的写,因此,这种 ...
- kernel 4.4.12 EETI eGTouch 电容屏驱动移植
kernel 4.4.12 EETI eGTouch 电容屏驱动移植: 在make menuconfig 里面添加如下选项: 添加通过事件上报接口节点: Device Drivers ---> ...
- Arduino 翻译系列 - LED 灯闪烁
原文地址 - https://www.arduino.cc/en/Tutorial/Blink 闪烁 这个例子展示了你能拿 Arduino / Genuino 板子来干的最简单的事:使开发板上的 LE ...
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- Arduino CNC Shiled 和 DRV8825驱动板的注意事项
首先说明硬件:1) Arduino CNC Shiled V2.6 2)DRV8825驱动板 3)光驱步进电机 4)Arduino uno R3 下图是本次主角是Arduino CNC Shile ...
- 所谓的液晶屏驱动IC是单独的IC还是在屏内就集成
所谓的液晶屏驱动IC是单独的IC还是在屏内就集成 时间:2016-12-05 作者:admin 其实无论什么液晶屏,想要正常工作必须包括两个人:玻璃屏+驱动IC:但是现在有一些液晶厂商他们不 ...
- 旧接口注册LED字符驱动设备(动态映射)
#include <linux/init.h> // __init __exit #include <linux/module.h> // module_init module ...
- Linux内核的LED设备驱动框架【转】
/************************************************************************************ *本文为个人学习记录,如有错 ...
随机推荐
- OC - 19.pthread和NSThread
简介 恰当的使用多线程编程可以提供任务的执行效率和系统资源的利用率 多线程是为了提高资源利用率,和应用程序的响应速度,多个线程共享应用资源 每个应用程序都有一个主线程,通常用来做UI界面刷新等 比较耗 ...
- zepto源码研究 - callback.js
简要:$.Callbacks是一个生成回调管家Callback的工厂,Callback提供一系列方法来管理一个回调列表($.Callbacks的一个私有变量list),包括添加回调函数, 删除回调函数 ...
- java获得url里面所带参数的值
url: http://localhost:8080/test/list?p=1&d=2014 要获得所带参数p和d的值,方法如下: int p = Integer.parseInt(requ ...
- jQuery常用事件
1.$(document).ready() $(document).ready()是jQuery中响应JavaScript内置的onload事件并执行任务的一种典型方式.它和onload具有类似的效果 ...
- gdb调试memcached
1.memcached安装前,要安装libevent 2.memcached在configure中 加上 CPPFLAGS='-ggdb3'选项 例如 本机 ./configure -prefix ...
- jquery easy ui 学习 (6) basic validatebox
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- UILabel的size根据文字的长短变化
UILabel *label = [[UILabel alloc] init]; label.backgroundColor = [UIColor blackColor]; [self.view a ...
- HTTP分块传输
HTTP分块传输 用途 对于在发送HTTP头部前,无法计算出Content-Length的HTTP请求及回复(例如WEB服务端产生的动态内容),可以使用分块传输,使得不至于等待所有数据产生后,再发送带 ...
- linux下文件编码的查看与转换(转)
通常来说,Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8,所以Linux下打开windows的文件会有乱码的情况.另外,有时要将文件进行编码转换,如将简体中文转 ...
- 打patch p0 p1区别
如何使用patch 对于一个patch文件,有两种常用使用方法: 1.代码:cat new-patch | patch -p0 2.代码:patch -p0 < new-patch patc ...