Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    5

    pulsanti, cambio di stato, arduino

    Buondì, da qualche giorno ho implementato nel mio progetto di arduino la shield ESP8266 che mi permette tramite browser di vedere lo stato degli ingressi e delle uscite che sono collegati, nn conoscendo a fondo il codice html ho provato vari esempi, ho provato anche il sito (magari lo conoscete già) w3schools.com dove ci sono vari esempi e spiegano anche bene ogni parte e ogni comando del codice ma io nn riesco a capire cosa devo fare per creare dei pulsanti che mi cambino lo stato delle uscite o che cambino pagina, i comandi di arduino quelli bene o male li ho capiti ma devo inserire il codice html per farlo, al momento mostro solo il testo dell'uscita, la condizione (che mi rimane sempre a 1 e lo stato ON e OFF sempre attivi invece io volevo fare in modo che se fosse lo stato a 1 mostra il comando ON se fosse a 0 mostra il comando OFF e se premo su uno dei 2 si accende e/o si spegne

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    5
    Screenshot_20170220_174855.png nn pensavo di chiedere qualcosa di molto complicato o inesistente, proviamo con un'immagine, alla riga dello stato del cavo + piastra termica, c'è oltre al suo stato anche la scritta ON OFF che vorrei trasformare in pulsanti, vorrei sapere come si fa, se potete spiegarmi anche il comando per poterli nascondere così quando invio il comando da Arduino che mi dice che è accesa si vede solo il pulsante ON e vice versa se è spenta

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    ciao,

    la complessità delle cosa dipende dal risultato che vuoi raggiungere.

    per "solo" cambiare lo stato (da verde a rosso e viceversa) ti basterebbe inviare l'istruzione, tramite pulsante o form, e ricaricare la pagina.

    dall'immagine si capisce che si sono valori dinamici (come le temperature).
    è un valore che vuoi aggiornare in "tempo reale" o non ti interessa?

    perché se già devi fare questo aggiornamento si può proseguire con ajax, e fare tutto.
    altrimenti basta un form e ricarichi la pagina.

    non conosco bene arduino ma so che lavora con server interno quindi non dovrebbero esserci problemi a priori.
    tu come fai per modificare lo stato di quell'interruttore? che comando invii?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    5
    Questo sostanzialmente è il codice html all'interno di arduino, viene gestito tramite una shield ESP8266 che crea un segnale wifi a cui mi collego come access point, ogni 20 secondi fa un refresh in automatico.
    codice:
    client.print(
        "HTTP/1.1 200 OK\r\n"
        "Content-Type: text/html\r\n"
        "Connection: close\r\n"  // the connection will be closed after completion of the response
        "Refresh: 20\r\n"        // refresh the page automatically every 20 sec
        "\r\n");
      client.print("<!DOCTYPE HTML>\r\n");
      client.print("<html>\r\n");
      client.print("<h1><font color=blue>Terrario Freya</font></h1>\r\n");
      client.print("<h2>Ingressi Arduino</h2>");
      client.print("<br>\r\n");
      client.print("<font color=red>Temperatura: </font>");
      client.print(dht.readTemperature());
      client.print("<br>\r\n");
      client.print("<font color=green>Umidit&agrave;: </font>");
      client.print(dht.readHumidity());
      client.print("<br>\r\n");
      client.print("<font color=gold>Sensore gas MQ4: </font>");
      client.print(analogRead(0));
      client.print("<br>\r\n");
      
      client.print("<h2>Uscite Arduino</h2>");
      client.print("<br>\r\n");
      client.print("<font color=green>Lampada UVB: </font>");
      client.print(digitalRead(luce_uvb));
      client.print("<br>\r\n");
      client.print("<font color=gold>Lampada Spot: </font>");
      client.print((digitalRead(luce_rossa)));
      client.print("<br>\r\n");
      client.print("<font color=red>Cavo e piastra termica: </font>");
      client.print((digitalRead(cavo)));
    if (digitalRead(cavo == 0)) {
    client.print("<font color=green> ON</font>");   
      }
      if (digitalRead(cavo == 1)) {
     client.print("<font color=red> OFF</font>");
       }
      client.print("<br>\r\n");
      client.print("<font color=red>Ventole areazione: </font>");
      client.print(digitalRead(ventole));
      client.print("<br>\r\n");
      client.print("</html>\r\n
    dove c'è la condizione IF è quella che voglio sistemare, dopo in un secondo momento sistemo il resto, al momento vorrei realizzare la sola visione dello stato delle uscite se sono ON o OFF. tramite il pulsante mi esegue uno scambio di stato in maniera manuale, quello che nn capisco c'è un comando html per nascondere il pulsante oppure c'è un comando specifico che agisce alla sua pressione?

    Da qui prendo l'esempio dei pulsanti, ti riporto anche il codice sotto https://www.w3schools.com/tags/att_button_type.asp
    codice:
    <form action="/action_page.php" method="get">
      First name: <input type="text" name="fname"><br>
      Last name: <input type="text" name="lname"><br>
    <button type="submit" value="Submit">Submit</button>
    <button type="reset" value="Reset">Reset</button>
    </form>
    La riga First e Last l'ho eliminata perchè nn mi serve il rettangolo su cui scrivere nome e cognome, mi rimangono i 2 pulsanti che ho opportunamente modificato in On e Off (nn so anche prima della chiusura del button devo rinominarli?) la riga action e method mi servono? è possibile mostrare un solo pulsante alla volta?
    Ultima modifica di Vincent.Zeno; 20-02-2017 a 21:37

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    ancora una domanda: se tu volessi cambiare lo stato dal pulsante (on/off), sai già che informazioni mandare?

    in ogni caso il form, che servirebbe a te, potrebbe essere una cosa del genere:
    codice:
    <form action="/action_page.php" method="get">
    <input type="submit" value="OFF">
    <input type="submit" value="ON">
    </form>
    action indica la pagina di destinazione dell'azione del form
    method indice come inviare i dati (get o post)
    alla risposta del server si può impostare quale pulsante mostrare a seconda dello stato dell'interruttore


    allo stesso modo si possono mostrare pulsanti semplici
    codice:
    <input type="button" value="on/off" >
    oppure
    <button  >on/off</button>
    e scatenare un'evento al click del mouse (richiamando un funzione onclick)

    prima di continuare serve che tu risponda alla prima domanda

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    5
    intendi inviare un segnale ad arduino quando viene premuto il pulsante? no quello devo ancora capire come funziona, te la butto lì, ma penso una condizione If.

    del tipo:

    if button click on (digitalwrite (cavo, high))

    else if button click off (digitalwrite (cavo, low))

    l'ho scritto così alla cazzo sicuramente c'è degli errori da sistemare

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    ok... ma io non conosco il protocollo di comunicazione che puoi, o vuoi, usare tra la pagina e arduino.
    credo si possa lavorare in php ma nel tuo contesto non posso affermarlo con certezza.
    quindi sposto nella sezione makers dove dovrebbero saperti dire nel dettaglio cosa serve.

    buon lavoro
    Ultima modifica di Vincent.Zeno; 21-02-2017 a 00:41

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da Erik84 Visualizza il messaggio
    Questo sostanzialmente è il codice html all'interno di arduino, viene gestito tramite una shield ESP8266 che crea un segnale wifi a cui mi collego come access point, ogni 20 secondi fa un refresh in automatico.
    codice:
    ...
    if (digitalRead(cavo == 0)) {
    client.print("<font color=green> ON</font>");   
      }
      if (digitalRead(cavo == 1)) {
     client.print("<font color=red> OFF</font>");
       }...
    dove c'è la condizione IF è quella che voglio sistemare, dopo in un secondo momento sistemo il resto, al momento vorrei realizzare la sola visione dello stato delle uscite se sono ON o OFF. tramite il pulsante mi esegue uno scambio di stato in maniera manuale, quello che nn capisco c'è un comando html per nascondere il pulsante oppure c'è un comando specifico che agisce alla sua pressione?
    Mi sa che hai commesso un errore qui (parentesi):
    codice:
    if (digitalRead(cavo == 0)) {
    client.print("<font color=green> ON</font>");   
      }
      if (digitalRead(cavo == 1)) {
     client.print("<font color=red> OFF</font>");
       }
    dovrebbe essere così:
    codice:
    if (digitalRead(cavo) == 0) {
    client.print("<font color=green> ON</font>");   
      }
    else {
     client.print("<font color=red> OFF</font>");
       }
    dove ovviamente "cavo" è il numero che rappresenta il pin.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    5
    Ah ops, io invece ho cambiato completamente il testo della riga 😂 invece ora mi ritrovo che se scrivo il codice on - off di 3 pulsanti dal browser del cellulare nn mi carica la pagina ma dal PC si, se invece scrivo il codice per 4 pulsanti nn mi carica la pagina neanche da browser PC, però in entrambi i casi se scrivo nella riga di comando tipo per accendere e spegnere allora mi prende il comando lo stesso. (Uso una formula del genere 192.168.0.111/R1H oppure 192.168.0.111/R1L dove cambio il numero in base al relè a cui voglio cambiare di stato)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.