楼主: 驴友花雕

[教程] 一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)

[复制链接]

驴友花雕  高级技师
 楼主|

发表于 2019-6-17 14:57:55

18.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 06:15:35

Arduino程序代码+Mind+图形编程+Linkboy仿真编程

后续想法是好好利用这块扩展板子的基础硬件资源,使用这板上的五个扩展端口,扩大实验范围,继续采取Arduino程序代码+Mind图形编程+Linkboy仿真编程三者相结合的方式,互为补充,打好基础,促进理解。


0.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 06:32:42

这个扩展板上的五个扩展端口分别是
J1\J2---2路Digital Port数字量端口(D7、D8)
J3------1路Analog Port模拟量端口(A3)
J4------1个双向同步串行总线I2C接口(A4 SDA及A5 SCL,可接显示屏等)
J5------1个TTL串口(D0,D1,可接入蓝牙或WIFI模块等)

01.jpg

回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 06:47:41

扩展板的五个扩展端口占用了Arduino uno的七个口,A3、A4、A5、D0、D1、D7和D8,另外D5口的蜂鸣器换成了有源的,便于实验调用

02.jpg

回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 09:03:27

第10类 扩展实验
19 模拟超声波测距传感器(探测类数字D7\D8接口)

读取的是超声波模块输出的模拟量

[C] 纯文本查看 复制代码
/*
Eagler8系列实验程序列表
第10类 扩展实验
19 模拟超声波测距传感器(探测类数字D7\D8接口)
项目:利用SR04超声波传感器进行测距,并用串口显示测出的距离值
要点:初始化串口通信及连接SR04的引脚
     检测引脚上输入的脉冲宽度,需要先设置为输入状态
     产生一个10us的高脉冲去触发TrigPin
     检测脉冲宽度,并计算出距离
*/

const int TrigPin = 7;
const int EchoPin = 8;
float distance;

void setup()
{   
        Serial.begin(9600);
        pinMode(TrigPin, OUTPUT);
        pinMode(EchoPin, INPUT);
        Serial.println("Ultrasonic sensor:");
}

void loop()
{
        digitalWrite(TrigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(TrigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(TrigPin, LOW);
 
        distance = pulseIn(EchoPin, HIGH) / 58.00;
        Serial.print(distance);
        Serial.print("cm");
        Serial.println();
        delay(1000);
}








回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 09:28:27

19-4.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 10:05:37

19-5.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 10:16:11

串口显示距离,当探测距离小于50cm时,D5端有源蜂鸣器响,D12端红灯亮,串口打印 "你好! 欢迎来参观!”

19-6.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-6-29 11:36:24

19-7.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 08:15:42

20、DS18B20 温度传感器(数值类,接D7端口)

20-1.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 08:21:06

[C] 纯文本查看 复制代码
/*
Eagler8系列实验程序列表
第10类 扩展实验
20、总线DS18B20温度传感器(数值类,接扩展板数字D7接口)
项目:利用DS18B20传感器进行监测,并用串口显示测出的数值
要点:初始化必需加载二个库(IDE-工具-管理库-搜索-下载)
OneWire.h
DallasTemperature.h
*/

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
void setup(void)
{
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  sensors.begin();
}
 
void loop(void)
{
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures(); 
  Serial.println("DONE");

  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  
  delay(500);
}

回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 08:30:06

20-2.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 08:36:22

20-3.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 08:56:27

20-4.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 09:11:26

用手触摸DS18B20 温度传感器,则温度上升

20-5.jpg

回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 09:31:57

undefined只用一分钟就搞定的图形编程(比较适合像我这样的新人),现在气温是31C,我设置31.5C为声光报警的阙值,0.5C手摸一下DS18B20就过了,在设定的阙值之上会一直报警,这个简单的温控开关还是蛮精准的。


20-6.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 09:47:08

20-7 (1).jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-4 10:44:02

20-8.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-6 17:09:02

21、TM1637四位数码管(数码管和点阵类,接扩展板数字D7/D8接口)
项目:TM1637驱动四位数码管显示
要点:初始化必需加载一个库(IDE-工具-管理库-搜索-安装)
TM1637Display.h


[C] 纯文本查看 复制代码
/*
Eagler8系列实验程序列表
第10类 扩展实验
21、TM1637四位数码管(数码管和点阵类,接扩展板数字D7/D8接口)
项目:TM1637驱动四位数码管显示
要点:初始化必需加载二个库(IDE-工具-管理库-搜索-下载)
TM1637Display.h
*/

#include <Arduino.h>
#include <TM1637Display.h>

#define CLK 7
#define DIO 8

#define TEST_DELAY   2000

const uint8_t SEG_DONE[] = {
        SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           
        SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   
        SEG_C | SEG_E | SEG_G,                          
        SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            
        };

TM1637Display display(CLK, DIO);

void setup()
{
}

void loop()
{
  int k;
  uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
  uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
  display.setBrightness(0x0f);

  display.setSegments(data);
  delay(TEST_DELAY);

  data[0] = display.encodeDigit(0);
  data[1] = display.encodeDigit(1);
  data[2] = display.encodeDigit(2);
  data[3] = display.encodeDigit(3);
  display.setSegments(data);
  delay(TEST_DELAY);

  display.clear();
  display.setSegments(data+2, 2, 2);
  delay(TEST_DELAY);

  display.clear();
  display.setSegments(data+2, 2, 1);
  delay(TEST_DELAY);

  display.clear();
  display.setSegments(data+1, 3, 1);
  delay(TEST_DELAY);

  display.showNumberDec(0, false); 
  delay(TEST_DELAY);
  display.showNumberDec(0, true);  
  delay(TEST_DELAY);
        display.showNumberDec(1, false); 
        delay(TEST_DELAY);
  display.showNumberDec(1, true); 
  delay(TEST_DELAY);
  display.showNumberDec(301, false); 
  delay(TEST_DELAY);
  display.showNumberDec(301, true); 
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(14, false, 2, 1); 
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(4, true, 2, 2);  
  delay(TEST_DELAY);
  display.showNumberDec(-1, false);  
  delay(TEST_DELAY);
  display.showNumberDec(-12);        
  delay(TEST_DELAY);
  display.showNumberDec(-999);       
  delay(TEST_DELAY);
  display.clear();
  display.showNumberDec(-5, false, 3, 0); 
  delay(TEST_DELAY);
  display.showNumberHexEx(0xf1af);        
  delay(TEST_DELAY);
  display.showNumberHexEx(0x2c);          
  delay(TEST_DELAY);
  display.showNumberHexEx(0xd1, 0, true);
  delay(TEST_DELAY);
  display.clear();
  display.showNumberHexEx(0xd1, 0, true, 2);
  delay(TEST_DELAY);
  
        for(k=0; k <= 4; k++) {
                display.showNumberDecEx(0, (0x80 >> k), true);
                delay(TEST_DELAY);
        }

  for(k = 0; k < 4; k++)
        data[k] = 0xff;
  for(k = 0; k < 7; k++) {
    display.setBrightness(k);
    display.setSegments(data);
    delay(TEST_DELAY);
  }
  
  for(k = 0; k < 4; k++) {
    display.setBrightness(7, false);  
    display.setSegments(data);
    delay(TEST_DELAY);
    display.setBrightness(7, true); 
    display.setSegments(data);
    delay(TEST_DELAY);  
  }

  display.setSegments(SEG_DONE);

  while(1);
}

回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-6 17:25:17

21-2.jpg
回复 支持 反对

使用道具 举报

驴友花雕  高级技师
 楼主|

发表于 2019-7-6 17:30:15

21-3.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail