linux读取ads1115ADC例程

linux读取ads1115ADC例程硬件接口 i2c 应用电路程序 ads1115 c include stdio h include stdlib h include sys types h include sys stat h include fcntl h include string h include linux i2c h include linux i2c dev h static linux linux string h fcntl h sys sys stdlib h stdio h

程序‘

ads1115.c

#include  
     #include  
     #include  
     #include  
     #include  
     #include  
     #include  
     #include  
     static int fd = 0; //初始化i2c //i2c_dev设备文件 i2c_addr 设备地址  //返回 0 int i2c_init(char *i2c_dev, unsigned char i2c_addr) { 
    int res = 0; fd = open(i2c_dev, O_RDWR); if(fd < 0) { 
    printf("[%s]:[%d] open i2c file error\r\n", __FUNCTION__, __LINE__); return -1; } res = ioctl(fd,I2C_TENBIT,0); //7位模式  res = ioctl(fd,I2C_SLAVE, (i2c_addr >> 1)); //设置I2C从设备地址 return res; } //读i2c //buf数据 len长度  //返回 实际读取的长度  int i2c_readNbyte(unsigned char *buf, int len) { 
    int res = 0; res = read(fd, buf,len); return res; } //写i2c //buf数据 len长度  //返回 实际写的长度  int i2c_writeNbyte(unsigned char *buf, int len) { 
    int res = 0; res = write(fd, buf,len); return res; } int i2c_readReg(unsigned int reg_addr, unsigned char *buf, int len) { 
    int res = 0; unsigned char buff[2]; buff[0] = reg_addr >> 8; buff[1] = reg_addr & 0xff; write(fd, buff, 2); res = read(fd, buf,len); return res; } int i2c_writeReg(unsigned int reg_addr, unsigned char *buf, int len) { 
    int res = 0,i; unsigned char *buff = 0; buff = (unsigned char *)malloc((len+2)); buff[0] = reg_addr >> 8; buff[1] = reg_addr & 0xff; for(i = 0; i < len; i++) buff[(i+2)] = buf[i]; res = write(fd, buff, (len+2)); free(buff); return res; } int i2c_close() { 
    close(fd); return 0; } int adc_init() { 
    int ret = 0; i2c_init("/dev/i2c-1", 0x90); return ret; } int adc_read() { 
    int ret = 0; const unsigned char read_cmd[] = { 
   0x01, 0x8b, 0x83}; const unsigned char read_reg = 0x00; unsigned char read_buff[20] = { 
   0}; i2c_writeNbyte(read_cmd, 3); usleep(200); i2c_writeNbyte(&read_reg, 3); i2c_readNbyte(read_buff, 2); ret = read_buff[0] * 256 + read_buff[1]; return ret; } 

ads1115.h

#ifndef __ADC_H #define __ADC_H int adc_init(); int adc_read(); #endif 

调用

int read_weight(int *value) { 
    static char state = 0; if (state == 0) { 
    adc_init(); state = 1; } *value = adc_read(); return 0; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227533.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:06
下一篇 2026年3月16日 下午9:06


相关推荐

  • Navigator对象,获取浏览器类型userAgent,机器类型platform

    Navigator对象,获取浏览器类型userAgent,机器类型platformJavaScript常用事件集合,前端小白必备(写的很详细,建议收藏)1.文档加载事件鼠标事件获取浏览器类型,手机机型(容易出问题的地方)事件冒泡与事件委托(面试重点)一、获取浏览器类型letuserAgent=navigator.userAgent;console.log(userAgent);if(userAgent.indexOf(“Opera”)>-1){ //判断是否是Opera浏览器console.log(“Opera”);};

    2025年10月26日
    4
  • WRK简介

    WRK简介什么是 WRK nbsp WRK 的全称是 WindowsResea 它是微软为高校操作系统课程提供的可修改和跟踪的操作系统教学平台 它给出了 Windows 这个成功的商业操作系统的内核大部分代码 可以对其进行修改 编译 并且可以用这个内核启动 Windows 操作系统 可让学生将操作系统基本原理和商业操作系统内核联系起来 进一步加深对操作系统整体的理解 nbsp WRK 的特点功能介绍 nbsp 在本科的操

    2026年3月16日
    2
  • VS2015激活 密钥

    VS2015激活 密钥专业版 HMGNV WCYXV X7G9W YCX63 B98R2 企业版 HM6NR QXX7C DFW2Y 8B82K WTYJV

    2026年3月19日
    1
  • 精确移相电路的设计举例

    精确移相电路的设计举例移相电路就是对输入信号 一般是正弦波 进行相位控制 而不改变其幅度 本推文以移相电路为例 展示模拟电路的反馈设计技巧与方法 一 全通滤波器实现移相以上是两种移相电路的原理 其输出幅度保持不变 移动的相位随 R3 和 C 而改变 在 C 和 R3 确定时其移相是 arctan 函数 非线性的 当 WR3C 较小时 近似线性 arctan x x x lt 0 5 仿真伯德特的相位如下 上图可见 在 WR3C 较小时 是线性相移 即确定最最高频率 Wmax 后可以反向计算 R3C lt 0 5 Wmax 确定线性相移应用的

    2026年3月19日
    3
  • 什么是TCC?_tc部门是什么意思

    什么是TCC?_tc部门是什么意思假设现在有一个电商系统,里面有一个支付订单的场景,那对一个订单支付之后,我们需要做下面的步骤 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 业务场景有了,现在要更进一步,实现一个TCC分布式事务的效果,也就是说,订单服务-修改订单状态,库存服务-扣减库存,积分服务-增加积分,仓储服务-创建销售出库单,上述这几个步骤,要么一起成功,要么一起失败,必须是一个整体性的事务举个例子,现在订单的状态都修

    2022年4月20日
    236
  • HTML5:移动端开发入门[通俗易懂]

    HTML5:移动端开发入门[通俗易懂]HTML5:移动端开发入门一、前言常见的移动端开发分为移动版网站和响应式设计。移动端开发可以让技术人员专注于移动端的页面优化,而无需在意桌面版的兼容,但页面一旦改动内容,维护成本就翻倍了;响应式设计让开发人员只需维护一份项目,节省开发和维护成本,不过缺点是需要做好移动端和桌面端的兼容,也十分考验页面设计。两种开发方式孰强孰弱,暂无定论,本博客主要探讨一下移动端开发的技巧。二、移动端开发技巧1.Viewport设置传统桌面端网站的显示窗口往往都是在1024X768的分

    2022年6月21日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号