forked from EmbeddedTeam/app_photomagnetic
Add debug logging and fix minor issues
Add printk debug statements to NTC temperature sensor reading and IR temperature sensor reading. Change NTC loop to use index-based iteration. Fix missing newline in boot message. Remove unused watchdog and commented-out code.
This commit is contained in:
parent
eaa5d0c28b
commit
aed11ecee8
24
dts/bindings/pwm-servo.yaml
Normal file
24
dts/bindings/pwm-servo.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Copyright (c) 2022 Nordic Semiconductor ASA
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
description: PWM-driven servo motor.
|
||||||
|
|
||||||
|
compatible: "pwm-servo"
|
||||||
|
|
||||||
|
include: base.yaml
|
||||||
|
|
||||||
|
properties:
|
||||||
|
pwms:
|
||||||
|
required: true
|
||||||
|
type: phandle-array
|
||||||
|
description: PWM specifier driving the servo motor.
|
||||||
|
|
||||||
|
min-pulse:
|
||||||
|
required: true
|
||||||
|
type: int
|
||||||
|
description: Minimum pulse width (nanoseconds).
|
||||||
|
|
||||||
|
max-pulse:
|
||||||
|
required: true
|
||||||
|
type: int
|
||||||
|
description: Maximum pulse width (nanoseconds).
|
||||||
@ -3,6 +3,7 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <zephyr/device.h>
|
#include <zephyr/device.h>
|
||||||
#include <zephyr/drivers/sensor.h>
|
#include <zephyr/drivers/sensor.h>
|
||||||
|
#include <zephyr/sys/printk.h>
|
||||||
#include <zpp/result.hpp>
|
#include <zpp/result.hpp>
|
||||||
|
|
||||||
namespace ther {
|
namespace ther {
|
||||||
@ -15,16 +16,22 @@ public:
|
|||||||
bool found = false;
|
bool found = false;
|
||||||
sensor_value max_val{};
|
sensor_value max_val{};
|
||||||
|
|
||||||
for (const auto *dev : s_devices) {
|
for (size_t i = 0; i < NTC_COUNT; ++i) {
|
||||||
|
const auto *dev = s_devices[i];
|
||||||
|
|
||||||
if (0 != sensor_sample_fetch(dev)) {
|
if (0 != sensor_sample_fetch(dev)) {
|
||||||
|
printk("[ntc] #%zu ERR fetch\n", i + 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
sensor_value val{};
|
sensor_value val{};
|
||||||
if (0 != sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &val)) {
|
if (0 != sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &val)) {
|
||||||
|
printk("[ntc] #%zu ERR channel_get\n", i + 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printk("[ntc]#%zu = %d.%d°C\n", i + 1, val.val1, val.val2);
|
||||||
|
|
||||||
if (!found || val.val1 > max_val.val1 ||
|
if (!found || val.val1 > max_val.val1 ||
|
||||||
(val.val1 == max_val.val1 && val.val2 > max_val.val2)) {
|
(val.val1 == max_val.val1 && val.val2 > max_val.val2)) {
|
||||||
max_val = val;
|
max_val = val;
|
||||||
@ -40,6 +47,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static constexpr size_t NTC_COUNT = 8;
|
||||||
|
|
||||||
inline static const device *s_devices[] = {
|
inline static const device *s_devices[] = {
|
||||||
DEVICE_DT_GET(DT_NODELABEL(pole_ntc1)),
|
DEVICE_DT_GET(DT_NODELABEL(pole_ntc1)),
|
||||||
DEVICE_DT_GET(DT_NODELABEL(pole_ntc2)),
|
DEVICE_DT_GET(DT_NODELABEL(pole_ntc2)),
|
||||||
|
|||||||
@ -26,6 +26,7 @@ auto GetmaxTemp() -> std::optional<sensor_value> {
|
|||||||
if (0 == sensor_sample_fetch_chan(infrared, SENSOR_CHAN_AMBIENT_TEMP)) {
|
if (0 == sensor_sample_fetch_chan(infrared, SENSOR_CHAN_AMBIENT_TEMP)) {
|
||||||
if (0 ==
|
if (0 ==
|
||||||
sensor_channel_get(infrared, SENSOR_CHAN_AMBIENT_TEMP, &ir_val)) {
|
sensor_channel_get(infrared, SENSOR_CHAN_AMBIENT_TEMP, &ir_val)) {
|
||||||
|
printk("[ir] = %d.%d°C\n", ir_val.val1, ir_val.val2);
|
||||||
if (!found || ir_val.val1 > max_val.val1 ||
|
if (!found || ir_val.val1 > max_val.val1 ||
|
||||||
(ir_val.val1 == max_val.val1 && ir_val.val2 > max_val.val2)) {
|
(ir_val.val1 == max_val.val1 && ir_val.val2 > max_val.val2)) {
|
||||||
max_val = ir_val;
|
max_val = ir_val;
|
||||||
@ -40,11 +41,10 @@ auto GetmaxTemp() -> std::optional<sensor_value> {
|
|||||||
} // namespace
|
} // namespace
|
||||||
auto main(void) -> int {
|
auto main(void) -> int {
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
printk("app on board %s", CONFIG_BOARD);
|
printk("app on board %s\n", CONFIG_BOARD);
|
||||||
// auto wdt = app::WatchDogConfig{};
|
// auto wdt = app::WatchDogConfig{};
|
||||||
StatusLed::Flash(1s);
|
StatusLed::Flash(1s);
|
||||||
ther::Com::Init();
|
ther::Com::Init();
|
||||||
// ther::HeatingPad::Start();
|
|
||||||
ther::HeatingPad::Start(sensor_value{42, 0});
|
ther::HeatingPad::Start(sensor_value{42, 0});
|
||||||
sensor_trigger tri{.type = SENSOR_TRIG_DATA_READY,
|
sensor_trigger tri{.type = SENSOR_TRIG_DATA_READY,
|
||||||
.chan = SENSOR_CHAN_AMBIENT_TEMP};
|
.chan = SENSOR_CHAN_AMBIENT_TEMP};
|
||||||
@ -56,8 +56,7 @@ auto main(void) -> int {
|
|||||||
if (auto v = GetmaxTemp(); v.has_value()) {
|
if (auto v = GetmaxTemp(); v.has_value()) {
|
||||||
ther::Com::Send(v.value());
|
ther::Com::Send(v.value());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// wdt.Feed();
|
|
||||||
k_sleep(K_MSEC(20));
|
k_sleep(K_MSEC(20));
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user