Update Measurement sketches

This commit is contained in:
Phillip Kühne 2025-02-03 20:58:00 +01:00
parent b57e955dc2
commit 9acca9e5c7
Signed by: phillip
GPG Key ID: E4C1C4D2F90902AA
4 changed files with 109 additions and 5 deletions

View File

@ -9,15 +9,26 @@ void setup() {
dezibot.infraredLight.begin();
}
void blink_times(int times) {
constexpr int ioPin = 17;
pinMode(ioPin, OUTPUT);
for(int i = 0; i<times; i++) {
digitalWrite(ioPin,1);
delay(300);
digitalWrite(ioPin,0);
delay(300);
}
}
void loop() {
// put your main code here, to run repeatedly:
// Just turn the lights on alternating each five seconds, to get the consumption
dezibot.infraredLight.front.turnOn();
blink_times(1);
delay(cycleMillis);
dezibot.infraredLight.front.turnOff();
dezibot.infraredLight.bottom.turnOn();
delay(cycleMillis);
//Turn off and wait a little to measure baseline consumption
blink_times(2);
dezibot.infraredLight.bottom.turnOff();
delay(cycleMillis);
}

View File

@ -0,0 +1,80 @@
#include <Adafruit_NeoPixel.h>
/*
WARNING: This example controls the RGB-LEDs directly, bypassing the
MultiColorLight component. This is not recommended for normal use, as it
bypasses the safety checks and color normalization. This is only intended
for diagnostic purposes.
*/
Adafruit_NeoPixel rgbLeds(3, 48);
void setup() { rgbLeds.begin(); }
void loop() {
// Ramp up the brightness of each color channel
// Allows for the PWM behaviour to quickly be observed on an oscilloscope
// Red
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(bri, 0, 0));
rgbLeds.show();
delay(10);
}
// Red
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(0, bri, 0));
rgbLeds.show();
delay(10);
}
// Blue
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(0, 0, bri));
rgbLeds.show();
delay(10);
}
// Combinations of the color channels
// Yellow (Red + Green)
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(bri, bri, 0));
rgbLeds.show();
delay(10);
}
// Purple (Red + Blue)
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(bri, 0, bri));
rgbLeds.show();
delay(10);
}
// Cyan (Green + Blue)
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(0, bri, bri));
rgbLeds.show();
delay(10);
}
// White (Red + Green + Blue)
for (int bri = 0; bri < 0xFF; bri += 0x1) {
rgbLeds.setPixelColor(0, rgbLeds.Color(bri, bri, bri));
rgbLeds.show();
delay(10);
}
// Now some constant states for comparable measurements
// Full brightness R+G+B
rgbLeds.setPixelColor(0, rgbLeds.Color(255, 255, 255));
rgbLeds.show();
sleep(5);
// Half brightness R+G+B
rgbLeds.setPixelColor(0, rgbLeds.Color(127, 127, 127));
rgbLeds.show();
sleep(5);
// Minimum brightness R+G+B
rgbLeds.setPixelColor(0, rgbLeds.Color(1, 1, 1));
rgbLeds.show();
sleep(5);
// Off (baseline)
rgbLeds.setPixelColor(0, rgbLeds.Color(0, 0, 0));
rgbLeds.show();
sleep(5);
}

View File

@ -3,7 +3,7 @@
Dezibot dezibot;
void setup() {
dezibot.lightDetection.begin();
dezibot.colorDetection.begin();
//dezibot.motion.detection.end();
// put your setup code here, to run once:
Serial.begin(115200);
@ -13,7 +13,7 @@ void setup() {
}
delay(1000);
// Test if VEML6040 is working correctly
char light_value = dezibot.lightDetection.getValue(DL_FRONT);
char light_value = dezibot.colorDetection.getColorValue(VEML_WHITE);
if (light_value != UINT16_MAX) {
Serial.printf("Light detection seems to be working (detected value: %d). Starting measurements...\r\n", light_value);
} else {
@ -29,6 +29,6 @@ void setup() {
void loop() {
// put your main code here, to run repeatedly:
dezibot.lightDetection.getValue(DL_FRONT);
dezibot.colorDetection.getColorValue(VEML_WHITE);
delay(10);
}

View File

@ -3,6 +3,17 @@
Dezibot dezibot = Dezibot();
void blip_io(int times) {
constexpr int ioPin = 17;
pinMode(ioPin, OUTPUT);
for(int i = 0; i<times; i++) {
digitalWrite(ioPin,1);
delay(500);
digitalWrite(ioPin,0);
delay(500);
}
}
void setup() {
#ifdef DEBUG
Serial.begin(112500);
@ -18,10 +29,12 @@ void setup() {
Serial.println("Set up receive. Printing incoming messages:");
Serial.println("Sending broadcast messages to generate TX power consumption:");
#endif
blip_io(1);
delay(5000);
#ifdef DEBUG
Serial.println("Starting Transmission...");
#endif
blip_io(2);
}
void handle_receive(String &message) {