Go Down

Topic: PHP Serial e comunicazione con Arduino (Read 98 times) previous topic - next topic

bris898

Salve a tutti,
sto lavorando ad un progetto per la scuola con Arduino Uno, il quale si interfaccia con un sito in PHP (tutto questo in locale).
Il tutto funziona correttamente se il codice php invia un singolo carattere o cifra (es.: 1, 2, 3... oppure a, b, c...) ad arduino e mi fa accendere/spegnere il LED correttamente.
Il problema viene quando voglio inviare una stringa o un numero intero ad Arduino, ovviamente imposto sia lo sketch che il codice in php con la stessa variabile, esempio: "100".
Il monitor seriale di arduino mi restituisce i seguenti valori (che è il codice ascii): 49 48 48
invece di "LED accesso"

Vi posto il codice della pagina in PHP:
Code: [Select]
<?php
error_reporting
(E_ALL);
ini_set("display_errors"1);
define("PORT","/dev/ttyACM0");
 
if (isset(
$_GET['action'])) { 
        include 
"PhpSerial.php";
    
$serial = new phpSerial;
    
$serial->deviceSet(PORT);
        
$serial->confBaudRate(9600);
        
$serial->confParity("none");
        
$serial->confCharacterLength(8);
        
$serial->confStopBits(1);
        
$serial->confFlowControl("none");
        
$serial->deviceOpen();
        if (
$_GET['action'] == "on") { 
            
$serial->sendMessage('100');
    } else if (
$_GET['action'] == "off") { 
            
$serial->sendMessage('101'); 
        } 
    
$read $serial->readPort();
    print 
$read;
        
$serial->deviceClose(); 
}
 
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<title>Test Arduino</title>
</head>
<body>
<br>
<h1>Test Arduino</h1>

<a href="<?=$_SERVER['PHP_SELF'] . "?action=on" ?>">
<button style="width:100px""><h1>ON</h1></button></a>
<a href="<?=$_SERVER['PHP_SELF'] . "?action=off" ?>">
<button style="width:100px""><h1>OFF</h1></button></a>
</body>
</html>


e il codice di arduino:
Code: [Select]
int LED = 13;
int val;
void setup() {
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
}

void loop () {
  if (Serial.available() > 0) {
   
    val = Serial.read();
   
    if (val == '100') {
      Serial.print(val);
      digitalWrite(LED,HIGH);
      Serial.println("LED acceso");
    }
   
    else if (val == '101) {
      digitalWrite(LED,LOW);
      Serial.println("LED spento");
    }
   
    else {
      Serial.println(val, DEC);
   
    }
  }
}


Questo è il codice che dovrebbe funzionare ma arduino riconosce un carattere alla volta.
Spero possiate aiutarmi presto,
grazie anticipatamente!

(Spero di aver messo tutto ciò che vi serve per capire il mio problema)

nid69ita

Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0
e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0
- qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0
- qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0
my name is IGOR, not AIGOR

Go Up