Hi,
I have a gopigo and bought a Grove Temperature sensor v1.2. Based on the documentation and examples I inferred I should plug this sensor into the gopigo’s A1 analog port and could then read the sensor with this simple python script:
import grovepi
grovepi.temp(1,‘1.2’)
However this gives me the following
Traceback (most recent call last):
File “<pyshell#14>”, line 1, in
grovepi.temp(0,‘1.2’)
File “/home/pi/Desktop/GrovePi/Software/Python/grovepi.py”, line 237, in temp
a = analogRead(pin)
File “/home/pi/Desktop/GrovePi/Software/Python/grovepi.py”, line 214, in analogRead
bus.write_i2c_block_data(address, 1, aRead_cmd + [pin, unused, unused])
OSError: [Errno 5] Input/output error
Hi @jonathan-conning,
It looks like the Temperature Sensor code that you are using is of the GrovePi and would not work as such with GoPiGo. You will have to write your own code to read it from Port A1(Pin-15).
First you will have to import gopigo and math libraries then do analogRead(15) to read the analog values and finally follow the formulae given below to convert it to temperature readings. resistance = (float)(1023 - a) * 10000 / a temperature = (float) (1 / (math.log(resistance / 10000) / bValue + 1 / 298.15) - 273.15)
Note: a= Analog Value from the Sensor
bValue= 4250 for the Temperature Sensor V1.2
For any relative newbies like myself here is a simple python function that does the above to read the sensor temperature in centigrade
from gopigo import analogRead
from math import log
def read_temp():
B = 4250
a = analogRead(15)
resistance = (1023-a)*10000/a
temperature = 1/(log(resistance/10000)/B + 1/298.15)-273.15
return temperature
To then print out a temperature stream (one reading per second):
from time import sleep
white True:
print(read_temp())
time.sleep()
Indentation got lost in the paste… but you get the idea.