mcp3208 和 树莓派3b板子的配置以及对应代码

2024-06-07 12:58

本文主要是介绍mcp3208 和 树莓派3b板子的配置以及对应代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上连接图。
在这里插入图片描述
MCP3208 在2013年一位日本大佬的代码:
https://seinzumtode.hatenadiary.jp/entry/20130918/1379501130
针对MQ-X这类气体模块,用MQ-2去做实验(这个模块是可燃气体,那个打火机就能看出程序里的读数变化)。所以MQ2的AO的小针就是对应MCP3208上面的CH0的。
最后 如果再修改的好一点的话,关于pot move的这类代码其实在气体模块这里是用不到的,然后volume的意义针对气体模块其实应该重新整理公式去换算。

import time
import os
import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)
DEBUG = 1# read SPI data from MCP3208 chip, 8 possible adc's (0 thru 7)
def readadc(adcnum, clockpin, mosipin, misopin, cspin):if ((adcnum > 7) or (adcnum < 0)):return -1GPIO.output(cspin, True)GPIO.output(clockpin, False)  # start clock lowGPIO.output(cspin, False)     # bring CS lowcommandout = adcnumcommandout |= 0x18  # start bit + single-ended bitcommandout <<= 3    # we only need to send 5 bits herefor i in range(5):if (commandout & 0x80):GPIO.output(mosipin, True)else:GPIO.output(mosipin, False)commandout <<= 1GPIO.output(clockpin, True)GPIO.output(clockpin, False)adcout = 0# read in one empty bit, one null bit and 10 ADC bitsfor i in range(12):GPIO.output(clockpin, True)GPIO.output(clockpin, False)adcout <<= 1if (GPIO.input(misopin)):adcout |= 0x1GPIO.output(cspin, True)adcout >>= 1       # first bit is 'null' so drop itreturn adcout# change these as desired - they're the pins connected from the
# SPI port on the ADC to the Cobbler
#SPICLK = 18
#SPIMISO = 23
#SPIMOSI = 24
#SPICS = 25
# Above pin number seems not working. I modified the pin as below.
# See also: http://elinux.org/RPi_Low-level_peripherals
SPICLK = 11
SPIMISO = 9
SPIMOSI = 10
SPICS = 8# set up the SPI interface pins
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)# 10k trim pot connected to adc #0
potentiometer_adc = 0;last_read = 0       # this keeps track of the last potentiometer value
tolerance = 5       # to keep from being jittery we'll only change# volume when the pot has moved more than 5 'counts'while True:# we'll assume that the pot didn't movetrim_pot_changed = False# read the analog pintrim_pot = readadc(potentiometer_adc, SPICLK, SPIMOSI, SPIMISO, SPICS)# how much has it changed since the last read?pot_adjust = abs(trim_pot - last_read)if DEBUG:print "trim_pot:", trim_potprint "pot_adjust:", pot_adjustprint "last_read", last_readif ( pot_adjust > tolerance ):trim_pot_changed = Trueif DEBUG:print "trim_pot_changed", trim_pot_changedif ( trim_pot_changed ):# convert 12bit adc0 (0-4096) trim pot read into 0-100 volume levelset_volume = trim_pot / (10.24 * 4)set_volume = round(set_volume)          # round out decimal valueset_volume = int(set_volume)            # cast volume as integerprint 'Volume = {volume}%' .format(volume = set_volume)set_vol_cmd = 'sudo amixer cset numid=1 -- {volume}% > /dev/null' .format(volume = set_volume)os.system(set_vol_cmd)  # set volumeif DEBUG:print "set_volume", set_volumeprint "tri_pot_changed", set_volume# save the potentiometer reading for the next looplast_read = trim_pot# hang out and do nothing for a half secondtime.sleep(0.5)

这篇关于mcp3208 和 树莓派3b板子的配置以及对应代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039242

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是