本程序在某宝的店铺产品基础上淘宝店铺利用arduino实现可见光通讯,两个led灯相对放置,通过灯的闪烁完成信号的传输,具体程序如下:

  • 发送端程序
unsigned int txbuffer[9] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};//要发送的字符
#define LED 3//定义发送端引脚
void setup()//设置
{Serial.begin(9600);pinMode(LED, OUTPUT); //引脚为下拉输出digitalWrite(LED, LOW);
}
void loop()
{LEDstart();//开始信号for (int i = 0; i < 8; i++)LEDsend(txbuffer[i]);//循环发送8个字符LEDover();//结束信号
}
void LEDstart()//开始信号函数
{digitalWrite(LED, HIGH);//拉高delay(1000);delay(1000);delay(1000);//延时3秒digitalWrite(LED, LOW);//拉低Serial.println("START");//串口打印开始信息
}
unsigned int temp, flag;
void LEDsend(unsigned int a)//发送函数
{temp = a;//要发送的值Serial.print("send---");Serial.println(temp, HEX);//要发送值得16进制Serial.print("temp(HEX)");for (int n = 0; n < 8; n++)//对发送值进行编码,16进制展开,从左到右判断是否为1{flag = (temp & 0x80) >> 7;//取最高位Serial.print(flag);Serial.print("");if (flag)//如果最高位为1,则高电平时间为800{digitalWrite(LED, HIGH);delayMicroseconds(800);digitalWrite(LED, LOW);delayMicroseconds(400);}else//如果最高位为0,则高电平时间为400{digitalWrite(LED, HIGH);delayMicroseconds(400);digitalWrite(LED, LOW);delayMicroseconds(800);}temp = temp << 1;//左移一位}Serial.println(" ");
}
void LEDover()//结束函数
{digitalWrite(LED, HIGH);Serial.println("OVER");
}
  • 接收端程序
#define LED 3//定义引脚为3
void setup()
{Serial.begin(9600);pinMode(LED, INPUT);//配置引脚为下拉输入digitalWrite(LED, LOW);
}void loop()
{LEDread();//读取函数
}unsigned int LED_us = 0;
unsigned int flag = 0, num = 0;
unsigned int rxBuf[] = {0, 1, 1, 0, 0, 0, 0, 1}, m = 0;
void LEDread()//读取3引脚高电平时间,并进行解码
{LED_us = pulseIn(LED, HIGH);//高电平时间Serial.print("LED_us-");Serial.print(LED_us);if (LED_us < 450 && LED_us > 350)//在此范围内该位为0{flag = 0;}else if (LED_us < 850 && LED_us > 750)//在此范围内该位为1{flag = 1;}else//距离不佳,调整距离{//Serial.println("Please change the distance");}Serial.print(" ");Serial.print("flag-");Serial.print(flag);Serial.print(" ");rxBuf[num] = flag;//把值存入rxBufnum++;//计数标志为加1LED_us = 0;if (num == 8)//如果到了8位,即可组成一个数据{for (int i = 0; i < 8; i++){if (rxBuf[i]){m +=  (1 << (7 - i));}}num = 0;Serial.println("  ");Serial.print("RX(HEX)");Serial.println(m & 0xff, HEX);m = 0;}
}

