Nano Input bron kode ?

Arduino specifieke Software
Berichten: 14
Geregistreerd: 18 Nov 2015, 10:51

Nano Input bron kode ?

Berichtdoor samboerhoop » 04 Jan 2016, 15:48

Ik heb een Adruino Nano en wil een ingang aansluiten en laten zien via een webserver, hoe kan ik dat doen?

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nano Input bron kode ?

Berichtdoor nicoverduin » 04 Jan 2016, 16:25

Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 14
Geregistreerd: 18 Nov 2015, 10:51

Re: Nano Input bron kode ?

Berichtdoor samboerhoop » 04 Jan 2016, 16:28

Zover was ik al :-)

Zie mijn code: viewtopic.php?f=8&t=1570&p=10688&hilit=ingang+nano#p10688

uitgangen werken, nu de ingangen nog !!

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Nano Input bron kode ?

Berichtdoor FPCUser » 04 Jan 2016, 17:09


Berichten: 14
Geregistreerd: 18 Nov 2015, 10:51

Re: Nano Input bron kode ?

Berichtdoor samboerhoop » 04 Jan 2016, 17:27

Ok, thanks.

but this is for an arduino uno and a nano is programmed differently. a nano doesn't understand "client.println" etc...

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Nano Input bron kode ?

Berichtdoor shooter » 04 Jan 2016, 18:22

een nano kan precies hetzelfde, maar is wel afhankelijk van de lib die je gebruikt.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nano Input bron kode ?

Berichtdoor nicoverduin » 04 Jan 2016, 21:14

samboerhoop schreef:Zover was ik al :-)

Zie mijn code: viewtopic.php?f=8&t=1570&p=10688&hilit=ingang+nano#p10688

uitgangen werken, nu de ingangen nog !!
Ik heb op je topic gereageerd. Je zult het moeten zoeken in een AJAX achtige oplossing voor een webserver.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 14
Geregistreerd: 18 Nov 2015, 10:51

Re: Nano Input bron kode ?

Berichtdoor samboerhoop » 07 Jan 2016, 13:45

Het is me gelukt om via de UIPEthernet.h library de Nano aan te sturen.
Bedankt voor de tip

Nou zit er nog een bug in van de currentLineIsBlank aansturing. Nadat je op een link heb gedrukt de toevoeging bijv: "?relay1off" weer word verwijderd, zodat deze niet continue doorloopt na de volgende refresh. Wat heb ik verkeerd gedaan ?
cpp code
#include <UIPEthernet.h> // Used for Ethernet
#include <SPI.h>

//"-- BUGS or to Do's--"));
//" POST link inputs to Fibaro or within another way"));
//" Colours on / off, when "ON" pressed color will change to red and "OFF" will go to grey colorand when
"OFF" pressed changed color will change to green and "ON" color will go to grey "));
//" Refresh blank page issue"));
//" Hang ups"));

// **** ETHERNET SETTING ****
byte mac[] = {0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
IPAddress ip (10, 0, 1, 180);
EthernetServer server (80);

byte Relay1 = 2;
byte Relay2 = 3;
byte Relay3 = 4;
byte Relay4 = 5;
byte Input1 = 6;
byte Input2 = 7;
byte Input3 = 8;
byte Input4 = 9;

String readString;

void setup() {
Serial.begin(9600);

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();

// Assign Inputs and Outputs //
pinMode(2, OUTPUT); // Relay 1
pinMode(3, OUTPUT); // Relay 2
pinMode(4, OUTPUT); // Relay 3
pinMode(5, OUTPUT); // Relay 4
pinMode(6, INPUT); // Input 1
pinMode(7, INPUT); // Input 2
pinMode(8, INPUT); // Input 3
pinMode(9, INPUT); // Input 4
// Start with outputs LOW //
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
// Pullup Resistors //
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);

Serial.print("IP Address: ");
Serial.println(Ethernet.localIP());
}

