arduino入门教程到第16课遇到些问题.效果一直是混乱的状态.

琢磨了半天发现一些问题,和大家分享下

1)接线图,原图没有问题,只是比较含糊,线比较多不好看. 我用红色数字标示数码管的12个脚,并且用蓝色数字标示出对应arduino的脚

2)程序问题(这个问题比较离谱)

刚开始按照示例怎么都没办法出效果,突发奇想,将所有的高低电平兑换.然后一切都和谐了,后来查了共阴共阳的原理图发现原来的代码可能是共阳的.

下面是我的代码:

int y[8] = {1,2,3,4,5,6,7,8};
int d[4] = {12,11,10,9};
int digital[10][8] = {{6,y[0],y[1],y[2],y[3],y[4],y[5]},{2,y[1],y[2]},{5,y[0],y[1],y[3],y[4],y[6]},{5,y[0],y[1],y[2],y[3],y[6]},{4,y[1],y[2],y[5],y[6]},{5,y[0],y[2],y[3],y[5],y[6]},{6,y[0],y[2],y[3],y[4],y[5],y[6]},{3,y[0],y[1],y[2]},{7,y[0],y[1],y[2],y[3],y[4],y[5],y[6]},{6,y[0],y[1],y[2],y[3],y[5],y[6]}};
long n=0;
int x=100;
int del=55;
void setup(){
for(int i=0;i<8;i++)
pinMode(y[i],OUTPUT);
for(int i=0;i<4;i++)
pinMode(d[i],OUTPUT);
}
void clearLEDs(){
for(int i=0;i<8;i++)
digitalWrite(y[i],LOW);
}
void pickDigit(int x){
for(int i=0;i<4;i++)
digitalWrite(d[i],HIGH);
if(x>4) x=4;
digitalWrite(d[x-1],LOW);
}
void showDigital(int x){
for(int i=1;i<=digital[x][0];i++)
digitalWrite(digital[x][i], HIGH);
}
void disp(int x){
digitalWrite(y[7],HIGH);
}
void loop(){
clearLEDs();
pickDigit(1);
showDigital((n/x/1000)%10);
delayMicroseconds(del); clearLEDs();
pickDigit(2);
showDigital((n/x/100)%10);
delayMicroseconds(del); clearLEDs();
pickDigit(3);
disp(3);
showDigital((n/x/10)%10);
delayMicroseconds(del); clearLEDs();
pickDigit(4);
showDigital(n/x%10);
delayMicroseconds(del); n++; if(digitalRead(13) == LOW){
n=0;
}
}

  

最后是效果图和效果视频

四位数码管SH5461AS的问题,arduino学习实测.的更多相关文章

  1. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  2. 在树莓派Zero上使用C#+Mono驱动TM1637四位数码管

    最近闲着无聊,买了个树莓派Zero,准备在上面跑.Net Core,来驱动各种传感器 就是上面这货.之前手上已经有一个树莓派3B+,但是介于3B+已经被我挂在路由器旁边当做服务器用,不是很方便拿来研究 ...

  3. Arduino学习经验(一)之解决舵机库和pwm输出冲突

    一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...

  4. Arduino学习笔记⑤ 模拟IO实验

    1.前言     还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能      ...

  5. Arduino学习笔记② Arduino语言基础

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  6. Arduino—学习笔记—基础语法

    图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...

  7. 基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)

    一.前言: 随着LED的普及,以LED点阵为基础的显示设置层出不穷.例如,公交车的线路提示牌.高速公路的信息提示牌,安装在大楼上的广告屏幕等.下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同 ...

  8. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  9. Arduino学习笔记二:修改LED点灯程序

    看了开源社区的LED控制程序,开始上手代码编写,修改,下载以及调试,原文地址:http://www.arduino.cn/thread-1072-1-1.html,这个帖子写的比较通俗易懂. 自己移植 ...

随机推荐

  1. hadoop2 作业执行过程之作业提交

    hadoop2.2.0.centos6.5 hadoop任务的提交常用的两种,一种是测试常用的IDE远程提交,另一种就是生产上用的客户端命令行提交 通用的任务程序提交步骤为: 1.将程序打成jar包: ...

  2. Python 3.4 链接mysql5.7 数据库使用方法

    最近笔者在研究Python3.4链接MySQL5.7版本,笔者意图在网上找到一个比较好的链接方式,网上介绍的大致有 mysqldb或者pymssql这两种方法来链接,mysqldb下载地址http:/ ...

  3. 数据结构【一】:简单队列simple queue

    简单的FIFO队列实现,非线程安全! 1.queue.h : abstract data type queue #ifndef CUR_QUEUE_H #define CUR_QUEUE_H #inc ...

  4. [MySQL] 数据统计 —— 按周,按月,按日分组统计数据

    知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case grou ...

  5. Ultra Edit常用正则表达式

    一.怎样可以删除包含特殊字符的行? 你可以用正则表示式全部替换命令替换行中包含的字符.要执行这个操作,你应该先进行查找: 查找: %*YOUR STRING*^p 替换为: (随便什么文字) 帮助文件 ...

  6. leetcode题解: Remove Duplicates from Sorted List(已排序单链表去重)

    题目: Given a sorted linked list, delete all duplicates such that each element appear only once. For e ...

  7. Unity3d之Shader编程:子着色器、通道与标签的写法 & 纹理混合

    一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器 ...

  8. uva 216 Getting in Line 最短路,全排列暴力做法

    题目给出离散的点,要求求出一笔把所有点都连上的最短路径. 最多才8个点,果断用暴力求. 用next_permutation举出全排列,计算出路程,记录最短路径. 这题也可以用dfs回溯暴力,但是用最小 ...

  9. mysql简单介绍

    SQL语言分为三个部分:数据定义语言( Data DefinitionLanguage,简称为DDL).数据操作语言( DataManipulation Language,简称为DML)和数据控制语言 ...

  10. Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

    执行远程shell,启动远程机器的tomat时遇到次错误.后来发现原来是远程机器的.profile被人改掉了! 在.profile里加入 export JAVA_HOME=/home/evans/jd ...