int ledPin = 9;
int potPin = A0;
int valPot, numPot;
int x=0, pot=0;
byte cmd;
int dly=500;
byte tch; //contiene il carattere letto
unsigned long tempMillis;
byte car;
void setup(){
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(potPin, INPUT);
}
void loop(){
if (Serial.available()>0) {
cmd = Serial.read(); //leggo il primo byte
Serial.print("cmd: ");
Serial.println(cmd);
}
switch (cmd) {
case '0': //LED OFF
digitalWrite(9, LOW);
x=0;
break;
case '1': //LED ON
digitalWrite(9, HIGH);
x=0;
break;
case '2': //LED BLINK
digitalWrite(9, HIGH);
delay(dly);
digitalWrite(9, LOW);
delay(dly);
x=0;
break;
case '3': //POT ON
x=1;
Serial.println("tre");
break;
case '4': //POT OFF
x=0;
break;
case 'w': //Imposta il Delay
dly = 0;
tempMillis = millis();
car = 0;
//mi servono altri car
do {
if (Serial.available()>0) {
tch = Serial.read();
car++;
if ((tch >= 48) && (tch <= 57)) { //è un numero? ok
dly = (dly * 10) + (tch - 48);
}else if((tch == 13)) {
cmd=0;
//con invio e/o nuova linea esco
break;
}
}
cmd=0;
} while((millis() - tempMillis <500) && (dly <= 2000) && (car < 10));
x=0;
break;
case 's':
pot=0;
do {
if (Serial.available()>0) {
tch = Serial.read();
if(tch>47 && tch<58){ //se è un numero
pot = (pot * 10) + (tch - 48);//forma il numero
}else if((tch == 13)) {
x=2;
cmd=0;
break;
}
}
}while(true);
break;
//svuoto il buffer da eventuali altri caratteri che non mi servono più
while (Serial.available()) {
byte a = Serial.read();
}
}//fine switch
if(x==1){
valPot=analogRead(potPin);
numPot = map(valPot,0,1023,0,255);
analogWrite(ledPin,numPot);//Accendi il led
Serial.println(valPot);//invia
}
else if(x==2){
analogWrite(ledPin,pot);
x=0;
}
}
|