void loop() {
// Create a client connection
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true; // added
while (client.connected()) {
if (client.available()) {
char c = client.read();

//read char by char HTTP request
if (readString.length() < 100) { // 100
//store characters to string
readString += c;
Serial.print(c);
}

//if HTTP request has ended
// if (c == '\n' ) { // old relay code
if (c == '\n' && currentLineIsBlank) { // switch input
Serial.println(readString); //print to serial monitor for debuging

client.println(F("HTTP/1.1 200 OK")); //send new page
client.println(F("Content-Type: text/html"));
client.println(F("Connnection: close")); // added
client.println();
client.println(F("<!DOCTYPE html>")); // added
client.println(F("<HTML>"));
client.println(F("<HEAD>"));
client.println(F("<TITLE>NANO-1</TITLE>"));
client.println(F("<meta http-equiv=\"refresh\" content=\"5\">")); // added
client.println(F("</HEAD>"));
client.println(F("<body style='background-color:rgb(255,255,102);'>"));
client.println(F("<H2>Home Control NANO-1</H2>"));
client.println(F("<hr />"));
client.println(F("<table class=fixed>"));
client.println(F("<col width=300px />"));
client.println(F("<col width=150px />")); //150
client.println(F("<tr>"));
client.println(F("<td><b>INPUTS</b></td>"));
client.println(F("<td></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Outside Front Socket</td>"));
GetSwitchState1(client);
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Front Door:</td>"));
GetSwitchState2(client);
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Key Locker:</td>"));
GetSwitchState3(client);
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Input 4:</td>"));
GetSwitchState4(client);
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td></br /></td>"));
client.println(F("<td></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td><b>OUTPUTS</b></td>"));
client.println(F("<td></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Outside Front Socket:</td>"));
client.println(F("<td><a href=\"/?relay1on\"\">ON</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/?relay1off\"\">OFF</a></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Veranda Spots:</td>"));
client.println(F("<td><a href=\"/?relay2on\"\">ON</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/?relay2off\"\">AUTO</a></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Alleyway Light:</td>"));
client.println(F("<td><a href=\"/?relay3on\"\">ON</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/?relay3off\"\">AUTO</a></td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td>Relay 4:</td>"));
client.println(F("<td><a href=\"/?relay4on\"\">ON</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/?relay4off\"\">OFF</a></td>"));
client.println(F("</tr>"));
client.println(F("</table></br />"));
client.println(F("<hr />"));
client.println(F("<p>Location: Server Room</p>"));
client.println(F("</BODY>"));
client.println(F("</HTML>"));


delay(1);
//stopping client
client.stop();

//Relay 1 control buttons
if (readString.indexOf("?relay1on") >0){
digitalWrite(Relay1, LOW); }
if (readString.indexOf("?relay1off") >0){
digitalWrite(Relay1, HIGH); }

//Relay 2 control buttons
if (readString.indexOf("?relay2on") >0){
digitalWrite(Relay2, LOW); }
if (readString.indexOf("?relay2off") >0){
digitalWrite(Relay2, HIGH); }

//Relay 3 control buttons
if (readString.indexOf("?relay3on") >0){
digitalWrite(Relay3, LOW); }
if (readString.indexOf("?relay3off") >0){
digitalWrite(Relay3, HIGH); }

//Relay 4 control buttons
if (readString.indexOf("?relay4on") >0){
digitalWrite(Relay4, LOW); }
if (readString.indexOf("?relay4off") >0){
digitalWrite(Relay4, HIGH); }

//clearing string for next read
readString="";


//


//------- dont know what the use from this code is //
break;
// }
// every line of text received from the client ends with \r\n
if (c == '\n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r') {
// a text character was received from client
currentLineIsBlank = false;
}

// -------// added




}
}
}
}
}


//---------- INPUTS ACTIONS -----------------------//

void GetSwitchState1(EthernetClient cl)
{
if (digitalRead(Input1) == HIGH) {
cl.println(F("<td><div style= color:green; >OFF</div></td>"));
// digitalWrite(Relay2, LOW);
}
else {
cl.println(F("<td><div style= color:red; >ON</div></td>"));
// digitalWrite(Relay2, LOW);
}
}

void GetSwitchState2(EthernetClient cl)
{
if (digitalRead(Input2) == HIGH) {
cl.println(F("<td><div style= color:red; >OPEN</div></td>"));
}
else {
cl.println(F("<td><div style= color:green; >CLOSED</div></td>"));
}
}

void GetSwitchState3(EthernetClient cl)
{
if (digitalRead(Input3) == HIGH) {
cl.println(F("<td><div style= color:red; >OPEN</div></td>"));
}
else {
cl.println(F("<td><div style= color:green; >CLOSED</div></td>"));
}
}

void GetSwitchState4(EthernetClient cl)
{
if (digitalRead(Input4) == HIGH) {
cl.println(F("<td><div style= color:green; >OFF</div></td>"));
}
else {
cl.println(F("<td><div style= color:red; >ON</div></td>"));
}
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nano Input bron kode ?

Berichtdoor nicoverduin » 07 Jan 2016, 15:27

Dat komt omdat je eerst een boodschap naar de client stuurt en dan pas gaat verwerken. Als je niet wilt dat er iets gebeurt als je niets doet, dan kan je overwegen om tot de verwerking van de relais wachten eerst te bepalen wat je terug wilt sturen naar de client. En dan die client print verder opbouwen. dat doe je tenslotte wel voor de switches
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 102 gasten