blob: ba063c2cd9a5302e7fd9a74221a70d22fcfb1079 (
plain)
- // SPDX-FileCopyrightText: 2025 Amal Mazrah <mazrah@ruc.dk>
- // SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk>
- // SPDX-FileCopyrightText: 2025 Mennatullah Hatim Kassim <stud-mennatulla@ruc.dk>
- // SPDX-FileCopyrightText: 2025 Noor Ahmad <noora@ruc.dk>
- // SPDX-FileCopyrightText: 2025 Tanishka Suwalka <tanishkas@ruc.dk>
- // SPDX-License-Identifier: GPL-3.0-or-later
- /// Mussel - a small library for Arduino to emulate a mussel biosensor
- ///
- /// @version 0.0.2
- /// @see <https://app.radicle.xyz/nodes/seed.radicle.garden/rad:z2tFBF4gN7ziG9oXtUytVQNYe3VhQ/tree/Mussel/README.md>
- /// @see <https://moodle.ruc.dk/course/view.php?id=23504>
- #ifndef Mussel_h
- #define Mussel_h
- #include "Arduino.h"
- // seconds
- #define MUSSEL_NORMAL_PACE 50U
- #define MUSSEL_STRESS_PACE 10U
- #define MUSSEL_VOTE_TIME_AHEAD 60000U // 1 minute
- #define MUSSEL_VOTE_TIME_BEHIND 120000U // 2 minutes
- // milliseconds
- #define MUSSEL_DEBOUNCE_DELAY 50U
- // Limited size NOW!! can be transformed into infinite array
- #define STACK_SIZE 1000
- struct Vote {
- String id;
- unsigned long timestamp;
- int measure;
- };
- class Mussel {
- public:
- // Default constructor
- Mussel(const int attitude);
- // Constructor for attitudes using an input pin
- Mussel(const int attitude, const uint8_t pin);
- // Constructor for attitudes using an input pin and a sensor type
- Mussel(
- const int attitude,
- const uint8_t pin,
- const uint8_t type);
- void begin();
- String desc();
- int read();
- String debug();
- bool push(String id, unsigned long timestamp, int measure);
- void printStack();
- bool qualifyVote(Vote vote, unsigned long currentTime);
- private:
- int _attitude;
- int _pin;
- bool _boolState;
- byte _count;
- unsigned long _time;
- #ifdef DHT_H
- DHT mussel_dht;
- #endif
- // Array to store ID strings
- String idStack[STACK_SIZE];
- unsigned long timeStack[STACK_SIZE];
- int measureStack[STACK_SIZE];
- // Index of the top element in the stack, -1 means stack is empty
- int top = -1;
- };
- #endif
|