Bonjour,
Nous travaillons actuellement sur un projet de "mail notifier" en utilisant un Arduino Uno. Concrètement il s'agit d'allumer des leds quand on reçoit des nouveaux mails.
Pour déterminer le nombre de mails non lus, on allume parmi 4 leds la valeur équivalente en binaire. On passe par un script php pour récupérer le nombre de mails. Pour cette variable, chaque nombre entre 0 et 15 correspond à l'envoie d'un caractère en particulier.
Nous avons essayé d'envoyer directement la valeur de la variable "mails" mais celle-ci n'est pas prise en compte dans le programme Arduino.
Par la suite nous avons envoyé un caractère, mais nous nous sommes confrontés à un problème puisque certains caractères ne sont pas traités dans le test du programme Arduino (par exemple le caractère 'L', ou tous les chiffres alpha-numériques).
Nous avons aussi essayé une structure switch / case qui ne marche ni dans le PHP ni dans le code Arduino.
Est-ce quelqu'un a déjà rencontré ces problèmes et les a résolu?
En vous remerciant par avance pour vos réponses !
PS : Ci-dessous le code php et Arduino que nous utilisons.
PHP :
<?php
include ("php_serial.class.php");
function Arduino($str){
$serial = new phpSerial();
$serial->deviceSet("COM4");
$serial->confBaudRate(19200);
$serial->confParity("none");
$serial->confCharacterLength(1);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
if($str==0)
$serial->sendMessage('A');
if($str==1)
$serial->sendMessage('B');
if($str==2)
$serial->sendMessage('D');
if($str==3)
$serial->sendMessage('G');
if($str==4)
$serial->sendMessage('H');
if($str==5)
$serial->sendMessage('K');
if($str==6)
$serial->sendMessage('M');
if($str==7)
$serial->sendMessage('N');
if($str==8)
$serial->sendMessage('P');
if($str==9)
$serial->sendMessage('S');
if($str==10)
$serial->sendMessage('U');
if($str==11)
$serial->sendMessage('V');
if($str==12)
$serial->sendMessage('w');
if($str==13)
$serial->sendMessage('x');
if($str==14)
$serial->sendMessage('Y');
if($str==15)
$serial->sendMessage('Z');
$serial->deviceClose();
}
Arduino($mail);
?>
ARDUINO :
const int ledPin1 = 2;
const int ledPin2 = 4;
const int ledPin3 = 7;
const int ledPin4 = 8;
int incomingByte;
void setup() {
Serial.begin(19200);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
//switch(incomingByte) {
if (incomingByte == 'A') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'B') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'D') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'G') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'H') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'K') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'M') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'N') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (incomingByte == 'P') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'S') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH );
}
else if (incomingByte == 'U') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'V') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'w') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'x') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'Y') {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else if (incomingByte == 'Z') {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
}
}