Lampka zapalana przez internet

Problemy z realizacją projektów prezentowanych na blogu.
ODPOWIEDZ
Lukaszja
Majsterkowicz
Posty: 55
Rejestracja: 28 maja 2013, 18:58

Lampka zapalana przez internet

Post autor: Lukaszja » 30 paź 2014, 18:14

Witam chciałem wykonać sobie takie sterowanie lampką, ale przy kompilacji kodu wyskakuje mi takie oto coś


sketch_oct30a.ino: In function 'void loop()':
sketch_oct30a.ino:31: warning: suggest parentheses around assignment used as truth value
sketch_oct30a.ino:42: warning: deprecated conversion from string constant to 'char*'
sketch_oct30a.ino:46: warning: deprecated conversion from string constant to 'char*'
sketch_oct30a.ino:50: warning: deprecated conversion from string constant to 'char*'
sketch_oct30a.ino:54: warning: deprecated conversion from string constant to 'char*'
sketch_oct30a:59: error: 'button' was not declared in this scope
czy byłby mi ktos w stanie wytłumaczyć co jest z tym nie tak? Biblioteki mam wszystkie wgrane. a tak BTW wybiera się ktoś na warsztaty organizowane przez nettigo 6 listopada do Warszawy?

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Lampka zapalana przez internet

Post autor: kazzik87 » 30 paź 2014, 19:12

Wklej kod. Wygląda na błąd konwersji na typ "char *".
---
Jeżeli pomogłem to kliknij "Pomógł".
Lukaszja
Majsterkowicz
Posty: 55
Rejestracja: 28 maja 2013, 18:58

Re: Lampka zapalana przez internet

Post autor: Lukaszja » 30 paź 2014, 19:49

#include "etherShield.h"
#include "ETHER_28J60.h"

int triak_pin = 7;
int button_pin = 6;
int i=0;

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};
static uint8_t ip[4] = {192, 168, 1, 15};
static uint16_t port = 80;

ETHER_28J60 e;

void setup()
{
pinMode(triak_pin, OUTPUT);
digitalWrite(triak_pin, LOW);

pinMode(button_pin, INPUT);
digitalWrite(button_pin, HIGH);

delay(1000);
e.setup(mac, ip, port);
}

void loop()
{
char* params;

if (params = e.serviceRequest())
{
if (strcmp(params, "lampka") == 0)
{
if(i == 0) {
digitalWrite(triak_pin, HIGH);
i=1;
} else if(i == 1) {
digitalWrite(triak_pin, LOW);
i=0;
}
e.print("Done!");
} else if (strcmp(params, "lampka_off") == 0) {
digitalWrite(triak_pin, LOW);
i=0;
e.print("OFF-DONE!");
} else if (strcmp(params, "lampka_on") == 0) {
digitalWrite(triak_pin, HIGH);
i=1;
e.print("ON-DONE!");
} else if (strcmp(params, "lampka_status") == 0) {
e.print(i);
} else {
e.print("Hello, World! :P");
}
e.respond();
}

if(digitalRead(button) == LOW) {
if(i == 0) {
digitalWrite(triak_pin, HIGH);
i=1;
} else if(i == 1) {
digitalWrite(triak_pin, LOW);
i=0;
}
}

}
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Lampka zapalana przez internet

Post autor: kazzik87 » 30 paź 2014, 20:32

Hej,

1) Brak deklaracji zmiennej "button", ty masz "button_pin".
2) Wywala błędy w funkcji strcmp(char[], char[]), a ty dajesz strcmp(char*, char).
3) To "params = e.serviceRequest()" chyba nie spełnia żądanej funkcji. Domyślam się że chcesz odczytać coś z sieci?! Patrz tu, ostatni przykład.
---
Jeżeli pomogłem to kliknij "Pomógł".
Lukaszja
Majsterkowicz
Posty: 55
Rejestracja: 28 maja 2013, 18:58

Re: Lampka zapalana przez internet

Post autor: Lukaszja » 30 paź 2014, 20:55

ale to jest gotowy projekt ze strony majsterkowo.pl i nie moge go skompilowac nic nie dopisywalem tylko wkleilem taki jaki był. więc nie rozumiem dlaczego autor miałby wklejać zly kod
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Lampka zapalana przez internet

Post autor: kazzik87 » 30 paź 2014, 21:11

Czyli wykonujesz to?
A na pewno dokładnie postępujesz z instrukcjami?

Właśnie skopiowałem kod, wgrałem biblioteki, usunąłem bibliotekę Ethernet. Wywaliło mi tylko że brak zmiennej "button".

Oto kod:

Kod: Zaznacz cały

#include "etherShield.h"
#include "ETHER_28J60.h"
 
int triak_pin = 7;
int button_pin = 6;
int i=0;
 
static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   
static uint8_t ip[4] = {192, 168, 1, 15};                       
static uint16_t port = 80;                                     
 
ETHER_28J60 e;
 
void setup()
{ 
  pinMode(triak_pin, OUTPUT);
  digitalWrite(triak_pin, LOW);
 
  pinMode(button_pin, INPUT);
  digitalWrite(button_pin, HIGH);
 
  delay(1000);
  e.setup(mac, ip, port);
}
 
void loop()
{
  char* params;
 
  if (params = e.serviceRequest())
  {
    if (strcmp(params, "lampka") == 0)
    {
		if(i == 0) { 
			digitalWrite(triak_pin, HIGH);
			i=1;
	   } else if(i == 1) { 
			digitalWrite(triak_pin, LOW);
			i=0; 
		}
		e.print("Done!");
	} else if (strcmp(params, "lampka_off") == 0) {
		digitalWrite(triak_pin, LOW);
		i=0;
		e.print("OFF-DONE!");
	} else if (strcmp(params, "lampka_on") == 0) {
		digitalWrite(triak_pin, HIGH);
		i=1;
		e.print("ON-DONE!");
	} else if (strcmp(params, "lampka_status") == 0) {
		e.print(i);
    } else {
		e.print("Hello, World! :P");
    }
    e.respond();
  }
 
  if(digitalRead([b]button_pin[/b]) == LOW) {
		if(i == 0) { 
			digitalWrite(triak_pin, HIGH);
			i=1;
		} else if(i == 1) { 
			digitalWrite(triak_pin, LOW);
			i=0; 
		}
  }
 
}
A to wynik:

Kod: Zaznacz cały

Wielkość binarna szkicu: 5 466 bajtów (maksymalnie: 32 256 bajtów)
Wszystko poszło OK.

Opisz co robisz po kolei ...
---
Jeżeli pomogłem to kliknij "Pomógł".
Lukaszja
Majsterkowicz
Posty: 55
Rejestracja: 28 maja 2013, 18:58

Re: Lampka zapalana przez internet

Post autor: Lukaszja » 30 paź 2014, 22:07

teraz wszystko jest ok zmienilem tylko w59 linijce button na button_pin . tylko nie moge sterowac lampką podalem adres ip 192.168.2.1 w ustawieniach w apce wszystko podlaczone tak jak mialo być wiesz moze co teraz??
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Lampka zapalana przez internet

Post autor: kazzik87 » 30 paź 2014, 22:41

Lukaszja pisze:nie moge sterowac lampką
Podaj dokładny adres jaki wpisujesz. Albo zrób zdjęcie listy DHCP na swoim ruterze.
Zrób zdjęcie układu, lub naszkicuj go.
Której aplikacji na telefon używasz?
---
Jeżeli pomogłem to kliknij "Pomógł".
ODPOWIEDZ

Strony partnerskie: