LibDriver SHT4X
Loading...
Searching...
No Matches
driver_sht4x_read_test.c
Go to the documentation of this file.
1
36
38
39static sht4x_handle_t gs_handle;
40
50uint8_t sht4x_read_test(sht4x_address_t addr, uint32_t times)
51{
52 uint8_t res;
53 uint8_t num[4];
54 uint32_t i;
55 sht4x_info_t info;
56
57 /* link functions */
65
66 /* sht4x info */
67 res = sht4x_info(&info);
68 if (res != 0)
69 {
70 sht4x_interface_debug_print("sht4x: get info failed.\n");
71
72 return 1;
73 }
74 else
75 {
76 /* print chip information */
77 sht4x_interface_debug_print("sht4x: chip is %s.\n", info.chip_name);
78 sht4x_interface_debug_print("sht4x: manufacturer is %s.\n", info.manufacturer_name);
79 sht4x_interface_debug_print("sht4x: interface is %s.\n", info.interface);
80 sht4x_interface_debug_print("sht4x: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
81 sht4x_interface_debug_print("sht4x: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
82 sht4x_interface_debug_print("sht4x: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
83 sht4x_interface_debug_print("sht4x: max current is %0.2fmA.\n", info.max_current_ma);
84 sht4x_interface_debug_print("sht4x: max temperature is %0.1fC.\n", info.temperature_max);
85 sht4x_interface_debug_print("sht4x: min temperature is %0.1fC.\n", info.temperature_min);
86 }
87
88 /* start read test */
89 sht4x_interface_debug_print("sht4x: start read test.\n");
90
91 /* set address */
92 res = sht4x_set_addr(&gs_handle, addr);
93 if (res != 0)
94 {
95 sht4x_interface_debug_print("sht4x: set addr failed.\n");
96
97 return 1;
98 }
99
100 /* sht4x init */
101 res = sht4x_init(&gs_handle);
102 if (res != 0)
103 {
104 sht4x_interface_debug_print("sht4x: init failed.\n");
105
106 return 1;
107 }
108
109 /* get serial number */
110 res = sht4x_get_serial_number(&gs_handle, num);
111 if (res != 0)
112 {
113 sht4x_interface_debug_print("sht4x: get serial number failed.\n");
114 (void)sht4x_deinit(&gs_handle);
115
116 return 1;
117 }
118
119 /* output */
120 sht4x_interface_debug_print("sht4x: serial number is 0x%02X 0x%02X 0x%02X 0x%02X.\n", num[0], num[1], num[2], num[3]);
121
122 /* wait 1000 ms */
124
125 /* output */
126 sht4x_interface_debug_print("sht4x: high precision without heater.\n");
127
128 /* loop */
129 for (i = 0; i < times; i++)
130 {
131 uint16_t temperature_raw;
132 float temperature_s;
133 uint16_t humidity_raw;
134 float humidity_s;
135
136 /* read data */
138 (uint16_t *)&temperature_raw, (float *)&temperature_s,
139 (uint16_t *)&humidity_raw, (float *)&humidity_s);
140 if (res != 0)
141 {
142 sht4x_interface_debug_print("sht4x: read failed.\n");
143 (void)sht4x_deinit(&gs_handle);
144
145 return 1;
146 }
147 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
148 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
149
150 /* wait 1000 ms */
152 }
153
154 /* wait 1000 ms */
156
157 /* output */
158 sht4x_interface_debug_print("sht4x: medium precision without heater.\n");
159
160 /* loop */
161 for (i = 0; i < times; i++)
162 {
163 uint16_t temperature_raw;
164 float temperature_s;
165 uint16_t humidity_raw;
166 float humidity_s;
167
168 /* read data */
170 (uint16_t *)&temperature_raw, (float *)&temperature_s,
171 (uint16_t *)&humidity_raw, (float *)&humidity_s);
172 if (res != 0)
173 {
174 sht4x_interface_debug_print("sht4x: read failed.\n");
175 (void)sht4x_deinit(&gs_handle);
176
177 return 1;
178 }
179 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
180 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
181
182 /* wait 1000 ms */
184 }
185
186 /* wait 1000 ms */
188
189 /* output */
190 sht4x_interface_debug_print("sht4x: lowest precision without heater.\n");
191
192 /* loop */
193 for (i = 0; i < times; i++)
194 {
195 uint16_t temperature_raw;
196 float temperature_s;
197 uint16_t humidity_raw;
198 float humidity_s;
199
200 /* read data */
202 (uint16_t *)&temperature_raw, (float *)&temperature_s,
203 (uint16_t *)&humidity_raw, (float *)&humidity_s);
204 if (res != 0)
205 {
206 sht4x_interface_debug_print("sht4x: read failed.\n");
207 (void)sht4x_deinit(&gs_handle);
208
209 return 1;
210 }
211 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
212 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
213
214 /* wait 1000 ms */
216 }
217
218 /* wait 1000 ms */
220
221 /* output */
222 sht4x_interface_debug_print("sht4x: activate heater with 200mW for 1s, high precision.\n");
223
224 /* loop */
225 for (i = 0; i < times; i++)
226 {
227 uint16_t temperature_raw;
228 float temperature_s;
229 uint16_t humidity_raw;
230 float humidity_s;
231
232 /* read data */
234 (uint16_t *)&temperature_raw, (float *)&temperature_s,
235 (uint16_t *)&humidity_raw, (float *)&humidity_s);
236 if (res != 0)
237 {
238 sht4x_interface_debug_print("sht4x: read failed.\n");
239 (void)sht4x_deinit(&gs_handle);
240
241 return 1;
242 }
243 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
244 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
245
246 /* wait 1000 ms */
248 }
249
250 /* wait 1000 ms */
252
253 /* output */
254 sht4x_interface_debug_print("sht4x: activate heater with 200mW for 0.1s, high precision.\n");
255
256 /* loop */
257 for (i = 0; i < times; i++)
258 {
259 uint16_t temperature_raw;
260 float temperature_s;
261 uint16_t humidity_raw;
262 float humidity_s;
263
264 /* read data */
266 (uint16_t *)&temperature_raw, (float *)&temperature_s,
267 (uint16_t *)&humidity_raw, (float *)&humidity_s);
268 if (res != 0)
269 {
270 sht4x_interface_debug_print("sht4x: read failed.\n");
271 (void)sht4x_deinit(&gs_handle);
272
273 return 1;
274 }
275 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
276 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
277
278 /* wait 1000 ms */
280 }
281
282 /* wait 1000 ms */
284
285 /* output */
286 sht4x_interface_debug_print("sht4x: activate heater with 110mW for 1s, high precision.\n");
287
288 /* loop */
289 for (i = 0; i < times; i++)
290 {
291 uint16_t temperature_raw;
292 float temperature_s;
293 uint16_t humidity_raw;
294 float humidity_s;
295
296 /* read data */
298 (uint16_t *)&temperature_raw, (float *)&temperature_s,
299 (uint16_t *)&humidity_raw, (float *)&humidity_s);
300 if (res != 0)
301 {
302 sht4x_interface_debug_print("sht4x: read failed.\n");
303 (void)sht4x_deinit(&gs_handle);
304
305 return 1;
306 }
307 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
308 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
309
310 /* wait 1000 ms */
312 }
313
314 /* wait 1000 ms */
316
317 /* output */
318 sht4x_interface_debug_print("sht4x: activate heater with 110mW for 0.1s, high precision.\n");
319
320 /* loop */
321 for (i = 0; i < times; i++)
322 {
323 uint16_t temperature_raw;
324 float temperature_s;
325 uint16_t humidity_raw;
326 float humidity_s;
327
328 /* read data */
330 (uint16_t *)&temperature_raw, (float *)&temperature_s,
331 (uint16_t *)&humidity_raw, (float *)&humidity_s);
332 if (res != 0)
333 {
334 sht4x_interface_debug_print("sht4x: read failed.\n");
335 (void)sht4x_deinit(&gs_handle);
336
337 return 1;
338 }
339 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
340 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
341
342 /* wait 1000 ms */
344 }
345
346 /* wait 1000 ms */
348
349 /* output */
350 sht4x_interface_debug_print("sht4x: activate heater with 20mW for 1s, high precision.\n");
351
352 /* loop */
353 for (i = 0; i < times; i++)
354 {
355 uint16_t temperature_raw;
356 float temperature_s;
357 uint16_t humidity_raw;
358 float humidity_s;
359
360 /* read data */
362 (uint16_t *)&temperature_raw, (float *)&temperature_s,
363 (uint16_t *)&humidity_raw, (float *)&humidity_s);
364 if (res != 0)
365 {
366 sht4x_interface_debug_print("sht4x: read failed.\n");
367 (void)sht4x_deinit(&gs_handle);
368
369 return 1;
370 }
371 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
372 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
373
374 /* wait 1000 ms */
376 }
377
378 /* wait 1000 ms */
380
381 /* output */
382 sht4x_interface_debug_print("sht4x: activate heater with 20mW for 0.1s, high precision.\n");
383
384 /* loop */
385 for (i = 0; i < times; i++)
386 {
387 uint16_t temperature_raw;
388 float temperature_s;
389 uint16_t humidity_raw;
390 float humidity_s;
391
392 /* read data */
394 (uint16_t *)&temperature_raw, (float *)&temperature_s,
395 (uint16_t *)&humidity_raw, (float *)&humidity_s);
396 if (res != 0)
397 {
398 sht4x_interface_debug_print("sht4x: read failed.\n");
399 (void)sht4x_deinit(&gs_handle);
400
401 return 1;
402 }
403 sht4x_interface_debug_print("sht4x: temperature is %0.2fC.\n", temperature_s);
404 sht4x_interface_debug_print("sht4x: humidity is %0.2f%%.\n", humidity_s);
405
406 /* wait 1000 ms */
408 }
409
410 /* output */
411 sht4x_interface_debug_print("sht4x: soft reset.\n");
412
413 /* soft reset */
414 res = sht4x_soft_reset(&gs_handle);
415 if (res != 0)
416 {
417 sht4x_interface_debug_print("sht4x: soft reset failed.\n");
418 (void)sht4x_deinit(&gs_handle);
419
420 return 1;
421 }
422
423 /* finish read test */
424 sht4x_interface_debug_print("sht4x: finish read test.\n");
425 (void)sht4x_deinit(&gs_handle);
426
427 return 0;
428}
driver sht4x read test header file
uint8_t sht4x_read(sht4x_handle_t *handle, sht4x_mode_t mode, uint16_t *temperature_raw, float *temperature_s, uint16_t *humidity_raw, float *humidity_s)
read temperature and humidity
struct sht4x_handle_s sht4x_handle_t
sht4x handle structure definition
uint8_t sht4x_get_serial_number(sht4x_handle_t *handle, uint8_t num[4])
get serial number
struct sht4x_info_s sht4x_info_t
sht4x information structure definition
sht4x_address_t
sht4x address enumeration definition
uint8_t sht4x_set_addr(sht4x_handle_t *handle, sht4x_address_t addr)
set the iic address
uint8_t sht4x_init(sht4x_handle_t *handle)
initialize the chip
uint8_t sht4x_soft_reset(sht4x_handle_t *handle)
soft reset the chip
uint8_t sht4x_info(sht4x_info_t *info)
get chip's information
uint8_t sht4x_deinit(sht4x_handle_t *handle)
close the chip
@ SHT4X_MODE_HIGH_PRECISION_WITH_NO_HEATER
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_110MW_1S
@ SHT4X_MODE_MEDIUM_PRECISION_WITH_NO_HEATER
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_20MW_0P1S
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_200MW_1S
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_200MW_0P1S
@ SHT4X_MODE_LOWEST_PRECISION_WITH_NO_HEATER
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_110MW_0P1S
@ SHT4X_MODE_HIGH_PRECISION_WITH_HEATER_20MW_1S
uint8_t sht4x_interface_iic_init(void)
interface iic bus init
void sht4x_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t sht4x_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
uint8_t sht4x_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
uint8_t sht4x_interface_iic_deinit(void)
interface iic bus deinit
void sht4x_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t sht4x_read_test(sht4x_address_t addr, uint32_t times)
read test
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]