//1
// #include "segment.pio.h"
// #include <stdio.h>
// #include <time.h>
// #define LDR_PIN 28
// uint8_t digits[] = {
// 0b11000000, // 0
// 0b11111001, // 1
// 0b10100100, // 2
// 0b10110000, // 3
// 0b10011001, // 4
// 0b10010010, // 5
// 0b10000010, // 6
// 0b11111000, // 7
// 0b10000000, // 8
// 0b10011000, // 9
// };
// const uint8_t first_segment_pin = 2;
// const uint8_t first_digit_pin = 10;
// const float GAMMA = 0.7;
// const float RL10 = 50;
// void setup() {
// Serial1.begin(115200);
// pinMode(LDR_PIN, INPUT);
// Serial1.println("Raspberry Pi Pico PIO 7-Segment Example");
// // Load the PIO program and initialize the machine
// auto offset = pio_add_program(pio0, &segment_program);
// segment_program_init(pio0, 0, offset, first_segment_pin, first_digit_pin);
// }
// void displayNumber(uint value) {
// pio_sm_put(pio0, 0,
// digits[value / 1000 % 10] << 24 |
// digits[value / 100 % 10] << 16 |
// digits[value / 10 % 10] << 8 |
// digits[value % 10]
// );
// }
// int i = 0;
// void loop() {
// // displayNumber(ldr);
// int measurements = 0;
// double sum = 0.0;
// time_t start_time = time(NULL);
// while (time(NULL) - start_time < 1) {
// int analogValue = analogRead(28);
// float voltage = analogValue / 1024. * 5;
// float resistance = 2000 * voltage / (1 - voltage / 5);
// float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
// sum += lux;
// measurements++;
// }
// // Підрахунок та виведення середнього значення
// if (measurements > 0) {
// double average = sum / measurements;
// Serial1.println("Середнє за 1 секунду: " + String(average));
// displayNumber(average);
// } else {
// Serial1.println("Немає даних для обробки");
// }
// }
//2
#include "segment.pio.h"
#include <stdio.h>
#include <time.h>
#define LDR_PIN 28
uint8_t digits[] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10011000, // 9
};
const uint8_t first_segment_pin = 2;
const uint8_t first_digit_pin = 10;
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial1.begin(115200);
pinMode(LDR_PIN, INPUT);
Serial1.println("Raspberry Pi Pico PIO 7-Segment Example");
// Load the PIO program and initialize the machine
auto offset = pio_add_program(pio0, &segment_program);
segment_program_init(pio0, 0, offset, first_segment_pin, first_digit_pin);
}
void displayNumber(uint value) {
pio_sm_put(pio0, 0,
digits[value / 1000 % 10] << 24 |
digits[value / 100 % 10] << 16 |
digits[value / 10 % 10] << 8 |
digits[value % 10]
);
}
int i = 0;
void loop() {
// displayNumber(ldr);
int measurements = 0;
double sum = 0.0;
time_t start_time = time(NULL);
while (time(NULL) - start_time < 5) {
int analogValue = analogRead(28);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
sum += lux;
measurements++;
}
// Підрахунок та виведення середнього значення
if (measurements > 0) {
double average = sum / measurements;
Serial1.println("Середнє за 5 секунд: " + String(average));
displayNumber(average);
} else {
Serial1.println("Немає даних для обробки");
}
}