j'ai un peu avancé sur le code. J'ai fait un p'tit script python (parce que c'est le seul langage que j'ai appris, que c'est facile et pas besoin de compiler.. ) qui envoi une chaîne de caractères à l'arduino via l'ethernet. L'arduino reçoit bien, pas de soucis à ce niveau. Le soucis, c'est que l'arduino reçoit caractère par caractère. Si j'envoi "120", il reçoit 1, puis 2, puis 0. Je cherche à convertir ces caractères en entier, mais la je bloque un peu. Une idée ?
Le script python :
- Code: Tout sélectionner
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.0.1", 1337))
data = 0
q = 0
print ("-Dspiy control using Arduino-Ethernet and sony IR protocol-")
print ("0 à 110 Volume Level *2")
print ("111 à 120 N° de Preset + 110")
print ("121 Standby")
print ("122 Sortie de Standby")
print ("123 Mise en Mute")
print ("124 Sortie du Mute")
print ("Pas de Balance")
print ("125 exit program")
while q != 125:
q = int(input())
s.send(str(q).encode())
if q < 111 :
print ("Volume à : ")
print (q/2)
continue
if q > 110 and q < 121 :
print ("Preset n° : ")
print (q-110)
continue
if q == 121 :
print(" Standby")
continue
if q == 122 :
print ("Sortie de Standby")
continue
if q == 123 :
print ("Mute")
continue
if q == 124 :
print ("Unmute")
print ("a+ !")
s.close()
Le code arduino :
- Code: Tout sélectionner
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED } ;
byte ip [] = { 192,168,0,1};
byte gateway [] = {192,168,0,1};
int address = 29 ;
int out = 9 ; //output is pin 9
EthernetServer server(1337);
void setup() {
pinMode(out, OUTPUT); //put pin "out" as output
Ethernet.begin(mac, ip, gateway);
server.begin();
Serial.begin(9600);
}
void loop() {
int command ;
EthernetClient client = server.available();
if (client && client.connected()) {
if (client.available() > 0) {
char inputChar =client.read();
Serial.println(inputChar) ;
}
//inputChar to int command
int zeros = 7 - String(command,BIN).length(); //convert command in 7-bit
String Com;
for (int i=0; i<zeros; i++) {
Com = Com + "0";
}
Com = Com + String(command,BIN);
zeros = 5 - String(address,BIN).length(); // convert address in 5-BIT
String Address ;
for (int u=0 ; u<zeros; u++) {
Address = Address +"0" ;
}
Address = Address + String(address,BIN);
String ComAddress = Address + Com ; // ComAddress = 5 bit address + 7 bit com
digitalWrite(out,HIGH); //2.4ms leading pulse burst
delay(2.4);
digitalWrite(out,LOW); //0.6ms space
delay(0.6);
for (int j=11; j>-1; j--) {
char Bit = Com.charAt(j) ; //12-bit command + address for the receiving device
if (Bit == 1) { // give Bit 1 in sony protocol
digitalWrite(out,HIGH);
delay(1.5);
digitalWrite(out, LOW);
delay(0.6);}
else { // give Bit 0 in sony protocol
digitalWrite(out,HIGH);
delay(0.6);
digitalWrite(out, LOW);
delay(0.6);
}
}
}
}
Louis