ΠΠΎ Π΄Π΅Π½Π΅ΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ° ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Π°ΠΌ ΡΠΎ Π²Π°Ρ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ²ΠΎΡ ΠΏΠ°Ρ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρ Π½Π° Π΄ΠΎΠΏΠΈΡ ΡΠΎ ΡΡΠ°ΠΊΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π». Π£ΡΠ΅Π΄ΠΎΡ Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½, ΡΠΎ Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈ 42x42mm (ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅ ΡΡΠ°ΠΊΠ»Π΅Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠΌΠ°Π°Ρ Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈ 80x80mm). ΠΡΡΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ ΡΡΠ΅Π΄ Π·Π°ΠΏΠΎΡΠ½Π° ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ΄Π°ΠΌΠ½Π°, ΠΏΡΠ΅Π΄ ΠΎΠΊΠΎΠ»Ρ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°.
ΠΡΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π±Π΅Π° Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΎΡ atmega328, Π½ΠΎ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΡΠ΅ Π·Π°Π²ΡΡΠΈ ΡΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΎΡ nRF52832.
ΠΠ΅Π»ΠΎΡ Π½Π° Π΄ΠΎΠΏΠΈΡ Π½Π° ΡΡΠ΅Π΄ΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ TTP223. Π Π΄Π²Π°ΡΠ° ΡΠ΅Π½Π·ΠΎΡΠΈ ΡΠ΅ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°Π°Ρ ΡΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠ΅ΠΊΠΈΠ½. Π‘Π΅ Π½Π°ΠΏΠΎΡΡΠ²Π° ΡΠΎ Π±Π°ΡΠ΅ΡΠΈΡΠ° CR2477, ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡ Π·Π° Π·Π°ΡΠΈΠ»ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΡ TPS610981 |
Π£ΡΠ΅Π΄ΠΎΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΊΠΎΠ»ΠΎ Π·Π° ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠΈ ΡΠΎ Π΅ΡΠ΅ΠΊΡ Π½Π° ΠΏΠΎΠ»Π΅. ΠΠΎ ΠΏΡΠΈΡΠΈΡΠΊΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΏΡΠ΅ΡΠΎ, ΡΠ°ΠΌΠΈΠΎΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΡΠ° ΠΏΡΠ΅ΡΡΠ΅ΡΠ½ΡΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° Π½Π° Π½Π°ΠΏΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΠΏΠΎΡΠΎΠ° ΠΊΠΎΠΏΡΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ°ΡΠ΅ (Π²ΠΎ ΠΌΠΎΡΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΠΎΠ²Π° Π΅ ΡΠΏΠ°ΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½Π°ΠΏΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΡΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π±ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ).
ΠΠΌΠ° 2 rgb LED Π΄ΠΈΠΎΠ΄ΠΈ Π·Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ±ΠΈ ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° ΡΡΠ»ΡΠ³Π°. ΠΠΎΠ΄Π°Π΄Π΅Π½ Π΅ ΠΈ ΠΏΠΈΠ΅Π·ΠΎ Π΅ΠΌΠΈΡΠ΅Ρ Π·Π° Π΄Π° ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ° ΠΊΠ»ΠΈΠΊ ΠΏΡΠΈ Π΄ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΏΡΠΈΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΏΠΈΡ ΠΈ Π·Π²ΡΡΠ½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°. LED Π΄ΠΈΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΏΠΈΠ΅Π·ΠΎ Π΅ΠΌΠΈΡΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΈ ΠΈΡΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΏΠΎ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. ΠΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΡΠΎΡ Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠΌΠΎΠ²ΠΈ ΡΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π½Π·ΠΎΡΠΈ, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈΡΠ΅ Π·Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠΎΠ»Π½Π΅ΡΠ΅ Π½Π° Π±Π°ΡΠ΅ΡΠΈΡΠ°ΡΠ° ΠΈ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΎΡ, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΎΡ Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠΌΠΎΠ²ΠΈ. ΠΠΎ ΠΌΠΎΡΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ° Π΅
ΠΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠ΅Π½ΠΎΡ Π΅ 7mA (250kbit, 10ms), ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°ΡΠ° Π²ΠΎ ΠΌΠΈΡΡΠ²Π°ΡΠ΅ Π΅ 40Β΅A, ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°ΡΠ° Π²ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π° ΡΠΎΡΡΠΎΡΠ±Π° Π΅ ΠΏΠΎΠΌΠ°Π»Π° ΠΎΠ΄ 1Β΅A (=ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ° Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠΎΡ Π·Π° Π·Π°ΡΠΈΠ»ΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ βΠ½Π΅Π°ΠΊΡΠΈΠ²Π΅Π½β). ΠΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ Π΅ Rx, tx, swd ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠΈΠ½ΠΈΡΠ°ΡΡΡΠ΅Π½ 2x3p ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡ ΡΠΎ ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ 1.27. Π‘ΠΏΠ΅ΡΠΈΡΠ°Π»Π΅Π½ Π°Π΄Π°ΠΏΡΠ΅Ρ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅.
ΠΠ°ΠΊΠΎ ΠΈ ΡΠ΅ΠΊΠΎΠ³Π°Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΠ΅Π΄ΠΎΡ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ
ΠΡΡΠΈΡΡΠ΅ΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠ΅ΡΠ΅ Π½Π° SLA ΠΏΠ΅ΡΠ°ΡΠ°Ρ, ΡΡΠ΅Π΄ΠΎΡ Π΅ ΠΌΠΈΠ½ΠΈΡΠ°ΡΡΡΠ΅Π½, ΠΊΡΡΠΈΡΡΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠΎ ΠΌΠ°Π»ΠΎ, ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΎΠ²Π°Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° ΠΏΠ΅ΡΠ°ΡΠ΅ΡΠ΅ Π΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π°.
ΠΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π³ΠΎ ΠΏΠ΅ΡΠ°ΡΠ΅Π½ΠΈΠΎΡ ΠΌΠΎΠ΄Π΅Π»
ΠΠ°Π³Π½Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π·Π°Π»Π΅ΠΏΠ΅Π½ΠΈ Π²ΠΎ ΠΊΡΡΠΈΡΡΠ΅ΡΠΎ ΠΈ ΠΊΠ°ΠΏΠ°ΠΊΠΎΡ Π½Π° ΠΏΡΠ΅Π³ΡΠ°Π΄Π°ΡΠ° Π·Π° Π±Π°ΡΠ΅ΡΠΈΠΈ.
ΠΠΈΠ΄Π΅Π° ΡΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π½Π° ΠΎΠ²ΠΎΡ ΡΡΠ΅Π΄:
ΠΠ° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° ΠΏΠΎΠ²ΡΠΎΡΠ°Ρ:
Π’Π΅ΡΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠΎΠ»Π΅ΡΠ½ΠΈ Π·Π° Arduino IDE
ΠΡΠ΄ΡΠΈΠ½ΠΎ ΠΆΠΈΡΠΈ
int8_t timer_status = 0;
boolean sens_flag1 = 0;
boolean sens_flag2 = 0;
boolean switch_a = 0;
boolean switch_b = 0;
uint16_t temp;
float vcc;
int battery;
int old_battery;
uint32_t oldmillis;
uint32_t newmillis;
uint32_t interrupt_time;
uint32_t SLEEP_TIME = 7000;
uint32_t SLEEP_TIME_W;
uint32_t SLEEP_TIME_W2;
int NrfRSSI;
uint16_t NrfRSSI2;
boolean wait_off;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
#define MY_PASSIVE_NODE
#define MY_NODE_ID 120
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define POWER_CHILD_ID 110
#define UP_POWER_SWITCH_ID 1
#define DOWN_POWER_SWITCH_ID 2
#define CHILD_ID_nRF52_RSSI_RX 3
#define BAT_COOF 0.0092957746478873
#define BAT_MIN 200
#define BAT_MAX 290
#include <MySensors.h>
MyMessage upMsg(UP_POWER_SWITCH_ID, V_STATUS);
MyMessage downMsg(DOWN_POWER_SWITCH_ID, V_STATUS);
MyMessage powerMsg(POWER_CHILD_ID, V_VAR1);
MyMessage msgRF52RssiReceiv(CHILD_ID_nRF52_RSSI_RX, V_VAR1);
void preHwInit() {
pinMode(31, OUTPUT); //power management pin
digitalWrite(31, HIGH);
delay(3000);
pinMode(3, INPUT); // on off mode button
pinMode(25, OUTPUT); // sens1 led
pinMode(26, OUTPUT); // sens1 led
pinMode(27, OUTPUT); // sens1 led
pinMode(6, OUTPUT); // sens21 led
pinMode(7, OUTPUT); // sens2 led
pinMode(8, OUTPUT); // sens2 led
pinMode(28, OUTPUT); // bizzer
pinMode(2, INPUT); // common interrupt for touch sensors
pinMode(9, INPUT); // touch sensors1
pinMode(10, INPUT); //touch sensors2
pinMode(29, INPUT); // battery
digitalWrite(28, LOW);
digitalWrite(27, HIGH);
digitalWrite(26, HIGH);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void before()
{
NRF_POWER->DCDCEN = 1;
analogReadResolution(12);
disableNfc();
turnOffAdc();
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(100);
playSound0();
wait(100);
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(3000);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(200);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(400);
digitalWrite(6, LOW);
digitalWrite(25, LOW);
wait(200);
digitalWrite(6, HIGH);
digitalWrite(25, HIGH);
wait(400);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
wait(200);
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(1000);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
}
void setup()
{
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(50);
playSound();
wait(2000);
readBatLev();
wait(200);
SLEEP_TIME_W = SLEEP_TIME;
}
void presentation()
{
sendSketchInfo("EFEKTA ON|OFF NODE 2CH", "1.0");
wait(100);
present(POWER_CHILD_ID, S_CUSTOM, "BATTERY DATA");
wait(100);
present(UP_POWER_SWITCH_ID, S_BINARY, "UP SWITCH");
wait(100);
present(DOWN_POWER_SWITCH_ID, S_BINARY, "DOWN SWITCH");
}
void loop()
{
if (sens_flag1 == 0 && sens_flag2 == 0) {
if (switch_a == 0 && switch_b == 0) {
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, 3600000, false);
wait_off = 1;
} else {
//oldmillis = millis();
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, SLEEP_TIME_W, false);
wait_off = 0;
}
}
if (timer_status == 3) {
wait(100);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(2000);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(100);
digitalWrite(31, LOW);
}
if (timer_status == 2) {
if (digitalRead(9) == HIGH && sens_flag1 == 0 && switch_b == 0) {
sens_flag1 = 1;
if (switch_a == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_a = 1;
digitalWrite(6, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(upMsg.set(switch_a));
wait(200);
} else {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
}
if (digitalRead(10) == HIGH && sens_flag2 == 0 && switch_a == 0) {
sens_flag2 = 1;
if (switch_b == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_b = 1;
digitalWrite(25, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(downMsg.set(switch_b));
wait(200);
} else {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
}
if (digitalRead(9) == LOW && sens_flag1 == 1) {
sens_flag1 = 0;
}
if (digitalRead(10) == LOW && sens_flag2 == 1) {
sens_flag2 = 0;
}
if (switch_a == 1 || switch_b == 1) {
if (wait_off == 0) {
newmillis = millis();
wait(10);
SLEEP_TIME_W2 = SLEEP_TIME_W;
wait(10);
interrupt_time = newmillis - oldmillis;
wait(10);
SLEEP_TIME_W = SLEEP_TIME_W2 - interrupt_time;
wait(10);
Serial.print("WAS IN A SLEEP: ");
Serial.print(newmillis - oldmillis);
Serial.println(" MILLISECONDS");
if (SLEEP_TIME_W < 1000) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
SLEEP_TIME_W = SLEEP_TIME;
wait(50);
}
Serial.println(SLEEP_TIME);
Serial.println(SLEEP_TIME_W);
Serial.println(SLEEP_TIME_W2);
Serial.print("GO TO SLEEP FOR: ");
Serial.print(SLEEP_TIME_W);
Serial.println(" MILLISECONDS");
}
oldmillis = millis();
}
}
if (timer_status == -1) {
if (switch_a == 1 || switch_b == 1) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
} else {
readBatLev();
}
}
}
void disableNfc() {
NRF_NFCT->TASKS_DISABLE = 1;
NRF_NVMC->CONFIG = 1;
NRF_UICR->NFCPINS = 0;
NRF_NVMC->CONFIG = 0;
}
void turnOffAdc() {
if (NRF_SAADC->ENABLE) {
NRF_SAADC->TASKS_STOP = 1;
while (NRF_SAADC->EVENTS_STOPPED) {}
NRF_SAADC->ENABLE = 0;
while (NRF_SAADC->ENABLE) {}
}
}
void myTone(uint32_t j, uint32_t k) {
j = 500000 / j;
k += millis();
while (k > millis()) {
digitalWrite(28, HIGH); delayMicroseconds(j);
digitalWrite(28, LOW ); delayMicroseconds(j);
}
}
void playSound0() {
myTone(1300, 50);
wait(20);
myTone(1300, 50);
wait(50);
}
void playSound() {
myTone(700, 30);
wait(10);
myTone(700, 30);
wait(10);
myTone(700, 30);
wait(50);
}
void playSound1() {
myTone(200, 10);
wait(10);
myTone(400, 5);
wait(30);
}
void playSound2() {
myTone(400, 10);
wait(10);
myTone(200, 5);
wait(30);
}
void readBatLev() {
temp = analogRead(29);
vcc = temp * 0.0033 * 100;
battery = map((int)vcc, BAT_MIN, BAT_MAX, 0, 100);
if (battery < 0) {
battery = 0;
}
if (battery > 100) {
battery = 100;
}
sendBatteryLevel(battery, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
send(powerMsg.set(temp));
wait(200);
NrfRSSI = transportGetReceivingRSSI();
NrfRSSI2 = map(NrfRSSI, -85, -40, 0, 100);
if (NrfRSSI2 < 0) {
NrfRSSI2 = 0;
}
if (NrfRSSI2 > 100) {
NrfRSSI2 = 100;
}
send(msgRF52RssiReceiv.set(NrfRSSI2));
wait(200);
}
ΠΠΎΡΠΈΠ΅ΡΠ° Π½Π° ΡΠ»ΡΡΠ°ΠΈ Π²ΠΎ stl -
Gerber PCB-Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ -
ΠΠ° ΠΏΡΠ°ΡΠ°ΡΠ° Π²ΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΠΎΠ²ΠΎΡ ΡΠ°Π·Π²ΠΎΡ, Π·Π° ΡΠ΅ΡΠΊΠΎΡΠΈΠΈΡΠ΅ Π²ΠΎ Π²Π°ΡΠΈΡΠ΅ ΡΠ»ΡΡΡΠ²Π°ΡΠ° Π½Π° Arduinos ΠΈ Mysensors ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ -
ΠΠ·Π²ΠΎΡ: www.habr.com