quindi il codice dello sketch è lungi dall' essere decente, infatti non sono riuscito a "trasformare " un byte direttamente in un int e ho dovuto usare una serie di if else if, non molto pulito ma cmq funzionante:)
#include <LiquidCrystal.h>
#define l1 2
#define l2 3
#define l3 4
#define l4 5
#define l5 6
#define l6 7
#define l7 8
#define l8 9
#define l9 10
#define l10 11
#define led 13
byte in=0;
int tipo=0;
int pin=0;
int connesso=0;
//char nomi["led 1","led 2","led 3","led 4","led 5","led 6","led 7","led 8","led 9"];
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
int i=0;
void setup() {
Serial.begin(9600);
pinMode(l1,OUTPUT);
pinMode(l2,OUTPUT);
pinMode(l3,OUTPUT);
pinMode(l4,OUTPUT);
pinMode(l5,OUTPUT);
pinMode(l6,OUTPUT);
pinMode(l7,OUTPUT);
pinMode(l8,OUTPUT);
pinMode(l9,OUTPUT);
pinMode(l10,OUTPUT);
pinMode(led,OUTPUT);
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0,0);
lcd.print("TEST seriale 1");
lcd.setCursor(0,1);
lcd.print("by fsurfing");
delay(1000);
}
void loop(){
if (connesso==0){
attendi();
}else{
if(Serial.available()>0){
in=Serial.read();
char a=char(in);
if(a=='i'){
tipo=1;
}else if (a=='o'){
tipo=0;
}else if(a!='#' && a!='i' && a!='o'){
if (a=='0'){
pin=2;
}else if(a=='1'){
pin=3;
}else if(a=='2'){
pin=4;
}else if(a=='3'){
pin=5;
}else if(a=='4'){
pin=6;
}else if(a=='5'){
pin=7;
}else if(a=='6'){
pin=8;
}else if(a=='7'){
pin=9;
}else if(a=='8'){
pin=10;
}else if(a=='9'){
pin=11;
}
cambia(pin,tipo);
}
}
}
}
void cambia(int pin,int tipo){
digitalWrite(pin,tipo);
lcd.clear();
if (tipo==1){
lcd.print("Acceso led ");
}
if (tipo==0){
lcd.print("Spento led ");
}
lcd.setCursor(0,1);
int p=pin-1;
lcd.print(p);
p=tipo*1000+pin;
Serial.print(p);
Serial.print("\n");
}
void attendi(){
if(Serial.available()>0){
in=Serial.read();
char a=char(in);
if (a=='#'){
Serial.print("ok");
connesso=1;
lcd.clear();
lcd.print("Connesso");
}
}
delay(100);
}
il codice gambas invece non è nullaltro che il codice dell' esempio serial port, modificato in modo che ogni pulsente alla pressione invii sulla seriale il comando di accensione e spegnimento dei vari pin
Public Sub Button8_Click()
If l4 Then
Print #Sport, "o3"; Chr$(13); Chr$(10); 'comando accensione
l4 = False
Else
Print #Sport, "i3"; Chr$(13); Chr$(10);'comando spegnimento
l4 = True
Endif
End