Twoj adres e-mail nie bedzie opublikowany. wymagane pola są zaznaczone *
używam arduino-uno, ale nie mam dostępu do mojej strony. już przypisałem adres IP do arduino. kiedy uruchamiam arduino (ctrl + shift + m), wyświetla dane wyjściowe. Ale kiedy uzyskuję dostęp do mojej strony, wyświetli się komunikat „Nie możesz” dotrzeć do tej strony.
Mój serwer działa dobrze z lokalnym adresem IP i siecią lokalną za pomocą kabla Ethernet.
praca z przekierowaniem portów / publicznym adresem IP podczas korzystania z innego połączenia sieciowego z telefonem komórkowym, jak wspomniano w artykule.
nie działa na moim telefonie komórkowym lub laptopie podczas korzystania z routera Wi-Fi / bezprzewodowego w tej samej sieci z lokalnym adresem IP. Daj mi znać, gdzie się mylę.
Potrzebuję pomocy w tym kodzie, ponieważ gdy wystąpi nagły wypadek o 4 (wysoki), nie mogę wrócić do poprzedniego stanu... jak to zrobić?
// TYLKO ARDUINO 1.0+
// TYLKO ARDUINO 1.0+
#zawierać
#zawierać
odczyt boolowski = fałsz;
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
bajt ip [] = {192, 168, 16, 71}; // Tylko konfiguracja ręczna
// bajtowa brama [] = {192, 168, 1, 1}; // Tylko konfiguracja ręczna
// bajtowa podsieć [] = {255, 255, 255, 0}; // Tylko konfiguracja ręczna
// jeśli trzeba zmienić adres MAC (bardzo rzadko)
bajt mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Serwer EthernetServer = EthernetServer (80); // port 80
////////////////////////////////////////////////////////////////////////
void setup () {
Serial.begin (9600);
// Piny 10,11,12 i 13 są używane przez osłonę ethernetową
pinMode (2, WEJŚCIE); // SWICH
pinMode (3, WYJŚCIE); //LAMP
pinMode (4, WEJŚCIE); // AWARYJNE
pinMode (6, WEJŚCIE);
Ethernet.begin (mac);
//Ethernet.begin (mac, ip, brama, podsieć); // do ręcznej konfiguracji
server.begin ();
Serial.println (Ethernet.localIP ());
}
void loop () {
digitalWrite (6, LOW);
if ((digitalRead (4) == LOW) || (digitalRead (6) == HIGH))
{
if (digitalRead (2) == HIGH)
{
digitalWrite (3, WYSOKI);
opóźnienie (5000);
digitalWrite (3, LOW);
}
}
checkForClient (); // nasłuchuj przychodzących klientów i przetwarzaj qequest.
}
void checkForClient () {
Klient EthernetClient = server.available ();
jeśli (klient) {
// żądanie HTTP kończy się pustą linią
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected ()) {
if (client.available ()) {
if (! sentHeader) {
// wyślij standardowy nagłówek odpowiedzi http
client.println („HTTP / 1.1 200 OK”);
client.println („Content-Type: text / html”);
client.println ();
sentHeader = true;
}
char c = client.read ();
if (czytanie && c == '') czytanie = fałsz;
if (c == '?') reading = true; // znalazłeś?, zacznij czytać informacje
jeśli (czyta) {
Serial.print (c);
przełącznik (c) {
przypadek „4”:
// dodaj tutaj kod, aby uruchomić 2
triggerPin (4, klient);
złamać;
przypadek „6”:
// dodaj tutaj kod, aby uruchomić 3
triggerPin (6, klient);
złamać;
}
}
if (c == '\ n' && currentLineIsBlank) przerwa;
jeśli (c == '\ n') {
currentLineIsBlank = true;
} else if (c! = '\ r') {
currentLineIsBlank = false;
}
}
}
opóźnienie (1); // daj przeglądarce czas na otrzymanie danych
client.stop (); // zamknij połączenie:
}
}
void triggerPin (int pin, klient EthernetClient) {
// mrugnięcie szpilką - Klient potrzebny tylko do celów wyjściowych HTML.
client.print („Turning on pin”);
client.println (pin);
client.print („”);
if (pin, WYSOKI)
{
digitalWrite (4, WYSOKA);
digitalWrite (6, WYSOKA);}
}
Czy nie byłoby łatwiej i taniej zrobić to z Raspberry Pi? Nie jestem do końca pewien, ponieważ nigdy nie korzystałem z Arduino, ale mam Pi.