arduino led灯通讯相关推荐

  1. Arduino LED灯随着蜂鸣器音乐闪烁

    Arduino LED灯随着蜂鸣器音乐闪烁 所需组件: 开发板 面包板 LED灯 蜂鸣器 连接线 示意图: 接线方式: 3脚蜂鸣器: 1.GND接开发板的一个地口 2.VCC线接5V开发板5v电源 3 ...

  2. Arduino lED灯与开关控制学习

    Arduino LED灯随机亮起过程 LED广告灯类型 LDE广告灯绘图 Mixly模块代码 Arduino代码 LED灯与触碰开关使用 LED灯与触碰开关绘图 Mixly模块代码 Arduino代码 ...

  3. python自动化控制arduino_LattePandaAI-Python控制Arduino LED灯

    本帖最后由 铁甲小宝 于 2020-9-3 17:58 编辑 LattePanda&AI-Python控制Arduino LED灯 概述 --------------------------- ...

  4. LabVIEW控制Arduino LED灯闪烁(基础篇—2)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的数字I/O函数库,通过LabVIEW控制Arduino Uno控制板上D13管脚上LED灯,实现等间隔闪烁. ...

  5. arduino LED灯控制基础篇

    1  控制原理 arduino uno可以通过数字引脚和模拟引脚控制一个LED灯的亮灭.首先先介绍LED灯,LED有正负极之分,只需要一个高电平便可以点亮,那么就有朋友问了,arduino的5V/3. ...

  6. ROS-Ardunio 点亮LED灯

    ROS-Ardunio 点亮LED灯 说明: • 这个教程展示如何通过rosserial创建subscribers,点亮Arduino上的LED灯 • 例子来自Arduino IDE,File-> ...

  7. Arduino 编程 - LED灯闪烁

    Arduino 初级编程示例 硬件平台:使用Arduino Nano V3.2开发板. 软件平台:使用Arduino 官方 IDE. 硬件 I/O:D13. 示例:详细记录Arduino 控制LED灯 ...

  8. arduino串口监视器显示nan_Arduino小白的学习记录:双色LED灯实验

    一.介绍 双色发光二极管(LED)能够发出两种不同颜色的光,通常是红的和绿色的,而不是仅有一种颜色.它采用3mm或5mm环氧树脂封装.它有3个引脚,共阴极或者共阳极可用.双色LED具有两个LED端子或 ...

  9. 设置vmware vsphere web client_Arduino+前端高级应用-通过WEB网页控制Arduino开发板上的LED灯...

    在本教程中,让我们继续学习如何控制GPIO 引脚,不过这次进入高级阶段,我们将从一个可以访问的WEB网页中开关led灯.超详细代码解读,前端工程师也可以轻松玩起嵌入式.听起来是不很酷,Let's go ...

最新文章

  1. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
  2. 使用存储过程将文本导入数据库表
  3. linux没有pigz指令,Linux命令手册
  4. python教程-做个淘宝双十一满减攻略
  5. 防火墙(ASA)高级配置之URL过滤、日志管理、透明模式
  6. zpl指令打印中文内容_【初学指南】快速入门运维的高效指令~
  7. session的基本原理
  8. 关于使用 autoFac 的注入方法
  9. 计算机采用二进制码的优点
  10. 关于Windows mobile设备中心,同步软件不出现,打开卡住问题的解决
  11. 神经网络的反向传播算法推导
  12. 如何打开计算机用户账户控制面板,控制面板无法打开用户帐户
  13. Quartus将sof文件生成.jic文件固化进flash
  14. 【电路理论】2-6 线性电阻电路解答的存在性与惟一性定理
  15. 各类参数校验(身份证,手机号等)验证UTIL
  16. 导出Excel时出现80080005错误的解决办法
  17. catia v5r25 百度网盘_CATIA v5R21软件下载(sp0,p2及p3版)百度网盘
  18. win7系统安装信息服务器不可用怎么办,Win7系统RPC服务器不可用怎么办?
  19. 大数据面试题_Hive篇
  20. 整体大于部分_在整体与部分之间(2)

热门文章

  1. html用九张图片做出九宫图,九宫切图软件 如何快速把照片做成九宫格切图
  2. docker mysql5.7 设置不区分大小写
  3. 科学美国人》如何评价转基因?支持与反对之外的第三条道路
  4. Sort_1000pics数据集利用CNN实现图像分类
  5. python爬虫——链家苏州成交房价2
  6. 0x80004005
  7. 如何快速恢复最近关闭的浏览器标签页面
  8. week09_day0203_CSS
  9. telegram 新增 删除 联系人
  10. 2019,我的工作寻找之路