英文:
Reading Temperature sensor values on GPIO's of RPi. steps
问题
我是Go语言的初学者,请告诉我如何在树莓派的GPIO上读取温度传感器的值,并将读取的模拟信号转换为数字值以显示电压。
英文:
I am beginner to Go language, please provide me steps to read temperature sensor values on gpio of rpi. and how to process the read analog signal in to digital values for displaying voltage.
答案1
得分: 1
从http://www.rpiblog.com/2012/11/reading-analog-values-from-digital-pins.html
>>"不幸的是,树莓派的所有17个引脚都是数字引脚,只能输出高电平或低电平。但是通过使用一个简单的电路(穷人的模拟/数字转换器),您可以使用单个GPIO引脚测量多个电平值。"
您可以按照该指南的类似方法进行操作,或者将AD转换器连接到您的树莓派上。
使用Dave Cheney的gpio
包读取值的实际过程包括将引脚设置为input
模式(示例代码都来自于包watch
示例)。
要将引脚设置为input
模式:
pin, err := gpio.OpenPin(gpio.GPIO22, gpio.ModeInput)
if err != nil {
fmt.Printf("打开引脚时出错!%s\n", err)
return
}
然后,通过在输入引脚上调用BeginWatch()
来获取高电平或低电平的值:
err = pin.BeginWatch(gpio.EdgeFalling, func() {
fmt.Printf("%d的回调被触发!\n\n", gpio.GPIO22)
})
if err != nil {
fmt.Printf("无法监听引脚:%s\n", err.Error())
os.Exit(1)
}
然后,可以使用第一个链接中概述的过程处理这些值,然后您需要创建正确的输出信号来驱动数字显示器(这些可能因型号、功能和其他因素而有很大差异。您需要查找您使用的显示器的参考资料)。
要将引脚设置为output
模式:
power, err := gpio.OpenPin(gpio.GPIO17, gpio.ModeOutput)
if err != nil {
fmt.Printf("打开引脚时出错!%s\n", err)
return
}
您可以使用Set()
设置输出引脚的值为高电平,使用Clear()
设置为低电平:
power.Set()
power.Clear()
使用完毕后不要忘记使用Close()
关闭引脚。
pin.Close()
power.Close()
英文:
From http://www.rpiblog.com/2012/11/reading-analog-values-from-digital-pins.html
>>"Unfortunately all the 17 pins of Raspberry Pi are digital which can either output HIGH or LOW. But by using a simple circuit (poor man's A/D converter) you can measure multiple level of values using a single GPIO pin."
You can either do something similar to that guide, or connect an AD converter to your Raspberry Pi.
The actual process of reading the values using Dave Cheney's gpio
package consists of setting the pin to input
mode (Example code is all from the package watch
example)
To set a pin to input
mode:
pin, err := gpio.OpenPin(gpio.GPIO22, gpio.ModeInput)
if err != nil {
fmt.Printf("Error opening pin! %s\n", err)
return
}
You would then get the HIGH or LOW values by calling BeginWatch()
on the input pin:
err = pin.BeginWatch(gpio.EdgeFalling, func() {
fmt.Printf("Callback for %d triggered!\n\n", gpio.GPIO22)
})
if err != nil {
fmt.Printf("Unable to watch pin: %s\n", err.Error())
os.Exit(1)
}
The values would then be processed using the procedure outlined in the first link, and then you would have to create the correct output signal to drive the digital display (These can differ greatly depending on model, capability and many other things. You'll need to look up the reference for the display you're using).
To set a pin to output
mode:
power, err := gpio.OpenPin(gpio.GPIO17, gpio.ModeOutput)
if err != nil {
fmt.Printf("Error opening pin! %s\n", err)
return
}
You would write the values to the output pins using Set()
for HIGH and Clear()
for LOW:
power.Set()
power.Clear()
Don't forget to Close()
the pins after use.
pin.Close()
power.Close()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论