-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtt
More file actions
99 lines (79 loc) · 2.49 KB
/
tt
File metadata and controls
99 lines (79 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/******************************************
# This script aim at reporting tack water level
# Site : http://domotique.web2diz.net/
# Detail : http://domotique.web2diz.net/?p=596
#
# License : CC BY-SA 4.0
#
# This script use the x10rf library
# See source here :
# https://github.com/p2baron/x10rf
#
#
/*******************************************/
// including x10rf library
#include <x10rf.h>
#include <avr/sleep.h> // ref http://www.technoblogy.com/show?KX0
// Utility macros
#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off)
#define adc_enable() (ADCSRA |= (1<<ADEN)) // re-enable ADC
// define I/O PINS
#define SENSOR_LEVEL_0_PIN 0 // SENSOR LEVEL 0
#define SENSOR_LEVEL_1_PIN 1 // SENSOR LEVEL 1
#define SENSOR_LEVEL_2_PIN 2 // SENSOR LEVEL 2
#define SENSOR_LEVEL_3_PIN 3 // SENSOR LEVEL 3
#define RF_OUT 4 // OUTPUT RF
x10rf myx10 = x10rf(RF_OUT,0,5);
int level = 0;
void setup() {
// SETING UP THE I/O PINS
pinMode(SENSOR_LEVEL_0_PIN, INPUT);
pinMode(SENSOR_LEVEL_1_PIN, INPUT);
pinMode(SENSOR_LEVEL_2_PIN, INPUT);
pinMode(SENSOR_LEVEL_3_PIN, INPUT);
pinMode(RF_OUT, OUTPUT);
// MYX10 INITIALIZATION
myx10.begin();
}
void loop() {
// THE LOOP
get_and_sent_water_level();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu();
sleep_disable();
}
/*
FUNCTION
get_and_sent_water_level
*/
int get_and_sent_water_level(){
// INTERNAL PULL-UP DESABLING TO AVOID ELECTROLYSE
digitalWrite(SENSOR_LEVEL_0_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_1_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_2_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_3_PIN, HIGH);
delay(100);
/*
Serial.print(" LEVELLEVELLEVEL : ");
Serial.println(digitalRead(SENSOR_LEVEL_0_PIN));
Serial.print(" LEVELLEVELLEVEL : ");
Serial.println(digitalRead(SENSOR_LEVEL_1_PIN));
Serial.print(" LEVELLEVEL : ");
Serial.println(digitalRead(SENSOR_LEVEL_2_PIN));
Serial.print(" LEVEL : ");
Serial.println(digitalRead(SENSOR_LEVEL_3_PIN));
*/
int level = (1-digitalRead(SENSOR_LEVEL_0_PIN)) + (1-digitalRead(SENSOR_LEVEL_1_PIN)) + (1-digitalRead(SENSOR_LEVEL_2_PIN)) + (1-digitalRead(SENSOR_LEVEL_3_PIN)) ;
/*
Serial.print(" LEVEL OF WATER : ");
Serial.println(level);
*/
// INTERNAL PULL-UP DESABLING TO AVOID ELECTROLYSE
digitalWrite(SENSOR_LEVEL_0_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_1_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_2_PIN, HIGH);
digitalWrite(SENSOR_LEVEL_3_PIN, HIGH);
// SENDING THE LEVEL OVER RF
myx10.RFXmeter(12,0,level);
}