热度 26
2013-6-19 16:47
1665 次阅读|
0 个评论
“我用一个以太网插板负载到Arduino上。如此我便实现了打开我的车库门……就是这样! 我也安装了一个磁传感器,门是开着的或者封闭的都可以让我知道。所有都通过Telnet实现。 我修改了来自聊天服务器代码。现在贴出代码给爱好者使用。“ 图一 安装在车库里的Arduino装置 图二 正在打开车库门 图三 用手机远程控制车库门开关 代码: #include SPI.h #include Ethernet.h String readString; // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network. // gateway and subnet are optional: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1, 177); IPAddress gateway(192,168,1, 1); IPAddress subnet(255, 255, 0, 0); // telnet defaults to port 23 EthernetServer server(23); boolean alreadyConnected = false; // whether or not the client was connected previously const int analogInPin = A4; int relay = 3; int sensorValue = 0; void setup() { pinMode(2, INPUT_PULLUP); pinMode(relay, OUTPUT); digitalWrite(relay, HIGH); // initialize the ethernet device Ethernet.begin(mac, ip, gateway, subnet); // start listening for clients server.begin(); // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print(“Chat server address:”); Serial.println(Ethernet.localIP()); } void loop() { // wait for a new client: EthernetClient client = server.available(); // when the client sends the first byte, say hello: if (client) { if (!alreadyConnected) { // clead out the input buffer: client.flush(); Serial.println(“We have a new client”); client.println(“Hello, client!”); alreadyConnected = true; } while (client.available()) { if (client.available() 0) { // read the bytes incoming from the client: char thisChar = client.read(); readString += thisChar; // echo the bytes back to the client: //server.write(thisChar); // server.write(thisChar); // echo the bytes to the server as well: Serial.write(thisChar); } } //check here for stuff //Code to open if (readString.toInt() == 1111) { server.println(“Running Opener”); if (checkOpen() == 0) { server.println(“Closing”); }else { server.println (“Opening”);} digitalWrite(relay, LOW); delay(1000); digitalWrite(relay, HIGH); } //code to check if open/closed if (readString.toInt() == 5555) {if (checkOpen() == 0) { server.println(“Garage is OPEN”); } else { server.println(“Garage is CLOSED”); }} readString = “”; //end check } } //checkopen int checkOpen() {sensorValue = digitalRead(2); if (sensorValue == 0) {return 1; }else {return 0;}} // 0 = OPEN so we close. //1 = CLOSE so we open. 更多信息与我们交流: WIZnet邮箱: wiznetbj@wiznettechnology.com WIZnet中文主页: http://www.iwiznet.cn WIZnet中文博客: http://blog.iwiznet.cn WIZnet企业微博: http://e.weibo.com/wiznet2012