Added Project

This commit is contained in:
mrbesen 2018-10-29 07:39:40 +01:00
parent 76509536a3
commit ee496d4702
1 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,180 @@
#include <TM1637Display.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
#define relay_pin 2
#define servo_pin 6
#define clock_pin 7
#define data_pin 8
#define button_pin 3
/**
* pin | text
* 2 | light
* 3 | button
* 4 | ethernet?
* 6 | servo audio
* 7 | clock screen
* 8 | data screen
* 10 | ethernet shield
* 11 | ethernet
* 12 | ethernet
* 13 | ethernet
*/
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
// the router's gateway address:
byte gateway[] = { 10, 0, 0, 1 };
// the subnet:
byte subnet[] = { 255, 255, 0, 0 };
IPAddress ip(10, 3, 1, 1);
EthernetServer server(7979);//protocoll: [a/l][n/f/t/v] -> audio / light , on / off / toggle / toggle var
Servo servo;
TM1637Display display(clock_pin, data_pin);
boolean audio_ = false;//stadi
boolean light_ = false;
int pos = 0;//leer klein
int pos_ = 17;//triggered klein
unsigned long dispon = 0;
boolean isdispon = false;
void setup() {
disabledisp();
pinMode(relay_pin, OUTPUT);//relay
servo.attach(servo_pin);//servo
servo.write(pos);//reset servo
delay(200);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
}
void loop() {
handle_screen();
// listen for incoming clients
EthernetClient client = server.available();
boolean audio = false;
boolean light = false;
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if(c == 'a')//select audio
audio = true;
else if(c =='l') //select light
light = true;
else if(c == 'n') {//on
if(audio && !audio_) {//turn audio on
toggle_audio();
}
if(light && !light_) {//turn light on
toggle_light();
}
//reset
audio = false;
light = false;
}else if(c == 'f') {//off
if(audio && audio_) {//turn audio off
toggle_audio();
}
if(light && light_) {//turn light off
toggle_light();
}
audio = false;
light = false;
}else if( c == 't') {//toggle
if(audio) {//togle audio
toggle_audio();
}
if(light) {//toggle light
toggle_light();
}
audio = false;
light = false;
}else if(c == 'v') {//toggle var
if(audio)
audio_ = !audio_;
if(light)
light_ = !light_;
audio = false;
light = false;
} else {
//client.print("FAILED");
}
//client.print("OK");
//client.flush();
}
}
// give the client time to receive the data
delay(15);
// close the connection:
client.stop();
//Ethernet.maintain();
}
}
void handle_screen() {
if(digitalRead(button_pin)) {
dispon = millis();
}
if((millis() - dispon)/1000 < 5) {
//diplay on
if(!isdispon)//falls es noch nicht on ist
enabledisp();
} else {
//display off
if(isdispon)//falls es noch nicht off ist
disabledisp();
}
}
void enabledisp() {
//set light
display.setBrightness(0x0f);
dispon = true;
}
void disabledisp() {
//set dark
display.setBrightness(0x00);
dispon = false;
}
void toggle_audio() {
servo.write(pos_);//kleiner (stereo anlage)
delay(200);
servo.write(pos);//reset kleine
audio_ = !audio_;
}
void toggle_light() {
light_ = !light_;
if(light_)
digitalWrite(relay_pin, HIGH);
else
digitalWrite(relay_pin, LOW);
}