Pages: 1 [2] 3   Go Down
Author Topic: arduino+ php ?  (Read 1364 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho creato uno sketch stupidoper provare ma non funziona :\
lo sketch arduino:
Code:
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:
<?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
« Last Edit: April 06, 2013, 12:27:57 pm by toti94 » Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

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.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

devi disattivare l'autoreset
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come si fa?
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
<?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();


?>
Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

codice arduino?
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Roma - Piombino
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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
« Last Edit: April 10, 2013, 08:35:14 am by fvlgnn » Logged

Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

fvlgnn hai fatto bene a chiedermelo, ma comunque lo shield Ethernet non l'ho proprio acquistato xD
Comunque il codice di arduino è questo
Code:
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);
  }
}
Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

devi disattivare l'autoreset

l'hai fatto? se hai una UNO metti un condensatore da 10μF tra RESET e GND
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

chew quando apri/chiudi la seriale arduino non si resetta, ovvero non si riavvia
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-lol
Code:
<?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:
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);
  }
}
« Last Edit: April 13, 2013, 03:44:04 pm by toti94 » Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mi sa che il pin13 è usato dalla etehernet shield, usa una ltro pin, magari A0 così vai sul sicuro (usalo come digitale)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma io non sto usando la ethernet shield
Logged

Pages: 1 [2] 3   Go Up
Jump to: