




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OPENJUMPER GO 套件入门开发实验一:LED_BlinkHello World 是所有编程语言的第一课,不过在Arduino 中,我们的Hello World 叫做Blink。Arduino 提供了很多示例代码,使用这些示例代码,我们可以很轻松的开始我们的 Arduino 学习之旅。如图 1-34,你可以在文件菜单示例01.BasicsBlink 找到我们要使用的例程,单击便可打开。打开后你可以看到以下代码:/*BlinkTurns on an LED on for one second, then off for one second, repeatedly. This examp
2、le code is in the public domain.*/ 在大多数 Arduino板上 13 号引脚都连接了一个标有“L”的 LED 灯/ 我们给 13 号引脚设置一个别名“led”OPENJUMPER GO 套件入门开发这些代码的具体含义,我们会在下一章进行讲解。在编译或制器型号。该程序前,我们需要先在工具菜单板卡中选择你正在使用的 Arduino控接着在工具菜单串口 中选择你Arduino器对应的串口。在 Windows 系统中,串int led = 13;/ 在板子启动或者复位重启后, setup 部分的程序只会运行一次void setup()/ 将“led”引脚设置为输出状
3、态pinMed, OUTPUT);/setup 部分程序运行完后,loop 部分的程序会不断重复运行void loop()digitalWrite(led, HIGH);/ 点亮 LED delay(1000);/ 等待一秒钟digitalWrite(led, LOW);/通过将引脚电平拉低,关闭 LED delay(1000);/等待一秒钟OPENJUMPER GO 套件入门开发口名称为“COM”加数字编号,如 COM3。选择串口时,你需要查看设备管理器中你的 Arduino对应的串。图 1- 1 选择串口在 Mac或者 linux 中,串口名称一般为 /dev/tty.usbmodem 加
4、数字编号或OS/dev/cu.usbmodem 加数字编号。图 1- 2 Mac OS 下串口选择板卡和串口设置完成后,你可以在 IDE 的右下角看到当前设置的 Arduino及对应串口。器型号,OPENJUMPER GO 套件入门开发接着点击校验(Verify)按键,IDE 会自动检测程序是否正确,如果程序没有错误,调试提示区会依次显示“编译程序中”、“编译完毕”。编译完成后,你将看到如图的提示信息。编译提示“1,084 字节”为当前程序编译后的大小,括号中“最大 32,256 字节”指当前器可使用的 Flash 程序空间大小。如果程序有误,调试提示区会显示错误相关提示。点击(Upload)
5、按键,调试提示区会显示“编译程序中”,很快该提示会变成“中”,此时 Arduino器上标有 TX、RX 的两个 LED 会快速闪烁,这说明你的程序正在被写入 Arduino器中。当显示“完毕”时,你会看到如图的提示:提示此时,你就可以看到该段程序的效果了板子上的标有 L 的 LED 在按你设定的程序闪烁了。若过程出现其他问题,你可以查阅本书附录获取解决方案。接下来我们用面包板和杜邦线将 LED 元件点亮。这里顺便提一下什么是发光二极管发光二极管简称为 LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为
6、指示灯,或者组成文字或数字显示。磷砷化镓二极管 发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。它是半导体二极管的一种,可以把电能转化成光能;常简写为 LED。发光 二极管与普通二极管一样是由一个 PN 结组成,也具有单向导电性。当给发光 二极管加上正向电压后,从分别与P 区注入到 N 区的空穴和由 N 区注入到 P 区的电子, 在 PN 结附近数微米内N 区的电子和 P 区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复OPENJUMPER GO 套件入门开发合时出的能量多少不同,出的能量越多,则发出的光的波长越短。常 用的是发红光、绿光或黄光的
7、二极管。LED 的工作原理:发光二极管的反向击穿电压约5 伏。它的正向伏安特性曲线很陡,使用时 必须串联限流电阻以通过管子的电流。限流电阻 R 可用下式计算:R(EVF)I ;式中 E 为电源电压,VF 为 LED 的正向压降,I 为 LED 的一般工作电流。发光二 极管的工作电压一般为 1.52.0V,其工作电流一般为 1020mA。所以在 5v 的数字逻辑电路中,可使用 220的电阻作为限流电阻。3、Led 灯的内部结构与连线发光二极管的两根引线中较长的一根为正极,应连接电源正极。有的发光二极管的两根引线一样长,但管壳上有一凸起的小舌,靠近小舌的引线是正极。如示:下图所Led 灯有两种连线
8、方法:当 led 灯的阳极通过限流电阻与板子上的数字I/O 口相连,led 截止,数字口输出高电,led 导通,发光二极管发出亮光;数字口输出低 电发光二极管熄灭。如图:当 led 灯的阴极与板子上的数字 I/O 口相连时,数字口输出高电平,led 截 止,发光二极管熄灭;数字口输出低电平,led 灯导通,发光二极管点亮。OPENJUMPER GO 套件入门开发本实验选择了接线方法Shield 扩展板上的第 13 个1 连接发光二极管,将 220电阻的一端插在 Prototype digital I/O 口,电阻的另一端插在面包板上, 电阻和发光二极管通过导线相连,发光二极管的负端插在面包板上
9、与 GND 相连。一般情况:LED 的长引脚是正极,LED 内部电极体积小的是正极(部分红色 LED 相反)。LED 的电流流向是从正极流向负极。图 2.1-4 实物图需要 1 个电阻和 1 个 LED,电阻的阻值范围是 200 欧姆2K,阻值越大,LED 状态下,阻值越大越好。具体连接如图:亮度越低,选择标准是在亮度基本相同的一个 led 灯的闪烁实验(1) 实验器件Led 灯:1 个OPENJUMPER GO 套件入门开发220 的电阻:1 个多彩面包板实验跳线:若干(2) 实验连线按照 Arduino 使用介绍将板、板子、面包板连接好,线插好。最 后,按照图将发光 管连接到数字的第 13
10、 引脚。这样我们就完成了实验的连 线部分。(3) 实验原理先设置数字 13 引脚为高电平点亮 led 灯,然后延时 1s,接着设置数字 13 引 脚为低电平熄灭 led 灯,再延时 1s。这样使 led 灯亮 1s、灭 1s,在规视上就形 成闪烁状态。如果想让 led 快速闪烁,可以将延时时间设置的小一些,但不能 过小,过小的话人眼就识别不出来了,看上去就像 led 灯一直在亮着;如果想 让 led 慢一点闪烁,可以将延时时间设置的大一些,但也不能过大,过大的话 就没有闪烁的效果了。(4) 程序代码程序代码如下:int ledPin=13; /设定void setup()LED 的数字 IO脚
11、pinMedPin,OUTPUT);/设定数字IO 口的模式,OUTPUT 为输出void loop()digitalWrite(ledPin,HIGH); /设定 PIN13 脚为 HIGH = 5V 左右delay(1000); /设定延时时间,1000 = 1 秒digitalWrite(ledPin,LOW); /设定 PIN13 脚为 LOW = 0V delay(1000); /设定延时时间,1000 = 1 秒Arduino 语法是以 setup()开头,loop()作 为主体的一个程序极架。setup()是用来初始化发量,管脚模式,调用库函数等 等,此函数只运行一次。本程序在
12、setup()中用数字 IO 口输入输出模式定义函 数 pinMode(pin,mode),将数字的第 13 引脚设置为输出模 式。loop()函数是一个循环函数,函数内的语句周而复始的循环执行,本程序 在 loop()中先用 数字 IO 口输出电平定义函数 digitalWrite(pin, value),将数字 13 口定义为高电平,点亮 led 灯;接着调用延时函数 delay(ms)(ms)延 时 1000ms,让发光二极管亮1s;再用数字 IO 口输出电平定义函数 digitalWrite(pin, value),将数字 13 口定义为低电平,熄灭 led 灯;接着再调用 延时函数
13、delay(ms)(ms)延时 1000ms,让发光二极管熄灭 1s。因为 loop()函数是一个循环函数,所以这个过程会不断的循环。程序代码:const int ledPin = 13; / 定义 led 连接的引脚/ led 状态,亮或者灭,可以修改最后一次的 led 状态int ledState = LOW;long previousMillis = 0; /long interval = 1000; / 间隔闪烁的时间长度void setup()OPENJUMPER GO 套件入门开发pinMedPin, OUTPUT); / 初始化引脚输出模式void loop()unsigned
14、long currentMillis = millis();if (currentMillis - previousMillis interval)previousMillis = currentMillis; / 保存当前值,方便下次再次和当前时间比较if (ledState = LOW) / 如果 led 熄灭就把它点亮,反之ledState = HIGH; elseledState = LOW;digitalWrite(ledPin, ledState);第二种闪烁 LED 的方法是用定时器,这里一段某的中的说明,因为笔者也十分赞同并受益,学习单片机和学习企业管理有很多相似的地方!同样是
15、闪烁 LED 的程序,结果一样,但是方法却不同,到底差别在哪里呢?举例说明一下:上一个程序是 CPU工作,这个程序是 CPU 和定时器一起工作。一个人工作和2 个人协调工作的效率是明显不同的。这个是他们最大的区别。单片机硬件功能越少,说明这个团队的可以工作的人越少,反正单片机功能越多,意味着团队比较强大。那么同样一件事情,当然是团队更大的完成的更快、更好,效率更高。但是有个前提,必须会管理团队才可以,不然就是一盘散沙。学习单片机应用就是管理一个团队,把不同的功能融合起来完个部门工作。显,想完成成一个大个工程,必须分工明确、得力,CPU 就是 CEO,负责协调各简单的说,第一个程序就是一个人工作
16、,即是又是员工,那么很明的功能,精力是有限的,所以只能处理简单的功能。第二个程序有一个老板和一个员工,员工负责定时提醒什么时候做什么事情,相当于。只需要在需要的时候发出指令,下面的事情由员工老操作,这样效率就大大提高了。后面会学习到的硬件功能,也就是团队变得越来越大了,管理的难度也会随之增加。在此之前需要把单独的功能都学会并 能熟练应用。LED 什么时候熄灭什么时候点亮?只取决于时间,这个时间是定时器产生 的,单片机电源引脚加上正确电压后它就开始工作,不受其他程序影响。CPU 只需要当前的时间并且对比时间数据,是否到了 1 秒钟?如果时间到,判断当前 LED 的状态,如 果点亮的就把它熄灭,反
17、之熄灭状态则点亮。OPENJUMPER GO 套件入门开发实验二:流水灯const int ledCount = 8; / led 总共的个数int ledPins = 0,1,2,3,4,5,6,7,; / 对应的 led 引脚void setup()for (int thisLed = 0; thisLed ledCount; thisLed+)OPENJUMPER GO 套件入门开发edPinsthisLed, OUTPUT); / 循环设置,把对应的 led 都设置成输出pinMvoid loop()for (int num = 0; num 8; num+) / 熄灭所有 led,不
18、同的电路连接也会得到点亮所有 leddigitalWrite(ledPinsnum, HIGH);for (int num = 0; num 8; num+)digitalWrite(ledPinsnum, LOW); / 循环顺序点亮led 然后等待 200ms 后熄灭delay(200); digitalWrite(ledPinsnum, HIGH);首先熄灭所有 LED,然后点亮第 1 个,等待 200ms 熄灭第一个,然后 点亮第 2个,等待 200ms,熄灭第 2 个,依此循环,直到 8 个 LED 都点亮熄灭。周而复始。8 位 LED 组合能显示特别多的信息,用户需要更具实际需求L
19、ED 亮灭。下面 接着讲解程序部分,上面的程序不管是 1 位 LED 还是 8 位 LED,都有一个共同特点:都是 输出功能,在 程序里面初始化的时候端口的状态都应该设置为输出,这 种 输出功能是用于其他的设备。OPENJUMPER GO 套件入门开发实验三:指示灯在 8 位 LED 的基础上加了一个电位器,电位器的 2 端分别连接到 VCC 和 GND,中间滑动端子连接到 A0,转动电位器,A0 端的电压从集这个变化的电压信号,然后由单片机处理后并反映到0VCC 之间变化, 通过单片机采8 位 LED,当电压最 低的时候LED 全部熄灭,电压最高的时候 LED 全部点亮,通过直观现象反应电位
20、器的位置 状态。程序部分如下:const int analogPin = A0;/ 模拟输入/ led 个数const int ledCount = 8;int ledPins = 0,1,2, 3, 4, 5, 6, 7, ;/ 对应的 led 引脚void setup() for (int thisLed = 0; thisLed ledCount; thisLed+) pinMedPinsthisLed, OUTPUT); /初始化 8 个LED 为输出模式void loop() OPENJUMPER GO 套件入门开发电位器的值int sensorReading = analogRea
21、d(analogPin);/int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);/ 把对应的值转化成 0-最大led 个数for (int thisLed = 0; thisLed ledCount; thisLed+) /遍历到每个 LEDif (thisLed debounceDelay)/ 等过了去抖时间,再次去检测按键的状态if (reading != buttonState) / 如果按键仍然保持上次的状态,我们认为这个按键按下是真实有效的buttonState = reading;if (buttonState = HIG
22、H)ledState = !ledState; / 按下按键改变当前的led 状态digitalWrite(ledPin, ledState); / 把 led 的最终结果到对应的引脚lastButtonState = reading; / 保存当前值,一边下一个循环检测的时候使用OPENJUMPER GO 套件入门开发使用软 件去抖动之后,按键才能稳定有效的工作,才真正达到了实际应用的效果。实验六:电位器LED 闪烁频率这个实验利用旋转电位器,电位器中间滑动端接A0,另外 2 端接 VCC 和 GND,通过旋转电位器,滑动端可以得 到 0-VCC 的变化电压。程序的思路是模拟数值 0-102
23、3 之间,把这个值作为延时函数的输入参数,延时LED 的闪烁快慢。的范围是0-1023ms,通过改变电位器的位置,代码部分:int sensorPin = A0;/ 模拟输入引脚/ led 指示灯引脚int ledPin = 13;int sensorValue = 0; /模拟输入数值变量void setup()edPin, OUTPUT);/配置引脚为输出模式pinMOPENJUMPER GO 套件入门开发void loop()电位器电压值sensorValue = analogRead(sensorPin); /digitalWrite(ledPin, HIGH); /点亮 LEDdel
24、ay(sensorValue); /延迟一个时间,这个时间的值是电位器读到的值digitalWrite(ledPin, LOW); /熄灭 LED/延迟一个时间,这个时间的值是电位器读到的值delay(sensorValue);实验七:PWM 调光PWM 是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理 器的数字输出来对模拟电路进行的一种非常有效的技术,广泛应用于测量,通信,功率与变换等许多领域。一种模拟方式,根据相应载荷的变化来调制晶体管 栅极或基极的偏置,来实现开关稳压电源输出晶 体管或晶体管导通时间的改变,这 种方式能使电源的输出电压在工作条件变
25、化时保持恒定。这里用软件模拟最简单的 PWM,频率不变, 脉冲高电平宽度可以调节,实际是调节 做功时间,从而达到调节电压、电流或者功率等参数。PWM 在一些情况下可以替代 DAC(数模转换)功能。所以在 arduino 里面使用函数analogWrite(); 写模拟量,arduino 的 PWM 是 8 位,换算成数字量是 0255 。PWM 使用内部自带的 PWM 发生器功能,只有在主板上标有 PWM 的端口才能使用这个功能,否则 此函数写无效。UNO 的 PWM 端口是 3、5、6、9、10、11 。如下:基本的硬件连接OPENJUMPER GO 套件入门开发程序部分:int led =
26、 9;/ led 引脚定义,这里需要使用有 PWM 功能的引脚int brightness = 0; / led 亮度int fadeAmount = 5; / 调节的单步间隔void setup()pinMed, OUTPUT); / led 引脚定义位输出void loop()analogWrite(led, brightness); / 设置了 led 的亮度brightness = brightness + fadeAmount; / 下一个循环调整led 亮度OPENJUMPER GO 套件入门开发if (brightness = 0 | brightness = 255) / 到最
27、大值后反向调整fadeAmount = -fadeAmount;delay(30); / 等待 30ms程序功能:从 0 循环增大 PWM 数值,到 255 后再循环减小到 0,如此循环,LED 状态 渐渐变亮然后渐渐变暗直到熄灭,然后反复循环,就像呼吸的状态一样,电器上面的呼吸灯 就是这种方法实现的。通过把之前学习过的 ADC 转换、PWM 调光功能结合起来,可以实 现呼吸灯效果。实验八:EEPROMEEPROM,非易失性器。单片机发展的起始阶段,程序的存贮器都是用高压编程 的,擦除的时候需要用紫外线长时间照射。RAM 在掉电后数据也丢失了,那个时候没有发 明EEPROM,所以制造出的设备都
28、是一样的,用户不能根据的习惯改变一些使用参数, 只能用厂家设置。现在不同了,这种低价格的复擦写功能,EEPROM 就是比普通 FLASH(器到处都有,比如电脑硬盘,SD 卡都有 反单片机而言)擦写次数的一种器,这里面 的数据需要经常改变,并且要求掉电后不能丢失。现在主流的单片机都集成EEPROM 功能,只需要通过简单的指令就可以对其操作。Arduino 内部单片机也同样有个功能,下面的样例不需要连接外部模块,仅仅靠串口通讯来实现这个功能。程序部分:#include 了这int address = 0; /设置byte value;EEPROM 的地址void setup()/初始化串口波特率为
29、 9600Serial.begin(9600);value = EEPROM.read(address);/取出数据Serial.print(power on times:); /显示开机次数/十进制显示数值/输出回车换行/对应的开机次数加 1Serial.print(value, DEC);Serial.println(); value = value + 1;EEPROM.write(address, value);/然后void loop()OPENJUMPER GO 套件入门开发程序功能用于记忆开关机的次数,这里最大值 255,如果没有 EEPROM 功 能,是没有办法记忆开机次数的。
30、加入 EEPROM 之后,每次开机的时候先把上次的开机次 数从EEPROM 读出来,然后数值加一,再到 EEPROM,由于单片机掉电后 EEPROM 的内容是保持不变的,这样就保存了对应数据。这个功能非常实用。Arduino 里面程序集成了相关函数,只用 2 个语句就实现读写功能。 EEPROM.read();EEPROM.write(); ,这个里面有 2 个参数,第一个是地址,第二个是要写的 数据。打个比方我需要把放到书桌第三个抽屉里面,就是数据,书桌的第三个抽屉就是地址,同样我需要使用的时候,就必须到书桌的第三个抽屉里面再拿出来,如果你 去第一个或者第二个抽屉去找,是找不到你放的的,因为
31、地址不对。 程序实验现象:每次复位或者开机后,串口打印出的数字都是上一次数值加一,通过这种方式可以方便的看到开机的次数,如果在时间内统计次数,可以了解用户的使用设备 的频率。比如你设计了一个,当开关次数超过 1 万次的时候则认为这个的开关达到极限,不能再继续使用,如果继续使用可能会导致很多安全问题。此时就可以利用这个 EEPROM 记忆功能,当开关次数达到 1 万次后把一些必要的信息反映到显示屏或者直接切 断功能等等,用于确保设备的安全使用。实验九:串口通讯串口通讯是应用非常广的通讯方式,即便是各种高速通讯接口盛行的今天,串口通讯仍然占有重要的地位。串口通讯适合低速传输,通过 RS485 电平
32、转换可以实现远距离传输。方式和应用相对简单,适合各种单片机之间、单片机与模块、模块与模块直接通讯。现在主流的 usb、wifi、网口通讯因为其性价比并不适合集成到单片机内部。串口主要的参数就是波特率,通讯设备 2 端的波特率相同才能正确通讯。波特率的常用 范围是 1200115200,更高的波特率对硬件的要求比较高,如果硬件不稳定会造成通讯失败, 丢包等现象。收发数据的频率需要取决波特率参数,串口数据是顺序的,一个数据完成 才能下一个数据,速率不对等则会造成丢包、堵塞。Arduino 串口通讯硬件部分只集成到主板上,测试主板的串口是否正常,最简单的方式 是主板能否程序,因为程序是通过该串口的。
33、UNO 只有 1 个硬件的串口,如果需 要多个串口功能则需要使用 arduino 提供的模拟串口样例。OPENJUMPER GO 套件入门开发实验目标:用串口输出 OPENJUMPER 到屏幕中。代码部分:void setup()Serial.begin(9600); /初始化串口波特率为 9600void loop()Serial.println(openjumper);delay(1000); /延迟一秒实验十:数码管数码管是最常用的显示器件之一,有使用方法简单、价格低廉、亮度高长等优点。实际上就是 8 个 LED 灯用 8 字形的透明阳数码管。封装一起做成的,我们套件中配的是一位共OPE
34、NJUMPER GO 套件入门开发共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数 码管。共阳数码管在应用时应将公共 PWR 接到电源输入 PWR 上,当某一字段发光二极管为低电平时,相应字段就点亮。当某一字段的高电,相应字段就不亮。下图为共阴数码管。硬件的连接方法:将限流电阻的一端插到数字 I/O 中,另一端与数码管的字段引脚相连,剩下的 六个字段和一个小数点依次按照返种方法接。将公共极 COM 如果是共阳极的就 接到+5V,如果是共阴极的就接到 GND。限流电阻的阻值是 220 欧姆。按照 Arduino将g 段通过限流电阻与数字的板、面包板连接好,线插好。按数码管癿
35、接法 将数码管9 引脚相连,f 段 通过限流电阻与数字 8 引脚相连,共阳极与 5V 插口相连,同样的接法 a、b 分 别接 7、6 引脚,e、d 分别接 10、11 引脚,第二个共阳极可以不接,c、DP 分 别接 5、4 引脚,连线完毕。OPENJUMPER GO 套件入门开发代码部分:/共阳数码管,显示 0-9 数字int ledCount = 8;const unsigned char code10 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f;/共阴段码int ledPins = 0,1,2,3,4,5,6,7
36、,; / 对应的 led 引脚void setup()for (int thisLed = 0; thisLed ledCount; thisLed+)pinMedPinsthisLed, OUTPUT);/设置引脚都为输出状态void deal(unsigned char value)/ 数据处理,把需要处理的 byte 数据写到对应的引脚端口。for (int i = 0; i 8; i+)digitalWrite(ledPinsi, !bitRead(value, i); /按位取反OPENJUMPER GO 套件入门开发void loop()for (int i = 0; i 10;
37、i+)/ 循环显示 0-9 数字deal(codei); /对应的段码值/延迟一秒delay(1000);实验十一:74HC59574HC595 是一个 8 位串行输入、平行输出的位移缓存器:平行输出为三态输出。在SCK 的上升沿,单行数据由 SDL 输人到内部的 8 位位移缓存器,并由 Q7输出,而平行输出则是在LCK 的上升沿将在 8 位位移缓存器的数据存人到 8 位平行输出缓存器。当串行数据输人端 OE 的信号为低使能时,平行输出端的输出值等于平行输出缓存器所存储的值。而当 OE 为高电位,也就是输出关闭时,平行输出端会维持在高阻抗状态。这里我们用 它来8 个LED 小灯。要是单纯的用
38、Arduino8 个小灯的话需要用 8 个 I/O 口,我们用 74HC595 的目的就是减少I/O 口的使用数量。用了 74HC595以后,我们可以用 3 个数字 I/O 口硬件的连接如下图所示:8 个 LED 小灯。!OPENJUMPER GO 套件入门开发代码部分:const int ON = HIGH; const int OFF = LOW;int latchPin = 5; /定义 D5 接 595 的脚位 12 int clockPin = 4; /定义D4 接 595 的脚位 11 int dataPin = 2; /定义 D2 接 595 的脚位 14/595 的脚位 16
39、接 5VDC/595 的脚位 8 接 GNDint ledState = 0; void setup()pinMatchPin, OUTPUT);/引脚都为输出模式pinMode(clockPin, OUTPUT);pinMode(dataPin, OUTPUT);void loop()int delayTime = 100;for (int i = 0; i 256; i+)updateLEDs(i); delay(delayTime);void updateLEDs(int value)digitalWrite(latchPin, LOW);shiftOut(dataPin, clockP
40、in, MSBFIRST, value); digitalWrite(latchPin, HIGH);void updateLEDsLong(int value)digitalWrite(latchPin, LOW); for (int i = 0; i 8; i+)int bit = value & B10000000; value = value 1;if (bit = 128)digitalWrite(dataPin, HIGH);elseOPENJUMPER GO 套件入门开发digitalWrite(dataPin, LOW);digitalWrite(clockPin, HIGH)
41、; delay(1); digitalWrite(clockPin, LOW);digitalWrite(latchPin, HIGH);int bits = B00000001, B00000010, B00000100, B00001000, B00010000, B00100000,B01000000, B10000000;int masks = B11111110, B11111101, B11111011, B11110111, B11101111, B11011111,B10111111, B01111111;void changeLED(int led, int state)le
42、dState = ledState & masksled; if (state = ON)ledState = ledState | bitsled;updateLEDs(ledState);上传程序后,我们可以看到 8 个 LED 依次闪烁,实现了多个 LED 口的。实验十二:8*8LED 点阵点阵屏在生活中经常看到,街边的牌,机场的候机屏等等,在这款套件中,配置了一块 1588BS 8*8 的点阵显示屏,这一节显示器。教大家如何使用Genuino101 驱动这块点阵Step1:首先需要将硬件与 101 连接起来,点整显示器的原理图如下。OPENJUMPER GO 套件入门开发从正面看,16
43、 个引脚的编号如下图,与原理图中的PIN 是相互对应的。接下来我们需要在输入电流的引脚上串联 220 欧姆电阻,起到限流的作用,如下图。OPENJUMPER GO 套件入门开发从 101 的 1 号引脚依次往下连接到点阵显示器的 PIN 中,如下如OPENJUMPER GO 套件入门开发代码部分:/the pin to control ROWconst int row1 = 2; / the number of the row pin 9 const int row2 = 3; / the number of the row pin 14 const int row3 = 4; / the number of the row pin 8 const int row4 = 5; / the number of the row pin 12 const int row5 = 6; / the number of the row pin 1 const int row6 = 7; / the number of the row pin 7 const int row7 = 8; / the number of the row pin 2 const
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南地区地理试卷及答案
- 2025年解除员工劳动合同协议书
- 少儿英语教学自然拼读教学法
- 学生跳绳考试题目及答案
- 2025年电力线路安规试卷及答案
- 中国塑料制品零配件项目投资计划书
- 化学研究性学习报告(共5)
- 中国生物复肥载体项目经营分析报告
- 2025年甲型H1N1流感防控知识培训试题及参考答案
- 登革热防治方案-
- GB/T 6543-2025运输包装用单瓦楞纸箱和双瓦楞纸箱
- DLT5210.1-2021电力建设施工质量验收规程第1部分-土建工程
- 小学生扭扭棒制作课件
- 2025年统编版七年级道德与法治上册全册教案设计+全册期末复习清单
- T/CSWSL 021-2020饲料原料大豆酶解蛋白
- 2025-2030中国林业行业发展分析及投资风险预警与发展策略研究报告
- 沪教版牛津小学英语五年级上册大单元作业设计
- 高效节能灯具采购及售后服务保障协议
- 秦皇岛市市直医疗卫生单位选聘笔试真题2024
- 大学生物科学第1课课件
- 密闭式静脉输液的护理
评论
0/150
提交评论