Go Down

Topic: Iniciante, duvidas LED como php + arduino (Read 2685 times) previous topic - next topic

PlaynowGames

Olá pessoal

meu arduino chegou e estou fazendo uns testes, criei uma aplicação php-gtk simples para ascenceder e apagar um led na board do arduino.

não ta funcionando, quando ligo o led ele só pisca, teste o codigo do arduino pelo serial monitor e ele ascende o led, so quando mando pelo PHP é q ele somente pisca

Code: [Select]
<?


   $file = "pr.glade";
   $wnd = new GladeXML($file);
   ///janela
   $w1 = $wnd->get_widget("window1");
   $bto_liga = $wnd->get_widget("bto_liga");
   $bto_desliga = $wnd->get_widget("bto_desliga");
   $bto_liga->connect_simple('clicked', 'liga_led', '1');
   $bto_desliga->connect_simple('clicked', 'liga_led', '2');
   ///Mostra Tudo do Glade
   $w1->show_all();
   Gtk::main();


function liga_led($i){

$fp =fopen("COM2", "w");
fwrite($fp, chr($i));
fclose($fp);

}


?>



Code: [Select]
int ledPin = 13;
int usbnumber = 0;
void setup() {
   pinMode(ledPin, OUTPUT);
   Serial.begin(9600);
}

void loop() {
 if (Serial.available() > 0)
 {
   usbnumber = Serial.read();
    Serial.print(usbnumber);
   switch(usbnumber)
   {
     case '1':
       digitalWrite(ledPin,HIGH);
     
     break;
     case '2':
       digitalWrite(ledPin,LOW);
       
     break;
     default:
     break;
   }
 }
}


quando envio o valor 1 pelo serial monitor ele me retorna um valor como 49 para ligado e 50 para desligado no caso valor 2

alguem sabe onde estou errando?

vlwww







netogdo

Olá, eu não entendo nada de PHP, mas os valores impressos no serial monitor (49 e 50) estão corretos. Estes são os valores para 1 e 2 na tabela ASCII

http://pt.wikipedia.org/wiki/ASCII

Talvez não esteja funcionando apenas pelo método utilizado, essa função 'fwrite' por acaso não está escrevendo o valor inteiro 1 e 2 na porta? Se sim, tenta tenta fazer:

Code: [Select]

   $bto_liga->connect_simple('clicked', 'liga_led', '49');
   $bto_desliga->connect_simple('clicked', 'liga_led', '50');

PlaynowGames

#2
Jul 23, 2010, 04:45 pm Last Edit: Jul 23, 2010, 04:48 pm by PlaynowGames Reason: 1
então, a função chr() é exatamente pra isso, mais blz....vo tenta fazer o q vc disse enviado o codigo bruto em ascci

vc sabe se tem alguma coisa pra mim ver o q estou enviando pra arduino?

PlaynowGames

obrigado já consegui arrumar, era meu codigo q na pressa de conseguir algum resultado estava conflitando

vejam o novo código, pode ajudar a alguem no futuro
Code: [Select]

class leds{


 function leds(){

   $this->fp =fopen("COM2", "w");
   $file = "pr.glade";
   $wnd = new GladeXML($file);
   ///janela
   $w1 = $wnd->get_widget("window1");
   $bto_liga = $wnd->get_widget("bto_liga");
   $bto_desliga = $wnd->get_widget("bto_desliga");
   $bto_liga->connect_simple('clicked', array($this,'liga_led'), '1');
   $bto_desliga->connect_simple('clicked', array($this,'liga_led'), '2');
   ///Mostra Tudo do Glade
   $w1->show_all();
   Gtk::main();
   fclose($this->fp);
   }


function liga_led($i){

fwrite($this->fp, $i);

}

}


new leds();

proensinar

ola,

Tambem estou com o mesmo problema eu fiz um codigo em php
entretanto ele so acende e apaga bem rapido.
Sou muito ruim em php.

No meu index tem um button que chama essa pagina em php.

Alguem pode me ajudar?

Obs: Já tentei chr() tambem não funciona.

<?php

$port = fopen("COM4" ,"w");

sleep(3);

fwrite($port, '1');

fclose($port);

include ("index.htm");

?>


PlaynowGames

então diego, vc tem q criar uma classe e no inicio do programa vc abre a conexão serial.....logo vc terá um botão q chama uma função dentro da classe q vai passar os valores para a porta serial.....não sei pq mais não da certo se vc abrir a conexão e logo em seguida manda um codigo para o arduino, a luz somente pisca, vc vai ter q separar as coisas..

da uma estudada no codigo q postei, é bem simples de entender
vlw!

proensinar


Go Up