Olá pessoal! Boa noite!

Estou com a ideia de construir um módulo de controle de velocidade para um ventilador, para isso pretendo usar um servo motor para controlar  velocidade remotamente através de uma pagina html, o servo é que fará girar o botão que liga/desliga o ventilador e controla a velocidade, eu gostaria de fazer um botão na pagina html que simulasse um potenciômetro como no exemplo desse vídeo: 

http://www.phpoc.com/forum/viewtopic.php?f=51&t=157

não consegui entender como ele fez, pois no meu caso eu vou usar o Ethernet shield...

então encontrei esse outro aqui que chega próximo do que preciso:

#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h> 

Servo myservo1;  // create servo object to control a servo1
Servo myservo2;  // create servo object to control a servo2

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 

//////////////////////

void setup(){


  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  myservo1.write(90); //set initial servo1 position if desired
  myservo2.write(90); //set initial servo2 position if desired
  
  myservo1.attach(9);  //the pin for the servo1 control
  myservo2.attach(8);  //the pin for the servo2 control
  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("server servo/pin 9,8 test 1.0"); // so I can keep track of what is loaded
}

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

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging 

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Arduino </H1>");
         
         //Servo1 movement
          client.println("<a href=\"/?right\"\">RIGHT</a>");
          client.println("<a href=\"/?center\"\">CENTER</a>"); 
          client.println("<a href=\"/?left\"\">LEFT</a>"); 
          
          //servo2 movement
          client.println("<a href=\"/?up\"\">UP</a>");
          client.println("<a href=\"/?mid\"\">MIDDLE</a>"); 
          client.println("<a href=\"/?down\"\">DOWN</a>"); 

          client.println("</BODY>");
          client.println("</HTML>");

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

          ///////////////////// control arduino pin

          if(readString.indexOf("left") >0)
          {
            myservo1.write(135);
            delay (50);          
            Serial.println(" Turn to Left");
          }
                    
          if(readString.indexOf("center") >0)
          {
            myservo1.write(90);
            delay (50);            
            Serial.println(" Turn to Center");
          }
          if(readString.indexOf("right") >0)
          {
            myservo1.write(45);
            delay (50);            
            Serial.println(" Turn to Right");
          }
          
          
          
          
          if(readString.indexOf("up") >0)
          {
            myservo2.write(135);
            delay (50);            
            Serial.println(" Move Upwards ");
          }
                    
          if(readString.indexOf("mid") >0)
          { 
            myservo2.write(90);
            delay (50);
            Serial.println(" Move to Center");
          }
          
          if(readString.indexOf("down") >0)
          {
            myservo2.write(45);
            delay (50);            
            Serial.println(" Move downwards ");
          }
          
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}

Porém eu preciso fazer algumas mudanças:

vou controlar 7 ventiladores;

nesse código ele não usa botoes então eu preciso criar os botoes;

nesse código ele usa dois servos, cada um se movimenta em três posições: 

RIGHT45°, CENTER 90°, LEFT 135°;  UP 135°, MIDDLE 90°, DOWN 45°

no meu caso eu quero que o servo assuma seis posições diferentes (165°, 150°, 135°, 120°,105°, 90° respectivamente) cada posição dessa será uma velocidade...

eu já tentei mudar o código que mencionei acima, já ate criei os botoes pra ele, porem não funcionou!

Eu gostaria de saber se vocês podem me ajudar a solucionar esse problema, ou talvez que sabe vocês conheçam algum projeto que faça o mesmo que eu propus de maneira mais simplificada pra me indicar.

anexei o arquivo "ino" que tentei modificar pra que vocês deem uma olhada de como esta ficando...

quando a pagina html for aberta vocês verão 6 botoes vermelhos enumerados, que servem para indicar a posição do servo, ao clicar em um dos botoes ele devera ficar verde indicando que o servo esta naquela posição.

agradeço a todos que puderem me ajudar!

Exibições: 618

Anexos

Responder esta

Respostas a este tópico

A minha dificuldade esta em modificar esse código que encontrei, os botoes não funcionam como o esperado, o código original funciona mas depois que modifico a logica não funciona mais mas eu não sei onde estou errando... 

Eu tentei modificar o programa acrescentando botões, como pode ser visto no arquivo em anexo, só que não funciona. ..

Boa noite! modifiquei o codigo; mas nao tenho como testar ; teste e veja se funciona;  esta em anexo.

Anexos

funcionou beleza!  só encontrei um problema , eu não consigo monitorar a velocidade ou posição atual do servo, pra isso seria interessante eu mudar a cor do botão...

tentei usar "else" na logica do programa e dentro das chaves coloquei o mesmo código que você usou acima para o botão verde, mudando somente o código hexadecimal da cor, mas não deu certo, estou tentando aqui mas ainda não consegui...

você tem alguma dica de como eu posso mudar a cor do botão quando eu clico nele?

Olá pessoal! Alguém pode me dar uma dica de como eu poderia mudar a cor do botão quando eu clico nele?

Boa noite Kleber, estou tentando resolver, ainda nao deu , existe esse outro que modifiquei talves funcione , so falta colocar para  indicar a posicao que esta, codigo em anexo,ainda nao testei, nao sei se funciona,

voce pode pesquisar no GOOGLE como HTML botao mudar de cor, 

Anexos

Muito obrigado pela ajuda Nelson, eu vou continuar tentando aqui!
se conseguir posto o resultado aqui.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço