Go Down

Topic: arduino+ php ? (Read 1 time) previous topic - next topic

toti94

#15
Apr 06, 2013, 07:24 pm Last Edit: Apr 06, 2013, 07:27 pm by toti94 Reason: 1
ho creato uno sketch stupidoper provare ma non funziona :\
lo sketch arduino:
Code: [Select]
int led=6;
int stato;

void setup()
{
  Serial.begin (9600);
  pinMode(led,OUTPUT);
}
void loop()
{
 stato= Serial.read();
 if (stato== 1)
 {
    digitalWrite (led,HIGH);
 }
 else if(stato== 0)
 {
   digitalWrite (led,LOW);
 }
}

anche se scrivo sul monitor e non dal php, non mi succede  nulla, anzi, non vedo neanche ciò che ho scritto, stampato sul monitor seriale.

Codice php
Code: [Select]
<?php
include 'elementi/php_serial.class.php';
// Let's start the class
$serial = new phpSerial;

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("COM3");


// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

// Then we need to open it
$serial->deviceOpen();

echo '<form action="arduino.php" method="post"> 
<label><input name="led" type="radio" value="sccendi" />Accendi</label>
<label><input name="led" type="radio" value="spegni" />Spegni</label>
<input type="hidden" name="nascosto" />
<input type="submit" value="invia" />
</form>'
;
if (isset($_POST['nascosto'])==TRUE)
{
$stato$_POST['led'];

if (isset($stato)==TRUE)
{
$serial->sendMessage(1);
}
elseif (isset($stato)==TRUE)
{
$serial->sendMessage(0);
}
echo $stato;
}
$serial->deviceClose();

?>

Il codice php invece mi da errore sul settaggio della porta, e quindi anche su i vari settaggi successivi.
Ma io con arduino uso la COM3 e sull'ide non me la fa cambiare
Cmq la pagina la sto eseguendo in localhost sul mio pc a cui è collegato arduino

lesto

Quote
stato= Serial.read();
  if (stato== 1)


attento stai confrontando "stato" con il NUMERO 1 e non con il CARATTERE 1; dalla tabella ascii, il numero 1 corrisponde ad un carattereche non viene più usato (si usava sulle telescriventi, SOH)
invece 0 corrisponde a "null", il carattere che non è un carattere :)

cambia 0 e 1 in '0' e '1' (ovvero carattere 0, valore 48 dalla tabella ascii e carattere 1, o valore 49)


per l'errore PHP ricorda che UN SOLO programma alla volta può accedere alla seriale. Secondo me avevi il serial-monitor acceso.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

toti94

ok ho corretto lo sketch di arduino , e chiuso il monitor.
IL codice php non da errori e lo sketch arduino funziona bene se uso il monitor seriale
Però quando uso la funzione php, il led lampeggia due volte e basta sia se premo accendi sia se premo spegni.
Illed l'ho messo sul pin 13 ed ho cambiato naturalmente il pin nello sketch. ho notato che però quando trasferisco lo sketch il led lampeggia, forseperchè è sul pin 13, che sia dovuto alla funzione $serial-<deviceOpen () il lampeggiamento col php?

lesto

il led sul pin 13 lampeggia anche quando l'arduino si resetta..

devi disattivare l'autoreset
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie


toti94

Comunque c'era un errore nel passaggio dei parametri in php, ma ora l'ho risolto e come debug ho messo la stampa dello stato una volta inviato
ed infatti mi stampa 1 e 0..... ma il led comunque non si accende
Code: [Select]
<?php
include 'elementi/php_serial.class.php';
// Let's start the class
$serial = new phpSerial;

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("COM3");
// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

// Then we need to open it
$serial->deviceOpen();

echo '<form action="arduino.php" method="post"> 
<label><input name="led" type="radio" value="1" />Accendi</label>
<label><input name="led" type="radio" value="0" />Spegni</label>
<input type="hidden" name="nascosto" />
<input type="submit" value="invia" />
</form>'
;
if (isset($_POST['nascosto'])==TRUE)
{
$stato$_POST['led'];

if (isset($stato)==TRUE)
{
$serial->sendMessage('1');
echo $stato;
}
elseif (isset($stato)==TRUE)
{
$serial->sendMessage('0');
echo $stato;
}
}
$serial->deviceClose();


?>

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

#22
Apr 10, 2013, 03:31 pm Last Edit: Apr 10, 2013, 03:35 pm by fvlgnn Reason: 1

Code: [Select]
int led=6;

Scusa ma qui il led lo hai impostato sul PIN 6 e non sul 13. Hai modificato quel valore nelle prove successive?
Altra domanda stupida che al momento mi viene in mente, per caso hai montato su Arduino, l'Ethernet Shield anche se non lo stai utilizzando? Sull'Ethernet Shield i PIN 10-13 servono per la comunicazione con il controller ethernet e infatti dalla versione Ethernet Shield R3 non è stato più montato il mini LED 13 sulla scheda.
Scusami se per caso ti ho fatto una domanda banale.
Cioa,
Gianni
Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

toti94

fvlgnn hai fatto bene a chiedermelo, ma comunque lo shield Ethernet non l'ho proprio acquistato xD
Comunque il codice di arduino è questo
Code: [Select]
int led=13;
char stato;

void setup()
{
   Serial.begin (9600);
   pinMode(led,OUTPUT);
}
void loop()
{
  stato= Serial.read();
  if (stato== '1')
  {
     digitalWrite (led,HIGH);
  }
  else if(stato== '0')
  {
    digitalWrite (led,LOW);
  }
}

lesto


devi disattivare l'autoreset


l'hai fatto? se hai una UNO metti un condensatore da 10?F tra RESET e GND
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

toti94

ma perchè ? cosa cambia se tolgo l'autoreset?

lesto

chew quando apri/chiudi la seriale arduino non si resetta, ovvero non si riavvia
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

toti94

#27
Apr 13, 2013, 10:30 pm Last Edit: Apr 13, 2013, 10:44 pm by toti94 Reason: 1
ho cambiato i caratteri da passare in 'o' e 'f'
ora il led si accende ma non si spegne più, e senza il condensatore lampeggia solamente, quindi serve togliere l'autoreset XD
Code: [Select]
<?php include "elementi/menu.html"?>
</div>
  <div id="contenitore">
  <div id="utente">
<?php include"elementi/login.html"?>
</div>
<div id="parte_centrale">
<h1>Prova funzione arduino</h1><hr /><br />
<?php
include 'elementi/php_serial.class.php';
// Let's start the class
$serial = new phpSerial;

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("COM3");
// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

// Then we need to open it
$serial->deviceOpen();

echo '<form action="arduino.php" method="post"> 
<label><input name="led" type="radio" value="o" />Accendi</label>
<label><input name="led" type="radio" value="f" />Spegni</label>
<input type="hidden" name="nascosto" />
<input type="submit" value="invia" />
</form>'
;
if (isset($_POST['nascosto']))
{
$stato$_POST['led'];

if (isset($stato)==TRUE)
{
$serial->sendMessage('o');
echo $stato;
}
elseif (isset($stato)==TRUE)
{
$serial->sendMessage('f');
echo $stato;
}
$serial->deviceClose();
}
else
echo'errore';
?>

Code: [Select]
int led=13;
char stato;

void setup()
{
   Serial.begin (9600);
   pinMode(led,OUTPUT);
}
void loop()
{
  stato= Serial.read();
  if (stato== 'o')
  {
     digitalWrite (led,HIGH);
  }
  else if(stato== 'f')
  {
    digitalWrite (led,LOW);
  }
}

lesto

mi sa che il pin13 è usato dalla etehernet shield, usa una ltro pin, magari A0 così vai sul sicuro (usalo come digitale)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

toti94

ma io non sto usando la ethernet shield

Go Up